@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 هذا حرفيًا.
أمثلة على إعداد component
1
Create Internal Query
أنشئ internal query للعثور على customer في قاعدة بياناتك باستخدام auth ID. تستخدمه function
identify في الخطوة التالية للحصول على Dodo Payments customer ID للمستخدم الذي سجّل الدخول من أجل customer portal.2
Configure DodoPayments Component
أنشئ client. تربط
identify مستخدم Convex الذي سجّل الدخول بـ Dodo Payments customer ID. وتُرجع null إذا لم يسجّل أي مستخدم الدخول أو لم يتم العثور على customer مطابق.- Checkout Function Setup
- Customer Portal Setup
- Webhook Handler Setup
استخدم هذه 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 للمستخدم الذي سجّل الدخول.الاستخدام
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 ConvexActionCtx وverified payload الخاص بنوع event لديه:
استخدام Frontend
استدعِ checkout وportal actions من React components باستخدام hookuseAction من convex/react.