Skip to main content
هذه هي حزمة Flutter الرسمية من Dodo Payments (dodopayments_checkout على pub.dev). توجد أيضًا حزمة منفصلة طوّرها المجتمع، راجع مشاريع المجتمع.

Checkout Sessions API

أنشئ checkout_url الذي تفتحه هذه الحزمة، من الخادم الخلفي لديك.

Mobile Integration Guide

تعرّف على كيفية اندماج ذلك في تدفق الدفع الكامل على الأجهزة المحمولة.
تفتح dodopayments_checkout صفحة الدفع المستضافة من Dodo في SFSafariViewController على iOS وعلامة تبويب Chrome مخصصة على Android — وهي نفس النوى الأصلية المستخدمة في حزم iOS و Android المستقلة. توجد كل منطق الدفع في تلك النوى الأصلية؛ وتمرر طبقة Dart الاستدعاء عبر قناة مكتوبة النوع هي Pigeon. ولا تحتوي على مفتاح API، كما أنها لا تستدعي API الخاص بـ Dodo Payments مطلقًا. يتطلب Flutter 3.44+ / Dart 3.12+، وiOS 16+، وAndroid minSdk 23.

التثبيت

1

Add the Dependency

pubspec.yaml
2

Register a Callback URL Scheme

أضف نوع URL لمخططك في ios/Runner/Info.plist:
ios/Runner/Info.plist
بعد ذلك مرّر عناوين URL الواردة (مثلًا عبر app_links) إلى الحزمة، لأن SFSafariViewController لا يمكنه التقاط عنوان URL الخاص بالعودة:
من الآمن تمرير كل عنوان URL هنا. لا يتصرف handleOpenURL إلا مع عناوين URL التي تطابق returnUrl المسجّل لديك، ويحلّ false لأي شيء آخر.

الاستخدام

معنى النتيجة

result.status هو تلميح لواجهة المستخدم، وليس دليلًا على الدفع. أكّد كل عملية دفع من الخادم الخلفي لديك، عبر payment.succeeded / subscription.active webhook.
CheckoutStatus
مطلوب
واحد من succeeded، failed، cancelled، pending، expired.
String?
يُعيَّن عند تضمين أحدها في عنوان URL للعودة. اعرضه في واجهة المستخدم، ولا تستخدمه لمنح صلاحية الوصول. راجع قسم التحقق من الدفع أدناه.
String?
يُعيَّن لعمليات دفع الاشتراكات.
List<String>?
يُعيَّن عند تضمين منتجات مفاتيح الترخيص في عملية الدفع.
String?
يُعيَّن عند جمع عنوان بريد إلكتروني في عملية الدفع.
Map<String, String>
كل مَعلمات الاستعلام الواردة من عنوان URL للعودة، حرفيًا.

التحقق من الدفع

Webhooks

يستدعي Dodo Payments خادمك الخلفي عند نجاح عملية دفع أو تفعيل اشتراك.

Get Payment Detail

ابحث عن paymentId باستخدام مفتاحك السري للتحقق من حالته مباشرة.
امنح صلاحية الوصول بعد أن يؤكد أحد هذه العناصر الدفع، ولا تمنحها مطلقًا استنادًا إلى result.status وحده.

الأخطاء

يُطلق start الاستثناء CheckoutException فقط عند إساءة الاستخدام أو حدوث عطل في المنصة. أما عملية الدفع الملغاة أو المرفوضة فهي دائمًا نتيجة وليست استثناءً.
  • invalidCheckoutUrl (INVALID_CHECKOUT_URL): ليس عنوان URL لجلسة checkout.dodopayments.com.
  • invalidReturnUrl (INVALID_RETURN_URL): ليس عنوان URL مطلقًا صالحًا.
  • alreadyInProgress (ALREADY_IN_PROGRESS): توجد عملية دفع قيد التشغيل بالفعل.
  • platformError (PLATFORM_ERROR): عطل غير متوقع في المنصة.

الجلسات المتروكة

إذا أُغلِق التطبيق أثناء عملية الدفع، فاستعد الجلسة عند التشغيل التالي وطابِقها مع خادمك الخلفي.

ذات صلة

Mobile Integration Guide

نفس العقد الخاص بـ Android وiOS وReact Native.

Community Projects

توجد أيضًا حزمة Flutter منفصلة طوّرها المجتمع.
آخر تعديل في ٣١ يوليو ٢٠٢٦