هذا هو iOS checkout SDK الرسمي من Dodo Payments والمخصص لـ Swift. يفتح صفحة الدفع المستضافة من Dodo داخل متصفح أصلي ويعيد نتيجة typed.
Checkout Sessions API
أنشئ checkout_url الذي سيفتحه هذا SDK من backend الخاص بك.
Mobile Integration Guide
تعرّف على كيفية توافق ذلك مع تدفق الدفع الكامل على الأجهزة المحمولة.
SFSafariViewController، ولا يحتفظ بأي API key، ولا يستدعي Dodo API مباشرةً. تعمل جميع منطق الدفع في المتصفح؛ بينما يدير SDK ببساطة دورة حياة العرض ويلتقط return URL.
يتطلب iOS 16+ وSwift 6.
التثبيت
1
Add the Package
في Xcode، انتقل إلى File → Add Package Dependencies وأدخل:حدد الإصدار 1.0.0 أو إصدارًا أحدث.بدلًا من ذلك، أضفه إلى
Package.swift:Package.swift
2
Register a Callback URL Scheme
يجب أن يسجل تطبيقك URL scheme لاستقبال return URL من صفحة الدفع. أضف ما يلي إلى يمكنك أيضًا إضافة ذلك عبر واجهة Info → URL Types في Xcode.
Info.plist:Info.plist
الاستخدام
إعادة توجيه Return URL
لا يملكSFSafariViewController طريقة داخل العملية لالتقاط return URL الخاص به. يجب أن يعيد تطبيقك توجيه عناوين URL الواردة إلى SDK.
- SwiftUI
- SceneDelegate
من الآمن إعادة توجيه كل URL إلى هنا. لا يعمل
handleOpenURL إلا على عناوين URL المطابقة لـ returnUrl المسجل لديك، ويعيد false لأي شيء آخر.معنى النتيجة
CheckoutStatus
مطلوب
واحد من
succeeded أو failed أو cancelled أو pending أو expired.String?
يُعيَّن عند احتواء return URL على واحد منها. اعرضه في واجهة المستخدم، ولا تستخدمه لمنح الوصول. راجع قسم Verify the Payment أدناه.
String?
يُعيَّن لعمليات الدفع الخاصة بالاشتراكات.
[String]?
يُعيَّن عند احتواء عملية الدفع على منتجات تتضمن license key.
String?
يُعيَّن عند التقاط البريد الإلكتروني أثناء عملية الدفع.
[String: String]
كل query parameter من return URL، حرفيًا.
التحقق من الدفع
Webhooks
يستدعي Dodo Payments backend الخاص بك عند نجاح عملية دفع أو تفعيل اشتراك.
Get Payment Detail
ابحث عن
paymentId باستخدام secret key الخاص بك للتحقق من حالته مباشرةً.result.status وحده.
تخصيص المظهر
خصّص زر الإغلاق في اللوحة، ونمط العرض، ونظام الألوان عبرcustomization على start(...). جميع الحقول اختيارية؛ ويؤدي حذف
customization إلى استخدام مظهر SFSafariViewController الافتراضي في iOS.
DismissButtonStyle
تسمية زر الإغلاق أو أيقونته:
done أو close أو cancel.PresentationStyle
يظهر
pageSheet كبطاقة يمكن إغلاقها بالسحب؛ بينما يغطي fullScreen الشاشة بأكملها.Bool
يتيح طي شريط الأدوات عند التمرير. يظهر فقط عندما تكون
presentationStyle هي fullScreen — ويحافظ pageSheet على تثبيت الأشرطة بصرف النظر عن هذا الإعداد.ColorScheme
يفرض المظهر الفاتح أو الداكن بغض النظر عن إعداد النظام في الجهاز:
system أو light أو dark.الأخطاء
يُصدرstart استثناءً من CheckoutError فقط عند إساءة الاستخدام أو حدوث عطل في المنصة. أما عملية الدفع الملغاة أو المرفوضة فهي نتيجة دائمًا وليست استثناءً.
invalidCheckoutUrl(INVALID_CHECKOUT_URL): ليس عنوان URL لجلسةcheckout.dodopayments.com.invalidReturnUrl(INVALID_RETURN_URL): ليس عنوان URL مطلقًا صالحًا.alreadyInProgress(ALREADY_IN_PROGRESS): عملية دفع قيد التشغيل بالفعل.platformError(PLATFORM_ERROR): عطل غير متوقع في المنصة.
الجلسات المتروكة
إذا أُغلِق التطبيق قسرًا أثناء إتمام عملية الدفع، فاستعد الجلسة عند التشغيل التالي وطابقها مع الواجهة الخلفية لديك.
ذات صلة
Mobile Integration Guide
العقد نفسه لنظام Android وReact Native وFlutter.
React Native SDK
يغلّف نواة Swift نفسها على iOS.