Skip to main content
تمنح وحدة @dodopayments/nuxt تطبيق Nuxt لديك ثلاثة معالجات لمسارات الخادم. يعيد checkoutHandler عناوين URL لـ checkout، ويرسل customerPortalHandler العميل إلى Customer Portal، بينما يتحقق Webhooks من أحداث webhook ويوجهها إلى التعليمات البرمجية لديك.

Checkout API Route

أنشئ عناوين URL لصفحة الدفع من مسار خادم Nuxt.

Customer Portal API Route

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

Webhooks API Route

تلقَّ أحداث webhook من Dodo Payments وتحقق منها في Nuxt.

نظرة عامة

تسجّل الوحدة معالجاتها كعمليات auto-import في خادم Nuxt، لذلك تستدعي مسارات الخادم لديك checkoutHandler وcustomerPortalHandler وWebhooks من دون عبارات import. يقرأ كل مسار بيانات الاعتماد من runtimeConfig. يعرّض Nuxt للمتصفح runtimeConfig.public فقط، لذلك يبقى مفتاح API وسر webhook على الخادم.

التثبيت

1

Install the Nuxt Module

شغّل هذا الأمر في جذر مشروعك:
تدرج الوحدة Nuxt 3 (الإصدار 3.13.1 أو أحدث) وzod 3.25 أو أحدث كتبَعيات peer.
2

Register the Module in nuxt.config.ts

أضف @dodopayments/nuxt إلى مصفوفة modules، واربط بيانات اعتمادك بـ runtimeConfig:
nuxt.config.ts
عيّن متغيرات البيئة هذه، مثلًا في ملف .env داخل جذر مشروعك:لا يقرأ خادم Nuxt بعد بنائه ملف .env. في وقت التشغيل، يتجاوز Nuxt قيمة runtimeConfig فقط من المتغير المطابق لمساره، مثل NUXT_PRIVATE_RETURN_URL بالنسبة إلى private.returnUrl، لذا اضبط هذه المتغيرات في بيئة الاستضافة لديك أيضًا.
لا ترفع ملف .env أو الأسرار إلى نظام التحكم في الإصدارات.

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

تنشئ الأمثلة مسارات خادم في دليل server/routes/api/. يحدد Nuxt المسارات لكل ملف وفق اسمه ولواحق method، لذلك يعالج checkout.get.ts GET /api/checkout.
استخدم هذا المعالج لإضافة checkout الخاص بـ Dodo Payments إلى تطبيق Nuxt لديك. يقدّم مسار GET checkout ثابتًا. ويقدّم مسار POST جلسات checkout، أو checkout ديناميكيًا عند ضبط type: "dynamic".
أنشئ مسار GET لـ checkout الثابت:
يقدّم checkout.post.ts تدفق POST واحدًا. استخدم مثال checkout الديناميكي أو مثال جلسة checkout:
إذا كان productId مفقودًا أو غير صالح، يعيد المعالج استجابة 400.
لاختبار المسارات، أرسل هذه الطلبات:

معالج مسار Checkout

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

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

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

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

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

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

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

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

معالج مسار Customer Portal

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

Query Parameters

string
مطلوب
معرّف العميل لجلسة البوابة، مثل ?customer_id=cus_123.
boolean
إذا تم ضبطه على true، يرسل Dodo Payments أيضًا رابط البوابة إلى العميل عبر البريد الإلكتروني.
بدءًا من @dodopayments/nuxt 0.2.11، يعيد المعالج HTTP 400 إذا كان customer_id مفقودًا، وHTTP 500 إذا تعذر إنشاء جلسة البوابة. تُعيد الإصدارات الأقدم HTTP 200 مع نص JSON الأساسي { "status": 400, "body": "Missing customer_id in query parameters" }. للاعتماد على حالة HTTP، قم بالترقية إلى الإصدار 0.2.11 أو إصدار أحدث.

معالج مسار Webhook

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

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

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

Prompt لـ LLM

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