GitHub Repository
الدليل الكامل للشفرة المصدرية وإعدادها
الإعداد السريع
1. المتطلبات الأساسية
ستحتاج إلى:- حساب Supabase مع إنشاء مشروع
- مفتاح API لـ Dodo Payments من Developer → API Keys في لوحة التحكم
2. المصادقة والربط
3. إعداد قاعدة البيانات
- انتقل إلى لوحة تحكم Supabase.
- افتح SQL Editor.
- انسخ المحتوى الكامل لـ
schema.sqlوشغّله.
4. تعيين الأسرار الأولية
يوفّر Supabase تلقائيًا كلًا منSUPABASE_URL وSUPABASE_SERVICE_ROLE_KEY أثناء التشغيل.
ستعيّن
DODO_PAYMENTS_WEBHOOK_KEY بعد النشر، بمجرد حصولك على عنوان URL الخاص بـ webhook.5. النشر
تم إعداد الدالة مسبقًا فيfunctions/webhook/index.ts.
6. الحصول على عنوان URL الخاص بـ webhook
عنوان URL الخاص بـ webhook هو:7. تسجيل webhook في لوحة تحكم DodoPayments
- انتقل إلى Developer → Webhooks في لوحة تحكم Dodo Payments.
- انقر على Add endpoint.
- أدخل عنوان URL الخاص بـ webhook.
- حدّد هذه الأحداث:
subscription.active،subscription.cancelled،subscription.renewed. - انقر على Create endpoint وانسخ signing secret.
8. تعيين مفتاح webhook وإعادة النشر
ما الذي يفعله
يعالج معالج webhook أحداث الاشتراكات ويخزّنها في Supabase PostgreSQL:subscription.active— ينشئ سجلات العملاء والاشتراكات أو يحدّثهاsubscription.cancelled— يضع علامة على الاشتراك باعتباره ملغىsubscription.renewed— يحدّث تاريخ الفوترة التالي
الميزات الرئيسية
- التحقق من التوقيع — يستخدم Dodo Payments SDK للتحقق من صحة webhook
- Idempotency — يستخدم ترويسة
webhook-idلمنع المعالجة المكررة - تسجيل الأحداث — يخزّن جميع الأحداث في جدول
webhook_eventsلأغراض التدقيق - معالجة الأخطاء — يسجّل حالات الفشل ويضع علامة على الأحداث لإعادة المحاولة
يعالج هذا المثال ثلاثة أحداث أساسية للاشتراكات باستخدام الحد الأدنى من الحقول. يمكنك توسيعه لدعم أنواع وحقول إضافية من الأحداث وفقًا لاحتياجاتك.
ملفات الإعداد
مخطط قاعدة البيانات
customers— البريد الإلكتروني والاسم ومعرّف عميل Dodo Paymentssubscriptions— الحالة والمبلغ وتاريخ الفوترة التالي، مرتبط بالعملاءwebhook_events— سجل الأحداث مع webhook ID لضمان Idempotency
كود التنفيذ
آلية العمل
تقوم Edge Function المستندة إلى Deno بما يلي:- تتحقق من التوقيع — تستخدم Dodo Payments SDK للتحقق باستخدام HMAC-SHA256
- تتحقق من التكرار — تستخدم ترويسة
webhook-idلمنع المعالجة المكررة - تسجّل الحدث — تخزّن بيانات webhook الأولية في جدول
webhook_events - تعالج التحديثات — تنشئ العملاء والاشتراكات أو تحدّثها عبر عميل Supabase
- تعالج الأخطاء — تسجّل حالات الفشل وتضع علامة على الأحداث لإعادة المحاولة
الاختبار
التطوير المحلي:مطلوب استخدام العلامة
--no-verify-jwt لأن webhooks لا تتضمن رموز JWT. ويوفّر التحقق من توقيع webhook الحماية اللازمة.- انتقل إلى Developer → Webhooks.
- أضف endpoint باستخدام عنوان URL الخاص بـ Supabase.
- حدّد
subscription.activeوsubscription.cancelledوsubscription.renewed.