Skip to main content
यह आधिकारिक 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

अपने scheme के लिए ios/Runner/Info.plist में URL type जोड़ें:
ios/Runner/Info.plist
इसके बाद आने वाले URLs को (उदाहरण के लिए app_links के माध्यम से) SDK में forward करें, क्योंकि SFSafariViewController अपना return URL स्वयं catch नहीं कर सकता:
यहाँ हर URL को forward करना सुरक्षित है। handleOpenURL केवल उन URLs पर काम करता है जो आपके registered returnUrl से match करते हैं और अन्य सभी के लिए false resolve करता है।

Usage

Result का अर्थ

result.status एक UI hint है, payment का proof नहीं। हर payment की पुष्टि अपने backend से, payment.succeeded / subscription.active webhook के माध्यम से करें।
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 करें।
Access तभी दें जब इनमें से कोई payment की पुष्टि करे, केवल 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 उपयोग होता है।
Color?
Toolbar का background color।
Color?
Navigation bar का color।
Color?
Navigation bar के ऊपर divider का color।
CloseButtonStyle
standard system का “X” icon दिखाता है; back इसके बजाय back arrow बनाता है।
CloseButtonPosition
Toolbar के किस side पर close button दिखाई देता है।
bool
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 लागू करता है।
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): valid checkout.dodopayments.com session 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 करें।

Mobile Integration Guide

Android, iOS और React Native के लिए वही contract।

Community Projects

एक अलग, community-built Flutter package भी उपलब्ध है।
अंतिम संशोधन 17 अगस्त 2026