GitHub Repository
الكود المصدري الكامل ودليل الإعداد
الإعداد السريع
1. المتطلبات الأساسية
- حساب Cloudflare
- حساب قاعدة بيانات Neon
- مفتاح API الخاص بـ DodoPayments من لوحة التحكم
2. تثبيت التبعيات
3. إعداد قاعدة البيانات
- سجّل في Neon
- أنشئ مشروعًا جديدًا
- افتح محرر SQL
- انسخ والصق محتويات
schema.sql - نفّذ الاستعلام
- احصل على سلسلة الاتصال من Neon → تفاصيل الاتصال
4. تكوين الأسرار الأولية
Note: سنقوم بإعداد DODO_PAYMENTS_WEBHOOK_KEY بعد النشر بمجرد حصولك على عنوان URL الخاص بالويب هوك.
5. تحديث wrangler.toml
حرّرwrangler.toml وحدد اسم العامل الخاص بك:
6. النشر
7. احصل على عنوان URL الخاص بـ Webhook
عنوان URL الخاص بـ webhook هو:8. تسجيل Webhook في لوحة تحكم DodoPayments
- اذهب إلى DodoPayments Dashboard → Developer → Webhooks
- أنشئ نقطة نهاية ويب هوك جديدة
- قم بتكوين عنوان URL للويب هوك كنقطة النهاية
- فعّل أحداث الاشتراك التالية:
subscription.activesubscription.cancelledsubscription.renewed
- انسخ السرّ الخاص بالتوقيع
9. تعيين مفتاح Webhook وإعادة النشر
ماذا يفعل
يعالج أحداث الاشتراك ويخزنها في PostgreSQL:- subscription.active - ينشئ/يحدث سجلات العملاء والاشتراكات
- subscription.cancelled - يحدد الاشتراك على أنه ملغى
- subscription.renewed - يحدث تاريخ الفوترة التالي
الميزات الرئيسية
✅ Signature verification - باستخدام مكتبة dodopayments✅ Idempotency - يمنع المعالجة المكررة باستخدام معرفات الويب هوك
✅ Event logging - سجل تدقيق كامل في جدول
webhook_events✅ Error handling - يتم تسجيلها وقابلة لإعادة المحاولة
Note: يوضح هذا التّنفيذ معالجة ثلاثة من أحداث الاشتراك الأساسية (subscription.active،subscription.cancelled،subscription.renewed) باستخدام أقل عدد من الحقول. يمكنك توسيعه بسهولة لدعم أنواع وحقول إضافية بناءً على متطلباتك.
ملفات التكوين
مخطط قاعدة البيانات
- customers - البريد الإلكتروني، الاسم، dodo_customer_id
- subscriptions - الحالة، المبلغ، next_billing_date، مرتبط بالعملاء
- webhook_events - سجل الأحداث مع webhook_id من أجل التحمل
كود التنفيذ
كيف يعمل
معالج الويب هوك:- يتحقق من التوقيع - يضمن أن الطلب من DodoPayments باستخدام HMAC-SHA256
- يتحقق من التكرارات - يستخدم معرف الويب هوك لمنع معالجة نفس الحدث مرتين
- يسجل الحدث - يخزن الويب هوك الخام في جدول
webhook_eventsلسجل التدقيق - يعالج الحدث - ينشئ العملاء والاشتراكات أو يُحدثها
- يتعامل مع الأخطاء - يسجل الإخفاقات ويعلم بأن الحدث لم يُعالج لإعادة المحاولة
الاختبار
التطوير المحلي:- انتقل إلى المطورين → Webhooks
- أضف نقطة نهاية مع عنوان URL الخاص بالعامل الخاص بك
- قم بتمكين: subscription.active، subscription.cancelled، subscription.renewed