الانتقال إلى المحتوى الرئيسي

GitHub Repository

الدليل الكامل للشفرة المصدرية وإعدادها
اطّلع على مجموعة البداية الكاملة لـ supabase
مجموعة بداية اشتراك بسيطة مبنية باستخدام Next.js و Supabase و Dodo Payments. يساعدك هذا القالب على إعداد SaaS قائم على الاشتراكات مع المصادقة والمدفوعات وwebhooks بسرعة.
Dodo Payments Supabase Subscription Starter

الإعداد السريع

1. المتطلبات الأساسية

2. المصادقة والربط

احصل على مرجع مشروعك من لوحة تحكم Supabase → إعدادات المشروع

3. إعداد قاعدة البيانات

  1. انتقل إلى لوحة معلومات Supabase Dashboard
  2. افتح محرر SQL
  3. أنشئ استعلامًا جديدًا
  4. انسخ والصق المحتوى الكامل لـ schema.sql
  5. نفّذ الاستعلام

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

  1. انتقل إلى DodoPayments Dashboard → Developer → Webhooks
  2. أنشئ نقطة نهاية webhook جديدة
  3. اضبط عنوان URL الخاص بالـ webhook كنقطة النهاية
  4. فعّل أحداث الاشتراك التالية:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. انسخ Signing Secret

8. تعيين مفتاح Webhook وإعادة النشر

ماذا يفعل

يعالج أحداث الاشتراك ويخزنها في PostgreSQL الخاص بـ Supabase:
  • subscription.active - ينشئ/يحدث سجلات العملاء والاشتراكات
  • subscription.cancelled - يحدد الاشتراك على أنه ملغى
  • subscription.renewed - يحدث تاريخ الفوترة التالي

الميزات الرئيسية

التحقق من التوقيع - باستخدام مكتبة dodopayments
اللا تدويرية (Idempotency) - يمنع المعالجة المكررة باستخدام معرّفات webhook
تسجيل الأحداث - سجل تدقيق كامل في جدول webhook_events
معالجة الأخطاء - مسجلة وقابلة لإعادة المحاولة
ملاحظة: يوضح هذا التّنفيذ التعامل مع ثلاث أحداث اشتراك أساسية (subscription.active، subscription.cancelled، subscription.renewed) مع حقول قليلة. يمكنك توسيعه بسهولة لدعم أنواع وحقول إضافية حسب متطلباتك.

ملفات التكوين

مخطط قاعدة البيانات

الجداول التي تم إنشاؤها:
  • customers - البريد الإلكتروني، الاسم، dodo_customer_id
  • subscriptions - الحالة، المبلغ، next_billing_date، مرتبط بالعملاء
  • webhook_events - سجل الأحداث مع webhook_id للتحمل

كود التنفيذ

كيف يعمل

وظيفة Edge المبنية على Deno:
  1. تتحقق من التوقيع - تستخدم مكتبة dodopayments للتحقق عبر HMAC-SHA256
  2. تفحص اللا تدويرية - تبحث عن معرف الـ webhook لمنع المعالجة المكررة
  3. تسجل الحدث - تخزن بيانات الـ webhook الخام في جدول webhook_events
  4. تعالج التحديثات - تنشئ أو تحدّث العملاء والاشتراكات عبر عميل Supabase
  5. تعالج الأخطاء - تسجل الإخفاقات وتعلّم الحدث لإعادة المحاولة

الاختبار

التطوير المحلي:
العلم --no-verify-jwt مطلوب لأن webhooks لا تتضمن رموز JWT. يتم توفير الأمان من خلال التحقق من توقيع الـ webhook.
عرض السجلات:
أو في لوحة تحكم Supabase → وظائف Edge → webhook → علامة التبويب السجلات تكوين في لوحة تحكم DodoPayments:
  1. انتقل إلى المطورين → Webhooks
  2. أضف نقطة النهاية مع عنوان URL الخاص بـ Supabase
  3. قم بتمكين: subscription.active، subscription.cancelled، subscription.renewed

المشكلات الشائعة

الموارد

آخر تعديل في ٢٢ مايو ٢٠٢٦