Skip to main content
تمنح حزمة @dodopayments/remix تطبيق Remix لديك ثلاثة معالجات للطلبات. يعيد Checkout عناوين URL الخاصة بـ checkout، ويرسل CustomerPortal العميل إلى Customer Portal، بينما يتحقق Webhooks من أحداث webhook ويوجهها إلى التعليمات البرمجية لديك. يأخذ كل معالج Request ويعيد Response، لذا تستدعيه من loader أو action الخاص بمسار ما.

Checkout Handler

أنشئ عناوين URL لـ checkout من تطبيق Remix لديك.

Customer Portal

اسمح للعملاء بإدارة اشتراكاتهم وتفاصيلهم.

Webhooks

استقبل أحداث webhook من Dodo Payments وتحقق منها.

التثبيت

1

Install the Package

شغّل هذا الأمر في جذر مشروعك:
تدرج الحزمة Remix 2 (remix 2.16.8 أو أحدث) وzod 3.25 أو أحدث باعتبارهما peer dependencies.
2

Set Up Environment Variables

أنشئ ملف .env في جذر مشروعك:
أنشئ API key ضمن Developer → API Keys. أضف نقطة نهاية webhook ضمن Developer → Webhooks وانسخ signing secret الخاص بها إلى DODO_PAYMENTS_WEBHOOK_KEY. يمثّل DODO_PAYMENTS_RETURN_URL المكان الذي يصل إليه العملاء بعد checkout. إذا لم تمرر environment، تستخدم المعالجات live_mode.
لا ترفع ملف .env أو الأسرار إلى نظام التحكم في الإصدارات.

أمثلة على Route Handler

الأمثلة عبارة عن resource routes في Remix، وهي تصدّر loader لطلبات GET أو action لطلبات POST، ولا تتضمن مكوّنًا. مع flat file routes، يخدم app/routes/api.checkout.tsx /api/checkout.
استخدم هذا المعالج لإضافة checkout الخاص بـ Dodo Payments إلى تطبيق Remix لديك. يخدم loader checkout الثابت. ويخدم action checkout الديناميكي هنا. ولخدمة checkout sessions، وهو التدفق الموصى به، أعد checkoutSessionHandler(request) من action بدلًا من ذلك.
يعمل طلب checkout session عندما يعيد action قيمة checkoutSessionHandler(request).

Checkout Route Handler

يدعم checkout handler الطرق الثلاث جميعها لتحصيل المدفوعات باستخدام Dodo Payments:
  • Static Payment Links: عناوين URL قابلة للمشاركة لتحصيل المدفوعات من دون تعليمات برمجية.
  • Dynamic Payment Links: روابط دفع تنشئها مع تفاصيل مخصصة. وهي تستخدم endpoints مهملة.
  • Checkout Sessions: checkout مستضاف يتضمن سلة منتجات وتفاصيل العميل وخيارات التخصيص. وهذا هو التدفق الموصى به.
يأخذ Checkout الخيارات التالية:

Query Parameters المدعومة

string
مطلوب
معرّف المنتج، مثل ?productId=pdt_nZuwz45WAs64n3l07zpQR.
integer
افتراضي:"1"
كمية المنتج.
string
الاسم الكامل للعميل. يتم تجاهله إذا تم توفير firstName أو lastName.
string
الاسم الأول للعميل.
string
اسم العائلة للعميل.
string
عنوان البريد الإلكتروني للعميل.
string
بلد العميل، وفقًا لرمز ISO 3166-1 alpha-2.
string
سطر عنوان العميل.
string
مدينة العميل.
string
ولاية العميل أو مقاطعته.
string
الرمز البريدي للعميل.
boolean
اضبطه على true لتعطيل حقل الاسم الكامل.
boolean
اضبطه على true لتعطيل حقل الاسم الأول.
boolean
اضبطه على true لتعطيل حقل اسم العائلة.
boolean
اضبطه على true لتعطيل حقل البريد الإلكتروني.
boolean
اضبطه على true لتعطيل حقل البلد.
boolean
اضبطه على true لتعطيل حقل سطر العنوان.
boolean
اضبطه على true لتعطيل حقل المدينة.
boolean
اضبطه على true لتعطيل حقل الولاية.
boolean
اضبطه على true لتعطيل حقل الرمز البريدي.
string
عملة الدفع، مثل USD.
boolean
افتراضي:"true"
إظهار محدد العملة أو إخفاؤه.
number
يثبّت المبلغ المحصّل، بوحدات العملة الرئيسية، مثل 12.5 مقابل $12.50. يعمل مع منتجات Pay What You Want فقط، ويتم تجاهله إذا كان أقل من الحد الأدنى لسعر المنتج.
boolean
افتراضي:"true"
إظهار قسم الخصومات أو إخفاؤه.
string
يتم تمرير أي query parameter يبدأ بـ metadata_ باعتباره metadata.
يضيف المعالج returnUrl من config الخاص به إلى الرابط باعتباره redirect_url.
إذا كان productId مفقودًا، يعيد المعالج استجابة 400. كما تعيد query parameters غير الصالحة ومعرّفات المنتجات غير الموجودة استجابة 400.

تنسيق الاستجابة

يعيد checkout الثابت استجابة JSON تتضمن عنوان URL الخاص بـ checkout. في test mode، يستخدم عنوان URL القيمة test.checkout.dodopayments.com.
يعمل checkout الديناميكي كوسيط لـ POST /payments وPOST /subscriptions، وهما endpoints مهملان. ويظل متوافقًا مع عمليات الدمج الحالية، لكن ينبغي لعمليات الدمج الجديدة استخدام checkout sessions.

تنسيق الاستجابة

يعيد checkout الديناميكي استجابة JSON تتضمن عنوان URL الخاص بـ checkout:
تنشئ checkout sessions عملية checkout مستضافة للمشتريات لمرة واحدة والاشتراكات، مع تحكم كامل في التخصيص. يُعد product_cart الحقل المطلوب الوحيد. إذا لم يتضمن body قيمة return_url، يستخدم المعالج returnUrl من config الخاص به.للمزيد من التفاصيل والاطلاع على كل field مدعوم، راجع Checkout Sessions Integration Guide.لا يعيد session تم إنشاؤه باستخدام payment_method_id أي عنوان URL لـ checkout، لذلك يعيد المعالج استجابة 400. لتحصيل المدفوعات باستخدام طريقة دفع محفوظة، أنشئ session باستخدام SDK بدلًا من ذلك.

تنسيق الاستجابة

تعيد checkout sessions استجابة JSON تتضمن عنوان URL الخاص بـ checkout:

Customer Portal Route Handler

ينشئ Customer Portal route handler جلسة Customer Portal للعميل الذي تمرره إليه، ثم يعيد توجيه المتصفح إليها باستجابة 307.
لا يتحقق المعالج من هوية المستدعي. يحصل أي شخص يطلبه باستخدام customer ID على Customer Portal الخاص بذلك العميل. احمِ المسار باستخدام نظام المصادقة الخاص بك، ومرّر customer ID الخاص بالمستخدم الذي سجّل الدخول فقط.

Query Parameters

string
مطلوب
customer ID الخاص بجلسة Customer Portal، مثل ?customer_id=cus_123.
boolean
إذا تم ضبطه على true، يرسل Dodo Payments أيضًا رابط Customer Portal إلى العميل عبر البريد الإلكتروني.
يعيد 400 إذا كان customer_id مفقودًا، و500 إذا تعذر إنشاء جلسة Customer Portal.

Webhook Route Handler

يتحقق webhook route handler من كل طلب قبل تشغيل التعليمات البرمجية لديك:
  • الطريقة: لا يدعم سوى طلبات POST. وتعيد الطرق الأخرى 405.
  • التحقق من التوقيع: يتحقق من raw request body ومن رؤوس webhook-id وwebhook-timestamp وwebhook-signature باستخدام webhookKey، وفق مواصفة Standard Webhooks. ويعيد 401 إذا فشل التحقق.
  • التحقق من Payload: يتحقق من صحة payload باستخدام Zod. ويعيد 400 عند وجود payload غير صالح.
  • معالجة الأخطاء:
    • 401: توقيع غير صالح
    • 400: payload غير صالح
    • 500: خطأ داخلي أثناء التحقق
  • توجيه الأحداث: يستدعي onPayload لكل event، ثم يستدعي المعالج الخاص بنوع event، ويعيد 200.
لا يلتقط adaptor الأخطاء التي تطرحها المعالجات لديك. تنتقل هذه الأخطاء إلى Remix، ويفشل الطلب.

Webhook Event Handlers المدعومة

يتلقى كل معالج payload الذي تم التحقق منه لنوع event الخاص به:
لمعرفة معنى كل event، راجع Webhook Event Guide.

Prompt for LLM

انسخ هذا prompt إلى مساعد البرمجة بالذكاء الاصطناعي ليضيف adaptor إلى مشروعك. ولتزويد agent أيضًا بمستندات Dodo Payments والمهارات، ثبّت Agent Plugin.
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦