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 وحده.

تخصيص المظهر

يمكنك تخصيص شريط أدوات المتصفح وأزرار نظام الدفع ومخطط الألوان عبر customization على CheckoutParams. يتم تجميع الخيارات حسب المنصة لأن Custom Tab في Android وSFSafariViewController في iOS يعرضان عناصر تحكم أصلية مختلفة. جميع الحقول اختيارية؛ ويؤدي عدم تضمين customization إلى استخدام المظهر الافتراضي لكل منصة.
Color?
لون خلفية شريط الأدوات.
Color?
لون شريط التنقل.
Color?
لون الفاصل أعلى شريط التنقل.
CloseButtonStyle
يعرض standard أيقونة “X” الخاصة بالنظام؛ بينما يرسم back سهم رجوع بدلاً منها.
CloseButtonPosition
الجانب الذي يظهر عليه زر الإغلاق في شريط الأدوات.
bool
يعرض أيقونة المشاركة في شريط الأدوات.
bool
يعرض عنوان الصفحة أسفل عنوان URL في شريط الأدوات.
bool
يتيح لشريط الأدوات الاختفاء تلقائيًا أثناء تمرير الصفحة.
bool
يعرض “إضافة الصفحة إلى الإشارات المرجعية” في قائمة الخيارات الإضافية.
bool
يعرض “تنزيل الصفحة” في قائمة الخيارات الإضافية.
BrowserColorScheme
يفرض المظهر الفاتح أو الداكن بغض النظر عن إعداد النظام في الجهاز.
DismissButtonStyle
تسمية أو أيقونة لزر الإغلاق.
PresentationStyle
يظهر pageSheet على شكل بطاقة يمكن إغلاقها بالسحب؛ بينما يغطي fullScreen الشاشة بأكملها.
bool
يتيح طي شريط الأدوات أثناء التمرير. يظهر فقط عندما يكون presentationStyle هو fullScreen — ويحافظ pageSheet على تثبيت الأشرطة بغض النظر عن هذا الإعداد.
BrowserColorScheme
يفرض المظهر الفاتح أو الداكن بغض النظر عن إعداد النظام في الجهاز.

الأخطاء

يطرح 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 منفصلة أنشأها المجتمع.
آخر تعديل في ١٧ أغسطس ٢٠٢٦