इस गाइड में, ज़रूरी शर्तें पूरी करने वाले ऐप्लिकेशन और इलाकों में, बाहरी ऑफ़र की सुविधा देने के लिए, एपीआई को इंटिग्रेट करने का तरीका बताया गया है. ऐप्लिकेशन के बाहर ऑफ़र वगैरह प्रमोट करने का प्रोग्राम के बारे में ज़्यादा जानने के लिए, प्रोग्राम की ज़रूरी शर्तें देखें. इसमें, ज़रूरी शर्तें पूरी करने के लिए, भौगोलिक दायरे और अन्य ज़रूरी शर्तों के बारे में जानकारी दी गई है.
Play Billing Library सेट अप करना
External offers APIs का इस्तेमाल करने के लिए, अपने Android ऐप्लिकेशन में Play Billing Library के 8.2.1 या इससे नए वर्शन की डिपेंडेंसी जोड़ें. अगर आपको किसी पुराने वर्शन से माइग्रेट करना है, तो बाहरी ऑफ़र लागू करने से पहले, माइग्रेशन गाइड में दिए गए निर्देशों का पालन करें.
Google Play से कनेक्ट करें
इंटिग्रेशन की प्रोसेस के पहले चरण,
बिलिंग इंटिग्रेशन गाइड में बताए गए चरणों की तरह ही होते हैं. हालांकि, आपको बाहरी ऑफ़र की सुविधा का इस्तेमाल करना है, यह बताने के लिए
enableBillingProgram को कॉल करना होगा. यह कॉल
को शुरू करते समय BillingClient करें:
यहां दिए गए उदाहरण में, इन बदलावों के साथ BillingClient को शुरू करने का तरीका बताया गया है:
Kotlin
val billingClient = BillingClient.newBuilder(context) .enableBillingProgram( EnableBillingProgramParams.newBuilder() .setBillingProgram(BillingProgram.EXTERNAL_OFFER) .build() ) .build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableBillingProgram(BillingProgram.EXTERNAL_OFFER)
.build();
BillingClient को शुरू करने के बाद, आपको Google Play से कनेक्शन बनाना होगा. इसके बारे में, इंटिग्रेशन गाइड में बताया गया है.
उपलब्धता की जानकारी पाएं
यह पुष्टि करने के लिए कि मौजूदा उपयोगकर्ता के लिए बाहरी ऑफ़र उपलब्ध हैं या नहीं, कॉल करें
isBillingProgramAvailableAsync.
अगर बाहरी ऑफ़र उपलब्ध हैं, तो यह एपीआई BillingResponseCode.OK दिखाता है.
अन्य रिस्पॉन्स कोड के बारे में जानने के लिए, रिस्पॉन्स मैनेज करना देखें. इससे यह पता चलता है कि आपके ऐप्लिकेशन को इन कोड के लिए कैसे जवाब देना चाहिए
.
Kotlin
billingClient.isBillingProgramAvailableAsync( BillingProgram.EXTERNAL_OFFER, object : BillingProgramAvailabilityListener { override fun onBillingProgramAvailabilityResponse( billingResult: BillingResult, billingProgramAvailabilityDetails: BillingProgramAvailabilityDetails ) { if (billingResult.responseCode != BillingResponseCode.OK) { // Handle failures such as retrying due to network errors, // handling external offers unavailable, etc. return } // External offers are available. Continue with steps in the // guide. } } )
Java
billingClient.isBillingProgramAvailableAsync(
BillingProgram.EXTERNAL_OFFER,
new BillingProgramAvailabilityListener() {
@Override
public void onBillingProgramAvailabilityResponse(
BillingResult billingResult,
BillingProgramAvailabilityDetails billingProgramAvailabilityDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external offers being unavailable, etc.
return;
}
// External offers are available. Continue with steps in the
// guide.
}
});
बाहरी लेन-देन का टोकन तैयार करना
Google Play को बाहरी लेन-देन की जानकारी देने के लिए, आपके पास Play Billing Library से जनरेट किया गया बाहरी लेन-देन का टोकन होना चाहिए. createBillingProgramReportingDetailsAsync एपीआई को कॉल करके, यह
टोकन पाया जा सकता है. उपयोगकर्ता को बाहरी ऑफ़र के लिए, ऐप्लिकेशन से बाहर ले जाने से ठीक पहले, नया टोकन जनरेट करना ज़रूरी है. टोकन को लेन-देन के बीच कैश नहीं किया जाना चाहिए.
Kotlin
val params = BillingProgramReportingDetailsParams.newBuilder() .setBillingProgram(BillingProgram.EXTERNAL_OFFER) .build() billingClient.createBillingProgramReportingDetailsAsync( params, object : BillingProgramReportingDetailsListener { override fun onCreateBillingProgramReportingDetailsResponse( billingResult: BillingResult, billingProgramReportingDetails: BillingProgramReportingDetails? ) { if (billingResult.responseCode != BillingResponseCode.OK) { // Handle failures such as retrying due to network errors. return } val externalTransactionToken = billingProgramReportingDetails?.externalTransactionToken // Persist the transaction token in your backend. You may pass it // to the external website when calling the launchExternalLink API. } } )
Java
BillingProgramReportingDetailsParams params =
BillingProgramReportingDetailsParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_OFFER)
.build();
billingClient.createBillingProgramReportingDetailsAsync(
params,
new BillingProgramReportingDetailsListener() {
@Override
public void onCreateBillingProgramReportingDetailsResponse(
BillingResult billingResult,
@Nullable BillingProgramReportingDetails
billingProgramReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
billingProgramReportingDetails.getExternalTransactionToken();
// Persist the transaction token in your backend. You may pass it
// to the external website when calling the launchExternalLink API.
}
});
इसके अलावा, Kotlin एक्सटेंशन की मदद से, सस्पेंड फ़ंक्शन
createBillingProgramReportingDetailsAsync को क्वेरी किया जा सकता है. इससे आपको लिसनर तय करने की ज़रूरत नहीं होगी:
val createBillingProgramReportingDetailsResult = withContext(coroutineContext) { billingClient .createBillingProgramReportingDetails(params) } // Process the result
बाहरी ऑफ़र के फ़्लो को लॉन्च करना
बाहरी ऑफ़र का फ़्लो शुरू करने के लिए, ज़रूरी शर्तें पूरी करने वाले ऐप्लिकेशन को अपने ऐप्लिकेशन के मुख्य थ्रेड से,
launchExternalLink() एपीआई को कॉल करना होगा. यह एपीआई,
LaunchExternalLinkParams ऑब्जेक्ट का इनपुट लेता है. ऑब्जेक्ट बनाने के लिए, क्लास का इस्तेमाल करें.LaunchExternalLinkParamsLaunchExternalLinkParams.Builder इस क्लास में ये पैरामीटर शामिल होते हैं:
- linkUri - उस बाहरी वेबसाइट का लिंक जहां डिजिटल कॉन्टेंट या ऐप्लिकेशन डाउनलोड करने का ऑफ़र दिया जा रहा है. ऐप्लिकेशन डाउनलोड करने के लिए, इस लिंक को Play Console में रजिस्टर और मंज़ूरी मिलनी चाहिए.
- linkType - उपयोगकर्ता को ऑफ़र किए जा रहे कॉन्टेंट का टाइप.
- launchMode - इससे पता चलता है कि लिंक कैसे लॉन्च किया जाता है. ऐप्लिकेशन डाउनलोड करने के लिए, आपको इसे
LAUNCH_IN_EXTERNAL_BROWSER_OR_APPपर सेट करना होगा. - billingProgram - इसे
BillingProgram.EXTERNAL_OFFERपर सेट करें.
launchExternalLink() को कॉल करने पर, उपयोगकर्ता की सेटिंग के आधार पर, उसे अतिरिक्त जानकारी
वाले डायलॉग दिख सकते हैं. launchMode पैरामीटर के आधार पर, Play या तो लिंक यूआरआई को किसी बाहरी ब्राउज़र में लॉन्च करता है या यूआरआई को लॉन्च करने के लिए, फ़्लो को आपके ऐप्लिकेशन पर वापस भेजता है. ज़्यादातर मामलों में, आप
LAUNCH_IN_EXTERNAL_BROWSER_OR_APP मोड का इस्तेमाल कर सकते हैं, जिसमें Play आपके लिए यूआरआई
लॉन्च करेगा. अगर आपको ज़्यादा कस्टमाइज़ किया गया व्यवहार चाहिए, जैसे कि वेबव्यू में यूआरआई लॉन्च करना
या किसी खास ब्राउज़र में यूआरआई खोलना, तो
CALLER_WILL_LAUNCH_LINK मोड का इस्तेमाल किया जा सकता है. उपयोगकर्ता की निजता की सुरक्षा के लिए, पक्का करें कि यूआरआई में व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) न दी गई हो.
Kotlin
// An activity reference from which the external offers flow will be launched. val activity = this.activity val params = LaunchExternalLinkParams.newBuilder() .setBillingProgram(BillingProgram.EXTERNAL_OFFER) // You can pass along the external transaction token from // BillingProgramReportingDetails as a URL parameter in the URI .setLinkUri(yourLinkUri) .setLinkType(LaunchExternalLinkParams.LinkType.LINK_TO_APP_DOWNLOAD) .setLaunchMode( LaunchExternalLinkParams.LaunchMode.LAUNCH_IN_EXTERNAL_BROWSER_OR_APP ) .build() val listener: LaunchExternalLinkResponseListener = LaunchExternalLinkResponseListener { billingResult -> if (billingResult.responseCode == BillingResponseCode.OK) { // Proceed with the rest of the external offer flow. If the user // purchases an item, be sure to report the transaction to Google Play. } else { // Handle failures such as retrying due to network errors. } } billingClient.launchExternalLink(activity, params, listener)
Java
// An activity reference from which the external offers flow will be launched.
Activity activity = ...;
LaunchExternalLinkParams params = LaunchExternalLinkParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_OFFER)
// You can pass along the external transaction token from
// BillingProgramReportingDetails as a URL parameter in the URI
.setLinkUri(yourLinkUri)
.setLinkType(LaunchExternalLinkParams.LinkType.LINK_TO_APP_DOWNLOAD)
.setLaunchMode(
LaunchExternalLinkParams.LaunchMode.LAUNCH_IN_EXTERNAL_BROWSER_OR_APP)
.build();
LaunchExternalLinkResponseListener listener =
new LaunchExternalLinkResponseListener() {
@Override
public void onLaunchExternalLinkResponse(BillingResult billingResult) {
if (billingResult.responseCode == BillingResponseCode.OK) {
// Proceed with the rest of the external offer flow. If the user
// purchases an item, be sure to report the transaction to Google
// Play.
} else {
// Handle failures such as retrying due to network errors.
}
}
}
billingClient.launchExternalLink(activity, params, listener);
अगर आपने LaunchMode को CALLER_WILL_LAUNCH_LINK पर सेट किया है, तो उपयोगकर्ता को ऐप्लिकेशन से बाहर तब ही ले जाएं, जब onLaunchExternalLinkResponse, BillingResponseCode.OK दिखाता हो.
Google Play को लेन-देन की जानकारी देना
आपको अपने बैकएंड से Google Play Developer API को कॉल करके, Google Play को सभी बाहरी लेन-देन की जानकारी देनी होगी. लेन-देन की जानकारी देते समय, आपको externalTransactionToken देना होगा जो
createBillingProgramReportingDetailsAsync एपीआई से मिला है. अगर कोई उपयोगकर्ता एक से ज़्यादा खरीदारी करता है, तो हर खरीदारी की जानकारी देने के लिए, एक ही externalTransactionToken का इस्तेमाल किया जा सकता है. लेन-देन की जानकारी देने का तरीका जानने के लिए, बैकएंड इंटिग्रेशन गाइड देखें.
जवाब मैनेज करना
गड़बड़ी होने पर, isBillingProgramAvailableAsync(), createBillingProgramReportingDetailsAsync(), और launchExternalLink() तरीके, BillingResponseCode.OK के अलावा अन्य जवाब दिखा सकते हैं. इन रिस्पॉन्स कोड को इस तरह मैनेज करें:
ERROR: यह एक इंटरनल गड़बड़ी है. लेन-देन या बाहरी वेबसाइट को खोलने की प्रोसेस को आगे न बढ़ाएं. उपयोगकर्ता को ऐप्लिकेशन से बाहर ले जाने की अगली कोशिश में, जानकारी वाला डायलॉग दिखाने के लिए,launchExternalLink()को कॉल करके फिर से कोशिश करें.FEATURE_NOT_SUPPORTED: मौजूदा डिवाइस पर, Play Store में External offers APIs काम नहीं करते. लेन-देन या बाहरी वेबसाइट को खोलने की प्रोसेस को आगे न बढ़ाएं.USER_CANCELED: बाहरी वेबसाइट को खोलने की प्रोसेस को आगे न बढ़ाएं. उपयोगकर्ता को ऐप्लिकेशन से बाहर ले जाने की अगली कोशिश में, जानकारी वाला डायलॉग दिखाने के लिए,launchExternalLink()को फिर से कॉल करें.BILLING_UNAVAILABLE: यह लेन-देन, बाहरी ऑफ़र के लिए ज़रूरी शर्तें पूरी नहीं करता. इसलिए, इसे इस प्रोग्राम के तहत आगे नहीं बढ़ाया जाना चाहिए. ऐसा इसलिए है, क्योंकि उपयोगकर्ता इस प्रोग्राम के लिए ज़रूरी शर्तें पूरी करने वाले देश में नहीं है या आपके खाते को इस प्रोग्राम में रजिस्टर नहीं किया गया है. अगर ऐसा है, तो Play Console में अपने रजिस्ट्रेशन की स्थिति देखें.DEVELOPER_ERROR: अनुरोध में कोई गड़बड़ी है. आगे बढ़ने से पहले, गड़बड़ी की पहचान करने और उसे ठीक करने के लिए, डीबग मैसेज का इस्तेमाल करें.NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE: ये अस्थायी गड़बड़ियां हैं. इन्हें ठीक करने के लिए, फिर से कोशिश करने की सही नीति का इस्तेमाल करना चाहिए.SERVICE_DISCONNECTEDहोने पर, फिर से कोशिश करने से पहले, Google Play से कनेक्शन फिर से बनाएं.
बाहरी ऑफ़र की जांच करना
बाहरी ऑफ़र के इंटिग्रेशन की जांच करने के लिए, लाइसेंस टेस्टर का इस्तेमाल किया जाना चाहिए. लाइसेंस टेस्टर खातों से शुरू किए गए लेन-देन के लिए, आपको इनवॉइस नहीं भेजा जाएगा. लाइसेंस टेस्टर कॉन्फ़िगर करने के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन का लाइसेंस देने के साथ इन-ऐप्लिकेशन बिलिंग की जांच करना देखें.
अगले चरण
इन-ऐप्लिकेशन इंटिग्रेशन पूरा करने के बाद, अपने बैकएंड को इंटीग्रेट किया जा सकता है.