كيف يعمل الدفع المستضاف
تظل RMT.GG تاجرًا مسجلاً. يرسل متجرك الشريك مبلغًا مقفلًا وعملة. يدفع المشتري على صفحتنا المستضافة. بعد الدفع، تقوم بالتسليم في متجرك. تكتمل الطلبات تلقائيًا حتى يمكن تسوية المحفظة.
- يدفع المشتري بالضبط المبلغ والعملة التي ترسلها. نحن لا نزيدها.
- رسوم البائع الخاصة بك هي 4% من ذلك المبلغ المقفل. تظل إدراجات السوق عند 5% المعتادة.
- رسوم معالجة بطاقات الائتمان وPayPal والعملات المشفرة تتحملها المنصة في هذا التدفق.
قائمة السماح مطلوبة
قدّم طلبًا تحت الإعدادات، الدفع المستضاف، ثم انتظر موافقة الإدارة. المفاتيح البرمجية غير المعتمدة تتلقى CHECKOUT_PARTNER_NOT_APPROVED.
قدّم طلبًا واحصل على الموافقة
بعد الموافقة، قم بإنشاء مفتاح API مع checkout:write و webhook JSON لـ checkout.completed في صفحة إعدادات الدفع المستضاف. حتى الموافقة، تبقى واجهات برمجة التطبيقات للدفع المستضاف محجوزة.
- 1افتح الإعدادات → الدفع المستضاف وقدم رابط متجرك بالإضافة إلى ملاحظة قصيرة حول كيفية استخدامك للدفع.
- 2انتظر حتى يوافق المسؤول. سترى شارة معلقة حتى ذلك الحين.
- 3بعد الموافقة، قم بإنشاء مفتاح API و webhook JSON لـ checkout.completed في الإعدادات → الدفع المستضاف.
واجهة برمجة التطبيقات للبائع
استخدم هذا من أي متجر أو خادم خاص بك. أنشئ جلسة باستخدام POST /api/v1/checkout/sessions. أرسل checkout:write ومفتاح Idempotency. قم بإعادة توجيه المشتري إلى hosted_url. استمع لـ order.paid، ثم قم بالت fulfillment في متجرك.
إنشاء جلسة دفع مستضاف
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: inv-12345" \
https://rmt.gg/api/v1/checkout/sessions \
-d @session.jsonsession.json
{
amount: 10, // required when items is omitted
currency: "USD", // optional; defaults to USD
itemName: "Gold pack", // required when items is omitted; alias title
description: "1000 gold for account example", // optional
imageUrl: "https://cdn.shop.example/gold.png", // optional, HTTPS only
categorySlug: "games", // send with offering, or omit both
offering: "Mods", // send with categorySlug
email: "[email protected]", // optional
returnUrl: "https://your-shop.example/thanks", // optional
cancelUrl: "https://your-shop.example/cancel", // optional
invoiceId: "12345" // optional
}خطوط مقفلة متعددة مع توصيل اختياري (session.json)
{
currency: "USD",
invoiceId: "12345", // optional
items: [ // required when amount is omitted
{
name: "Gold pack", // required per line
description: "1000 gold", // optional
amount: 10, // required per line
quantity: 1, // optional, default 1
imageUrl: "https://cdn.shop.example/gold.png", // optional, HTTPS only
delivery: [ // optional
{ name: "Code", type: "text", value: "XXXX-YYYY" } // name and value required; type is optional
]
}
]
}- أرسل المبلغ بالإضافة إلى itemName (أو العنوان) لعنصر واحد، أو مصفوفة items[] غير فارغة. العملة الافتراضية هي الدولار الأمريكي. الحقول الاختيارية: الوصف، رابط الصورة HTTPS، البريد الإلكتروني (يملأ صفحة الدفع مسبقًا)، returnUrl، cancelUrl، invoiceId، categorySlug بالإضافة إلى offering (أرسل كلاهما أو لا شيء)، وmetadata. itemName هو عنوان صفحة الدفع؛ الوصف هو النص الأطول أسفل ذلك. يجب على المشتري تأكيد بريد إلكتروني صالح قبل الدفع. بعد الدفع، يبقى المشتري على تأكيد RMT.GG حتى يتمكن من نسخ حقول التسليم. إذا قمت بتعيين returnUrl وكان هناك حقول تسليم، فإنهم ينتقلون إلى متجرك من تلك الشاشة. إذا لم يكن هناك أي، نعيدهم بعد عد تنازلي قصير. إذا قمت بإغفال returnUrl أو cancelUrl، يبقى المشتري على صفحة الدفع RMT.GG بعد الدفع أو الإلغاء أو انتهاء الصلاحية.
- عند النجاح، نضيف uid الطلب إلى returnUrl كـ ?order= عندما يكون هذا الرابط HTTPS (أو localhost).
- تكرار قيم Idempotency-Key أو invoiceId يعيد استخدام نفس الجلسة بدلاً من إنشاء مكرر.
- يظهر itemName والوصف فقط على صفحة الدفع في RMT. تستخدم بطاقات الدفع، PayPal، والدفع بالعملات الرقمية تسميات مشفرة مثل الألعاب · الإضافات، وليس عنوان متجرك. قم بتعيين افتراضي تحت الإعدادات، الدفع المستضاف، أو أرسل categorySlug و offering في الجلسة.
- تستمر الجلسات لمدة 24 ساعة. بعد ذلك، لا يمكن إكمال صفحة الدفع، وتُغلق الجلسات النشطة على Stripe وPayPal، ونقوم بإرسال POST checkout.canceled مع السبب expired.
- items[] هو البديل متعدد الأسطر لمبلغ واحد بالإضافة إلى itemName. يحتاج كل سطر إلى اسم ومبلغ. مع items، يمكن حذف المبلغ ويتم حسابه من الأسطر، أو يجب أن يتطابق مع المجموع إذا أرسلته. الكمية مقفلة على rmt.gg: لا يمكن للمشترين إضافة أو إزالة أو تغيير الأسطر. يجب أن يكون imageUrl عبر HTTPS؛ نحن لا نقوم بجلبه. تحتاج حقول التسليم الاختيارية (نص، كلمة مرور، أو منطقة نص) إلى اسم وقيمة. يتم عرضها بعد الدفع على صفحة التأكيد والمشتريات. GET الجلسة العامة تتضمن قيم التسليم فقط بعد الدفع. GET البائع وwebhooks لا تتضمنها أبدًا.
تحقق من حالة الدفع
استمع لـ checkout.completed أولاً. إذا تأخر webhook، احصل على الجلسة. تكون paid صحيحة عندما يكون المشتري قد دفع. يمكنك البحث باستخدام uid الجلسة أو بواسطة invoiceId الذي أرسلته.
- GET /api/v1/checkout/sessions/{uid} باستخدام uid الذي تم إرجاعه عند إنشاء الجلسة.
- GET /api/v1/checkout/sessions?invoiceId=YOUR_INVOICE_ID إذا كنت قد خزنت معرف الفاتورة الخاص بك بدلاً من ذلك.
ابحث بواسطة معرف الفاتورة
curl -H "Authorization: Bearer rmt_sk_live_…" \
https://rmt.gg/api/v1/checkout/sessions?invoiceId=inv-12345متاجر Digiseller والمتاجر المماثلة
تخطى هذا إذا كنت تنشئ عمليات دفع باستخدام واجهة برمجة التطبيقات للبائع. استخدمها عندما يرسل متجرك (على سبيل المثال Digiseller) المشتري هنا من خلال طريقة دفع مخصصة. يقوم Digiseller بالنشر إلى عنوان الدفع الخاص بنا، نحن نتولى الدفع، ثم يتحقق Digiseller من عنوان الحالة.
- 1انسخ عنوان الدفع، عنوان الحالة، والسر الخاص بالدفع من الإعدادات → الدفع المستضاف.
- 2الصقها في Digiseller كطريقة دفع مخصصة. احتفظ بالسر خاصًا.
- 3ثم يرسل Digiseller المشتريين إلينا للدفع، ويتحقق من عنوان الحالة لمعرفة ما إذا كان قد تم الدفع أو لا.
- item_name (أو العنوان) هو العنوان على صفحة الدفع. الوصف هو النص الأطول أسفل ذلك. إذا تم حذف كلا الاسمين، يتم استخدام الوصف كعنوان.
مثال على الطلب الذي يرسله Digiseller
{
"invoice_id": "12345",
"amount": "10.00",
"currency": "USD",
"item_name": "باقة ذهبية",
"description": "1000 ذهب لحساب مثال",
"signature": "…"
}يفضل استخدام webhook JSON
عنوان الحالة مخصص لـ Digiseller. إذا كنت تقوم بالت fulfillment من خادمك الخاص، أضف webhook JSON واستمع لـ checkout.completed. يمكنك أيضًا الحصول على الجلسة كنسخة احتياطية.
ويب هوكس JSON
الدفع المستضاف لا يستخدم واجهة برمجة تطبيقات ويب هوك منفصلة. تحت قسم المطور، قم بتوجيه نقطة نهاية JSON HTTPS إلى نفس الأحداث مثل مبيعات السوق. بعد الدفع، نقوم بإرسال POST order.paid. بعد استرداد المبلغ، نقوم بإرسال POST order.refunded. قم بمطابقة البيع مع externalInvoiceId (معرف الفاتورة الخاص بك) أو partnerSessionUid.
حمولة order.paid (حقول الدفع المستضاف)
{
"id": "whd_…",
"type": "order.paid",
"created": "2026-08-14T12:00:00.000Z",
"data": {
"order": {
"uid": "ord_…",
"status": "مدفوع",
"partnerSessionUid": "…",
"externalInvoiceId": "inv-12345",
"partnerSource": "api"
}
}
}- المصدر هو واجهة برمجة التطبيقات لجلسات واجهة برمجة التطبيقات للبائع.
- التوقيع الاختياري يستخدم X-RMT-Timestamp و X-RMT-Signature. تحقق من HMAC بنفس الطريقة مثل أي ويب هوك بائع آخر.
- checkout.canceled يتضمن السبب buyer_canceled عندما يغادر المشتري صفحة الدفع دون دفع، أو السبب expired عندما تنتهي صلاحية جلسة الـ 24 ساعة دون دفع.
- checkout.items تسرد الخطوط المقفلة (الاسم، الوصف، المبلغ، الكمية، imageUrl). لا يتم تضمين قيم التوصيل أبداً في الويب هوكس.
لا تقم بتنفيذ الطلب مرتين
يحصل Digiseller أيضًا على رد الاتصال الخاص بالدفع. إذا كنت تستمع أيضًا لـ checkout.completed، قم بتنفيذ الطلب مرة واحدة فقط. جلسات واجهة برمجة التطبيقات للبائع لا ترسل رد الاتصال الخاص بـ Digiseller.
البريد الإلكتروني للزوار والإيصالات
يجب على المشترين إدخال بريد إلكتروني في صفحة الدفع حتى نتمكن من إرسال الإيصال وفاتورة الضرائب. يتم ربط حسابات RMT المطابقة دون تسجيل دخول المشتري.
- إذا كان البريد الإلكتروني ينتمي بالفعل إلى حساب RMT، يظهر الطلب في مشتريات ذلك الحساب. لا يتم تعيين ملف تعريف الارتباط لتسجيل الدخول في صفحة الدفع.
- يخلق بريد إلكتروني جديد مستخدمًا خفيف الوزن بحيث تظل الإيصالات وتسجيل الدخول لاحقًا تعمل.
- البريد الإلكتروني مطلوب لإكمال الدفع. يجب أن تستمر متجرك في الاستماع إلى checkout.completed.
العملات والحدود
استخدم عملة ISO مدعومة مثل الدولار الأمريكي أو اليورو. الدفع بواسطة البطاقة يعمل بشكل أفضل بالدولار الأمريكي أو اليورو. يمكن أن تعمل العملات المشفرة وPayPal مع عملات أخرى عندما يقبلها المزود.
ليس في هذه النسخة
لا يوجد SDK iframe، أو نطاق صفحة دفع مخصص، أو رصيد محفظة على صفحة الدفع المستضافة. يستخدم المشترون الدفع ببطاقة، أو PayPal، أو إعادة توجيه الدفع بالعملات المشفرة.
قبل أن تذهب للعيش
قائمة التحقق من المرحلة
تغطي اختبارات الوحدة الرسوم، HMAC، وإعادة الاستخدام. قم بمراجعة هذه القائمة في المرحلة قبل أن ترسل مشترين حقيقيين.
- قدّم طلبًا، أكد شارة الانتظار، ثم اجعل مسؤولًا يوافق. تظهر بيانات الاعتماد فقط عند الموافقة. مفتاح غير معتمد على POST /api/v1/checkout/sessions يعيد 403.
- قم بإنشاء جلسة مع itemName، الوصف، وcategorySlug بالإضافة إلى offering (أو افتراضي محفوظ). افتح hosted_url. العنوان هو اسم العنصر؛ الوصف يكون أسفله. صفحة الدفع لا تحتوي على شريط تنقل علوي أو شريط جانبي. ادفع بواسطة البطاقة بالدولار الأمريكي أو اليورو. يجب أن تظهر صفحات البطاقة وPayPal والعملات المشفرة تسمية كتالوج مثل ألعاب · إضافات، وليس عنوان متجرك.
- أكد أن checkout.completed يتضمن invoiceId، checkout.uid، والمصدر، ثم قم بالوفاء في متجرك. ألغِ صفحة الدفع وأكد checkout.canceled مع السبب buyer_canceled. دع الجلسة تستمر لأكثر من 24 ساعة وأكد أن checkout.canceled مع السبب expired لا يمكن دفعه بعد.
- بالنسبة لـ Digiseller، الصق عنوان الدفع، عنوان الحالة، والسر الخاص بالدفع في طريقة دفع مخصصة. تأكد من أن Digiseller يمكنه رؤية حالة الدفع، وأنك تقوم بتنفيذ الطلب مرة واحدة فقط.
- ادفع باستخدام بريد RMT موجود: الطلب يصل إلى المشتريات ويتم إرسال إيصال، دون وجود ملف تعريف تسجيل دخول. إنشاء بريد إلكتروني جديد ينشئ مستخدمًا خفيف الوزن. البريد الإلكتروني مطلوب في صفحة الدفع.
- يجب ألا يظهر العرض الاصطناعي المخفي في بحث السوق. على مضيف محجوز بقائمة انتظار، لا تزال /pay/:uid وطرق المحول تعمل.
- أرسل imageUrl الاختياري و items[] إذا كنت بحاجة إلى صورة منتج أو خطوط مقفلة متعددة. تأكد من أن صفحة الدفع لا تحتوي على عناصر تحكم للكمية. بعد الدفع، تظهر حقول التوصيل في المشتريات وصفحة الطلب. روابط الصور عبر HTTPS فقط.
أدلة ذات صلة
قدّم طلبًا للدفع المستضاف
افتح الإعدادات → الدفع المستضاف لتقديم الطلب، أو انتقل إلى مرجع API بعد الموافقة.