المقدمة
قم بتنفيذ الوظائف بدون خادم والمهام الخلفية تلقائيًا عند حدوث أحداث الدفع. قم بمعالجة المدفوعات، إرسال الإشعارات، تحديث قواعد البيانات، وتشغيل سير العمل المعقد باستخدام منصة تنفيذ الوظائف الموثوقة من Inngest.
تتطلب هذه التكاملات عنوان URL الخاص بـ webhook من Inngest من تكوين الوظيفة الخاصة بك.
البدء
افتح قسم Webhook
في لوحة معلومات مدفوعات Dodo الخاصة بك، انتقل إلى Webhooks → + إضافة نقطة نهاية وقم بتوسيع قائمة التكاملات.
اختر Inngest
اختر بطاقة تكامل Inngest .
إنشاء وظيفة Inngest
في Inngest، قم بإنشاء وظيفة جديدة ونسخ عنوان URL الخاص بـ webhook من تكوين الوظيفة.
لصق عنوان URL الخاص بـ Webhook
ألصق عنوان URL الخاص بـ webhook من Inngest في تكوين نقطة النهاية.
تكوين التحويل
قم بتحرير كود التحويل لتنسيق الأحداث لوظيفة Inngest الخاصة بك.
اختبار وإنشاء
اختبر باستخدام حمولات عينة وانقر على إنشاء لتفعيل التكامل.
تم!
🎉 ستقوم أحداث الدفع الآن بتشغيل وظائف Inngest الخاصة بك تلقائيًا.
أمثلة على كود التحويل
حمولة حدث أساسية
function handler ( webhook ) {
if ( webhook . eventType === "payment.succeeded" ) {
const p = webhook . payload . data ;
webhook . payload = {
name: "payment.succeeded" ,
data: {
payment_id: p . payment_id ,
amount: ( p . total_amount / 100 ). toFixed ( 2 ),
currency: p . currency || "USD" ,
customer_email: p . customer . email ,
customer_name: p . customer . name ,
payment_method: p . payment_method || "unknown"
},
user: {
email: p . customer . email
},
ts: Math . floor ( new Date ( webhook . payload . timestamp ). getTime () / 1000 )
};
}
return webhook ;
}
See all 21 lines
معالج حدث الاشتراك
function handler ( webhook ) {
const s = webhook . payload . data ;
switch ( webhook . eventType ) {
case "subscription.active" :
webhook . payload = {
name: "subscription.started" ,
data: {
subscription_id: s . subscription_id ,
customer_email: s . customer . email ,
customer_name: s . customer . name ,
product_id: s . product_id ,
amount: ( s . recurring_pre_tax_amount / 100 ). toFixed ( 2 ),
frequency: s . payment_frequency_interval ,
next_billing: s . next_billing_date
},
user: {
email: s . customer . email
},
ts: Math . floor ( new Date ( webhook . payload . timestamp ). getTime () / 1000 )
};
break ;
case "subscription.cancelled" :
webhook . payload = {
name: "subscription.cancelled" ,
data: {
subscription_id: s . subscription_id ,
customer_email: s . customer . email ,
cancelled_at: s . cancelled_at ,
cancel_at_next_billing: s . cancel_at_next_billing_date
},
user: {
email: s . customer . email
},
ts: Math . floor ( new Date ( webhook . payload . timestamp ). getTime () / 1000 )
};
break ;
}
return webhook ;
}
See all 39 lines
معالج حدث النزاع
function handler ( webhook ) {
if ( webhook . eventType . startsWith ( "dispute." )) {
const d = webhook . payload . data ;
webhook . payload = {
name: webhook . eventType ,
data: {
dispute_id: d . dispute_id ,
payment_id: d . payment_id ,
amount: ( d . amount / 100 ). toFixed ( 2 ),
status: d . dispute_status ,
stage: d . dispute_stage ,
remarks: d . remarks || "" ,
urgent: webhook . eventType === "dispute.opened"
},
user: {
email: d . customer ?. email || "unknown"
},
ts: Math . floor ( new Date ( webhook . payload . timestamp ). getTime () / 1000 )
};
}
return webhook ;
}
See all 22 lines
حالات استخدام Inngest الشائعة
إرسال رسائل تأكيد عبر البريد الإلكتروني
تحديث سجلات العملاء
معالجة المبالغ المستردة
إنشاء فواتير
تحديث المخزون
الترحيب بالمشتركين الجدد
معالجة الإلغاءات
إرسال تذكيرات التجديد
تحديث دورات الفوترة
التعامل مع المدفوعات الفاشلة
تحديث مقاييس الإيرادات
تتبع سلوك العملاء
إنشاء تقارير
مزامنة البيانات مع منصات التحليلات
حساب معدلات التراجع
نصائح
استخدم أسماء أحداث وصفية لتحسين تنظيم الوظائف
تضمين سياق المستخدم لتنفيذ الوظائف
تعيين طوابع زمنية صحيحة لترتيب الأحداث
هيكلة البيانات بشكل متسق عبر الأحداث
استخدام ميزات إعادة المحاولة ومعالجة الأخطاء في Inngest
استكشاف الأخطاء وإصلاحها
تحقق من أن عنوان URL الخاص بـ webhook صحيح ونشط
تحقق من أن وظيفة Inngest تم نشرها ونشطة
تأكد من أن أسماء الأحداث تتطابق مع مشغلات الوظائف
راجع سجلات وظيفة Inngest بحثًا عن الأخطاء
البيانات لم تُستقبل بشكل صحيح
تحقق من أن هيكل الحمولة يتطابق مع توقعات Inngest
تحقق من أن أسماء الأحداث مُنسقة بشكل صحيح
تأكد من تضمين جميع الحقول المطلوبة
اختبر باستخدام أداة اختبار webhook من Inngest