Skip to main content
يضيف component ‏@dodopayments/convex‏ Dodo Payments إلى backend الخاص بـ Convex. ويوفر function ‏checkout‏ تنشئ checkout sessions، وfunction ‏customerPortal‏ تفتح Customer Portal للمستخدم الذي سجّل الدخول، و‏createDodoWebhookHandler‏، الذي يتحقق من webhooks في Convex HTTP action. ويتطلب Convex 1.26 أو إصدارًا أحدث.

Checkout Function

أنشئ checkout sessions من Convex actions.

Customer Portal

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

Webhooks

استقبل ع events الخاصة بـ Dodo Payments webhook events وقم بمعالجتها.

التثبيت

1

Install the Package

شغّل هذا الأمر في جذر مشروعك:
2

Add Component to Convex Config

أضف Dodo Payments component إلى إعدادات Convex:
بعد تعديل convex.config.ts، شغّل npx convex dev مرة واحدة لإنشاء الأنواع.
3

Set Up Environment Variables

عيّن environment variables في لوحة تحكم Convex ضمن Settings → Environment Variables. لفتح لوحة التحكم، شغّل:
أضف environment variables التالية:
  • DODO_PAYMENTS_API_KEY: مفتاح Dodo Payments API الخاص بك، من Developer → API Keys في لوحة تحكم Dodo Payments.
  • DODO_PAYMENTS_ENVIRONMENT: test_mode أو live_mode.
  • DODO_PAYMENTS_WEBHOOK_SECRET: webhook secret الخاص بك، من Developer → Webhooks. مطلوب لمعالجة webhooks. يقرأ webhook handler اسم variable هذا حرفيًا.
خزّن secrets كـ Convex environment variables. لا تقرأ Convex backend functions ملفات .env. لا تُودع secrets أبدًا في version control.

أمثلة على إعداد component

1

Create Internal Query

أنشئ internal query للعثور على customer في قاعدة بياناتك باستخدام auth ID. تستخدمه function ‏identify‏ في الخطوة التالية للحصول على Dodo Payments customer ID للمستخدم الذي سجّل الدخول من أجل customer portal.
لا يعرّف component أي schema. قبل استخدام هذا query، عرّف table ‏customers‏ مع index ‏by_auth_id‏ في convex/schema.ts، أو غيّر query ليتوافق مع schema الحالية لديك.
2

Configure DodoPayments Component

أنشئ client. تربط identify‏ مستخدم Convex الذي سجّل الدخول بـ Dodo Payments customer ID. وتُرجع null‏ إذا لم يسجّل أي مستخدم الدخول أو لم يتم العثور على customer مطابق.
ثم أضف functions التي تحتاج إليها:
استخدم هذه function لإضافة Dodo Payments checkout إلى تطبيق Convex الخاص بك. فهي تنشئ checkout session من الحقول التي يقبلها checkout payload validator الخاص بـ component.

Checkout Function

ينشئ Convex component‏ checkout sessions، وهو checkout flow الموصى به لجميع المدفوعات. تحتوي session على product cart وتفاصيل customer وخيارات checkout.

الاستخدام

استدعِ checkout‏ من Convex action، مع حقول checkout session في payload:
لا تستدعي checkout‏ function ‏identify. لإرفاق customer موجود، مرّر customer: { customer_id }‏ في payload. لمزيد من التفاصيل والقائمة الكاملة بالحقول المدعومة، راجع Checkout Sessions. لا تُرجع session التي أُنشئت باستخدام payment_method_id‏ أي checkout URL، لذلك تُلقي checkout‏ error عند استخدامها.

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

تُرجع checkout function‏ object يحتوي على checkout URL:

Customer Portal Function

تُرجع customer portal function‏ Customer Portal URL للمستخدم الذي سجّل الدخول.

الاستخدام

وتُرجع object يحتوي على field‏ portal_url.

Parameters

boolean
افتراضي:"false"
إذا تم تعيينه إلى true، ترسل Dodo Payments أيضًا رابط portal إلى customer عبر البريد الإلكتروني.
تحصل customerPortal‏ على customer من function ‏identify‏ في إعداد DodoPayments الخاص بك، والتي يجب أن تُرجع customer‏ dodoCustomerId. إذا أرجعت identify‏ null، فإن customerPortal‏ تُلقي error من النوع User is not authenticated..

Webhook Handler

يتحقق createDodoWebhookHandler‏ من كل request قبل تشغيل code الخاص بك:
  • Method: سجّل route باستخدام method: "POST". لا تصل requests التي تستخدم methods أخرى إلى handler.
  • Signature Verification: يتحقق من Standard Webhooks signature باستخدام environment variable‏ DODO_PAYMENTS_WEBHOOK_SECRET. ويُرجع 400 إذا فشل التحقق.
  • Payload Validation: يتم التحقق باستخدام Zod. ويُرجع 400 للـ payload غير الصالح.
  • Error Handling:
    • 400: signature غير صالحة، أو payload غير صالح، أو error ألقاها أحد handlers لديك
    • 200: اكتملت جميع handlers
    • إذا لم يتم تعيين DODO_PAYMENTS_WEBHOOK_SECRET، يُلقي handler‏ error ويفشل request.
  • Event Routing: يستدعي onPayload‏ لكل event، ثم يستدعي handler الخاص بنوع event.

Webhook Event Handlers المدعومة

يستقبل كل handler‏ Convex ActionCtx‏ وverified payload الخاص بنوع event لديه:

استخدام Frontend

استدعِ checkout وportal actions من React components باستخدام hook‏ useAction‏ من convex/react.

Prompt لـ LLM

انسخ هذا prompt إلى AI coding assistant لديك ليضيف component إلى مشروعك. ولمنح agent الخاص بك مستندات Dodo Payments وskills أيضًا، ثبّت Agent Plugin.
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦