यह आधिकारिक Dodo Payments Flutter package है (
dodopayments_checkout
pub.dev पर)। एक अलग, community-built package भी उपलब्ध है, देखें
Community Projects।Checkout Sessions API
अपने backend से वह checkout_url बनाएँ जिसे यह SDK खोलेगा।
Mobile Integration Guide
देखें कि यह पूरे mobile payment flow में कैसे शामिल होता है।
dodopayments_checkout, iOS पर Dodo का hosted checkout
SFSafariViewController में और Android पर Chrome Custom Tab में खोलता है — वही
native cores जिन्हें standalone iOS और
Android SDKs इस्तेमाल करते हैं। Checkout का पूरा logic
उन्हीं native cores में रहता है; Dart layer typed
Pigeon channel के माध्यम से call आगे भेजती है। इसमें कोई API key नहीं होती और
यह कभी भी Dodo Payments API को call नहीं करता।
इसके लिए Flutter 3.44+ / Dart 3.12+, iOS 16+ और Android minSdk 23 आवश्यक हैं।
Installation
1
Add the Dependency
pubspec.yaml
2
Register a Callback URL Scheme
- iOS
- Android
अपने scheme के लिए इसके बाद आने वाले URLs को (उदाहरण के लिए
ios/Runner/Info.plist में URL type जोड़ें:ios/Runner/Info.plist
app_links के माध्यम से) SDK में forward करें, क्योंकि
SFSafariViewController अपना return URL स्वयं catch नहीं कर सकता:यहाँ हर URL को forward करना सुरक्षित है।
handleOpenURL केवल उन URLs पर काम करता है
जो आपके registered returnUrl से match करते हैं और अन्य सभी के लिए
false resolve करता है।Usage
Result का अर्थ
CheckoutStatus
आवश्यक
इनमें से एक:
succeeded, failed, cancelled, pending, expired।String?
जब return URL में इनमें से कोई शामिल हो, तब set होता है। इसे UI में दिखाएँ, access देने के लिए इसका उपयोग न करें। नीचे Verify the Payment देखें।
String?
Subscription checkouts के लिए set होता है।
List<String>?
जब checkout में license key products शामिल होते हैं, तब set होता है।
String?
जब checkout कोई email capture करता है, तब set होता है।
Map<String, String>
Return URL का हर query parameter, verbatim।
Payment की पुष्टि करें
Webhooks
Payment सफल होने या subscription activate होने पर Dodo Payments आपके backend को call करता है।
Get Payment Detail
इसकी स्थिति सीधे जाँचने के लिए अपने secret key से
paymentId को look up करें।result.status के आधार पर कभी नहीं।
Appearance Customization
checkout browser के toolbar, buttons और color scheme कोcustomization के माध्यम से CheckoutParams पर customize करें। Options को platform के अनुसार group किया गया है, क्योंकि Android का Custom Tab और iOS का SFSafariViewController अलग-अलग native controls expose करते हैं। सभी fields optional हैं; customization को छोड़ने पर प्रत्येक platform का default appearance उपयोग होता है।
Android — Custom Tab
Android — Custom Tab
Color?
Toolbar का background color।
Navigation bar का color।
Navigation bar के ऊपर divider का color।
CloseButtonStyle
standard system का “X” icon दिखाता है; back इसके बजाय back arrow बनाता है।CloseButtonPosition
Toolbar के किस side पर close button दिखाई देता है।
Toolbar का share icon दिखाता है।
bool
Toolbar में URL के नीचे page title दिखाता है।
bool
Page scroll होने पर toolbar को auto-hide होने देता है।
bool
Overflow menu में “Bookmark this page” दिखाता है।
bool
Overflow menu में “Download page” दिखाता है।
BrowserColorScheme
Device की system setting की परवाह किए बिना light या dark appearance लागू करता है।
iOS — SFSafariViewController
iOS — SFSafariViewController
DismissButtonStyle
Dismiss button के लिए label या icon।
PresentationStyle
pageSheet swipe-to-dismiss वाले card के रूप में दिखाई देता है; fullScreen पूरी screen को cover करता है।bool
Scroll करने पर toolbar को collapse होने देता है। केवल तभी दिखाई देता है जब
presentationStyle, fullScreen हो — pageSheet इस setting की परवाह किए बिना bars को pinned रखता है।BrowserColorScheme
Device की system setting की परवाह किए बिना light या dark appearance लागू करता है।
Errors
start केवल गलत उपयोग या platform failure के लिए CheckoutException throw करता है।
Cancelled या declined payment हमेशा result होता है, exception नहीं।
invalidCheckoutUrl(INVALID_CHECKOUT_URL): validcheckout.dodopayments.comsession URL नहीं है।invalidReturnUrl(INVALID_RETURN_URL): valid absolute URL नहीं है।alreadyInProgress(ALREADY_IN_PROGRESS): checkout पहले से चल रहा है।platformError(PLATFORM_ERROR): unexpected platform failure।
Abandoned Sessions
यदि checkout के दौरान app बंद हो जाता है, तो अगली launch पर session recover करें और
इसे अपने backend के साथ reconcile करें।
Related
Mobile Integration Guide
Android, iOS और React Native के लिए वही contract।
Community Projects
एक अलग, community-built Flutter package भी उपलब्ध है।