GitHub Repository
رمز المصدر الكامل ودليل الإعداد
الإعداد السريع
1. المتطلبات الأساسية
تحتاج إلى:- حساب Vercel
- حساب قاعدة بيانات Neon
- مفتاح Dodo Payments API من Developer → API Keys في لوحة التحكم
2. تثبيت Dependencies
3. إعداد قاعدة البيانات
- سجّل في Neon وأنشئ مشروعًا.
- افتح SQL Editor.
- انسخ المحتوى الكامل لـ
schema.sqlوشغّله. - انسخ connection string من Connection Details.
4. تعيين Environment Variables الأولية
ستعيّن
DODO_PAYMENTS_WEBHOOK_KEY بعد النشر، بعد حصولك على webhook URL.5. النشر
6. احصل على عنوان URL الخاص بـ Webhook
عنوان URL الخاص بـ webhook هو:7. تسجيل Webhook في لوحة تحكم DodoPayments
- انتقل إلى Developer → Webhooks في لوحة تحكم Dodo Payments.
- انقر على Add endpoint.
- أدخل webhook URL الخاص بك.
- حدّد هذه الأحداث:
subscription.active،subscription.cancelled،subscription.renewed. - انقر على Create endpoint وانسخ signing secret.
8. تعيين مفتاح Webhook وإعادة النشر
ماذا يفعل
يعالج webhook handler أحداث الاشتراكات ويخزّنها في PostgreSQL:subscription.active— ينشئ سجلات العملاء والاشتراكات أو يحدّثهاsubscription.cancelled— يحدّد الاشتراك على أنه ملغىsubscription.renewed— يحدّث تاريخ الفوترة التالي
الميزات الرئيسية
- التحقق من التوقيع — يستخدم Dodo Payments SDK للتحقق من صحة webhook
- Idempotency — يستخدم
webhook-idheader لمنع المعالجة المكررة - تسجيل الأحداث — يخزّن جميع الأحداث في جدول
webhook_eventsلأغراض التدقيق - معالجة الأخطاء — يسجّل حالات الفشل ويضع علامة على الأحداث لإعادة المحاولة
يتعامل هذا المثال مع ثلاثة أحداث أساسية للاشتراكات باستخدام الحد الأدنى من الحقول. يمكنك توسيعه لدعم أنواع وحقول أحداث إضافية وفقًا لاحتياجاتك.
ملفات التكوين
مخطط قاعدة البيانات
customers— البريد الإلكتروني والاسم ومعرّف عميل Dodo Paymentssubscriptions— الحالة والمبلغ وتاريخ الفوترة التالي، مرتبط بالعملاءwebhook_events— سجل الأحداث مع webhook ID لضمان Idempotency
كود التنفيذ
كيف يعمل
يقوم webhook handler بما يلي:- يعطّل تحليل body — للوصول إلى body الخام للتحقق من التوقيع
- يتحقق من التوقيع — يستخدم Dodo Payments SDK للتحقق من الطلب باستخدام HMAC-SHA256
- يتحقق من التكرار — يستخدم
webhook-idheader لمنع معالجة الحدث نفسه مرتين - يسجّل الحدث — يخزّن webhook الخام في جدول
webhook_eventsلأغراض التدقيق - يعالج الحدث — ينشئ العملاء والاشتراكات أو يحدّثها في Neon
- يعالج الأخطاء — يسجّل حالات الفشل ويضع علامة على الأحداث التي لم تتم معالجتها لإعادة المحاولة
الاختبار
التطوير المحلي:- حدّد مشروعك.
- انتقل إلى Deployments → أحدث عملية نشر.
- انقر على Functions → Logs.
- انتقل إلى Developer → Webhooks.
- أضف نقطة نهاية باستخدام Vercel Functions URL الخاص بك.
- حدّد
subscription.activeوsubscription.cancelledوsubscription.renewed.