@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.أمثلة على معالجات المسارات
تفترض جميع الأمثلة أنك تستخدم Next.js App Router.
- Checkout Handler
- Customer Portal Handler
- Webhook Handler
استخدم هذا المعالج لإضافة checkout الخاص بـ Dodo Payments إلى تطبيقك. يقدّم معالج
GET checkout ثابتًا. ويقدّم معالج POST checkout sessions، أو checkout ديناميكيًا عند تعيين type: "dynamic".معالج مسار Checkout
يدعم معالج checkout الطرق الثلاث جميعها لتحصيل المدفوعات باستخدام Dodo Payments:- روابط الدفع الثابتة: عناوين URL قابلة للمشاركة لتحصيل المدفوعات دون كتابة تعليمات برمجية.
- روابط الدفع الديناميكية: روابط دفع تنشئها بتفاصيل مخصصة. وهي تستخدم endpoints مهجورة.
- Checkout Sessions: checkout مستضاف مع سلة منتجات وتفاصيل العميل وخيارات التخصيص. وهذا هو التدفق الموصى به.
Static Checkout (GET)
Static Checkout (GET)
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.تنسيق الاستجابة
يعيد checkout الثابت استجابة JSON تحتوي على عنوان URL لـ checkout. في test mode، يستخدم عنوان URLtest.checkout.dodopayments.com.Dynamic Checkout (POST)
Dynamic Checkout (POST)
- أرسل المعلمات في هيئة JSON body ضمن طلب POST.
- يدعم المدفوعات لمرة واحدة والمدفوعات المتكررة.
- يلزم توفير
billingوcustomer. - للاطلاع على جميع حقول body المدعومة، راجع:
تنسيق الاستجابة
يعيد checkout الديناميكي استجابة JSON تحتوي على عنوان URL لـ checkout:Checkout Sessions (POST)
Checkout Sessions (POST)
تنشئ 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 للعميل الذي تمرّره إليه، ثم يعيد توجيه المتصفح إليها.Query Parameters
string
مطلوب
customer ID الخاص بجلسة portal، مثل
?customer_id=cus_123.boolean
إذا تم تعيينه إلى
true، ترسل Dodo Payments أيضًا رابط portal إلى العميل عبر البريد الإلكتروني.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.