Skip to main content
توفّر حزمة @dodopayments/nextjs لمشروع Next.js App Router ثلاث معالجات مسارات. يعرض Checkout عناوين URL لـ checkout، ويرسل CustomerPortal العميل إلى Customer Portal، ويتحقق Webhooks من أحداث webhook ويوجّهها إلى التعليمات البرمجية الخاصة بك. تدعم الحزمة Next.js 14 و15 و16.

Checkout Handler

أنشئ عناوين URL لـ checkout باستخدام تدفقات static وdynamic وcheckout session.

Customer Portal

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

Webhooks

استقبل أحداث webhook الخاصة بـ Dodo Payments وعالجها.

التثبيت

1

Install the Package

شغّل هذا الأمر في جذر مشروعك:
تتطلب الحزمة أيضًا Zod 3.25 أو Zod 4 باعتبارها peer dependency.
2

Set Up Environment Variables

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

أمثلة على معالجات المسارات

تفترض جميع الأمثلة أنك تستخدم Next.js App Router.
استخدم هذا المعالج لإضافة checkout الخاص بـ Dodo Payments إلى تطبيقك. يقدّم معالج GET checkout ثابتًا. ويقدّم معالج POST checkout sessions، أو checkout ديناميكيًا عند تعيين type: "dynamic".

معالج مسار Checkout

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

Query Parameters المدعومة

string
مطلوب
معرّف المنتج، مثل ?productId=pdt_123.
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 من إعداداته إلى الرابط باعتباره redirect_url.
إذا كان productId مفقودًا، يعيد المعالج استجابة 400. كما تعيد query parameters غير الصالحة ومعرّفات المنتجات غير الموجودة استجابة 400.

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

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

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

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

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

تعيد checkout sessions استجابة JSON تحتوي على عنوان URL لـ checkout:

معالج مسار Customer Portal

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

Query Parameters

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

معالج مسار Webhook

يتحقق معالج مسار webhook من كل طلب قبل تشغيل التعليمات البرمجية الخاصة بك:
  • Method: لا تُدعَم إلا طلبات POST. وتعيد الطرق الأخرى 405.
  • Signature Verification: يتحقق من body الخام للطلب مقابل الرؤوس webhook-id وwebhook-timestamp وwebhook-signature باستخدام webhookKey. ويعيد 401 إذا فشل التحقق.
  • Payload Validation: يحلّل body الذي تم التحقق منه باعتباره JSON ويتحقق منه باستخدام Zod. ويعيد 400 عندما لا يتطابق payload الذي تم تحليله مع webhook schema.
  • Error Handling:
    • 401: توقيع غير صالح
    • 400: payload غير صالح
    • 500: أخطاء تحقق غير متوقعة، أو JSON غير صحيح، أو أخطاء تطرحها callbacks الخاصة بك
  • Event Routing: يستدعي onPayload لكل حدث، ثم يستدعي المعالج الخاص بنوع الحدث، ويعيد 200.
لا يعترض adaptor الأخطاء التي تطرحها المعالجات الخاصة بك. فهي تنتقل إلى Next.js ويفشل الطلب.

معالجات أحداث Webhook المدعومة

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

مطالبة لـ LLM

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