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