Android APK टॉप अप एपीआई

टॉप अप तीन अलग-अलग एनवायरमेंट में हो सकता है:

  • पेमेंट इंटिग्रेटर का Android ऐप्लिकेशन
  • पेमेंट इंटिग्रेटर की मोबाइल वेबसाइट
  • पेमेंट इंटिग्रेटर की डेस्कटॉप वेबसाइट

फ़्लो चाहे जो भी हो, Google, उपयोगकर्ता इंटरैक्शन को पेमेंट इंटिग्रेटर के सॉफ़्टवेयर में भेज देता है. पेमेंट इंटिग्रेटर, ऐसा यूज़र इंटरफ़ेस (यूआई) लागू करता है जो उपयोगकर्ता के लिए जाना-पहचाना लगे. हालांकि, फ़्लो को खास तौर पर उपयोगकर्ता के बैलेंस के हिसाब से बनाया जाना चाहिए. इसका मतलब है कि उपयोगकर्ता को किसी सामान्य यूज़र इंटरफ़ेस (यूआई) पर जाने के बजाय, टॉप-अप प्रोसेस से गुज़रना होगा.

सभी फ़्लो की वजह से, इंटीग्रेटर TopUpRedirectResponse बनाता है. इस जवाब पर हस्ताक्षर करके, Google को वापस भेज दिया जाता है.

मोबाइल और डेस्कटॉप वेबसाइटों के लिए यह ज़रूरी है कि वे वेब टॉप अप एपीआई के निर्देशों का पालन करें. जबकि Android ऐप्लिकेशन फ़्लो को Android टॉप अप एपीआई के निर्देशों के हिसाब से होना चाहिए.

इंटिग्रेटर को Android APK समाधान लागू करना चाहिए, ताकि उपयोगकर्ता की पुष्टि की जा सके और उन्हें ऐसे फ़्लो के ज़रिए निर्देश दिया जा सके जहां वे अपना बैलेंस टॉप-अप कर सकें. यह टॉप अप एक अलग मोडलिटी है. हालांकि, इसका इस्तेमाल वेब टॉप अप की मदद से उपलब्ध कराए गए टॉप अप के मकसद के लिए ही किया जाता है.

कोई उपयोगकर्ता, किसी Android गतिविधि की मदद से, पेमेंट इंटिग्रेटर ऐप्लिकेशन पर फ़्लो में आता है. टॉप अप इंटेंट, सीधे किसी ऐसे Play ऐप्लिकेशन से शुरू किया जा सकता है जहां उपयोगकर्ता खरीदारी करना चाहता है. टॉप अप के दौरान Android को बैकग्राउंड में Play को बंद करने से रोकने के लिए, इंटिग्रेटर को गतिविधि थीम में नीचे दी गई जानकारी शामिल करनी होगी.

<item name="android:windowIsTranslucent">true</item>

तरीके की परिभाषा

इंटेंट में ये प्रॉपर्टी होनी चाहिए:

तरीके की प्रॉपर्टी
कार्रवाई com.google.android.payments.standard.TOPUP_V1
कैटगरी android.intent.category.DEFAULT

अनुरोध

फ़ील्ड
gspTopUpRequest TopUpRedirectRequest

टॉप-अप का अनुरोध.

gspAssociationId string

इसमें एक ऐसा आइडेंटिफ़ायर होता है जिसका इस्तेमाल करके इंटिग्रेटर, उस खाते के क्रेडेंशियल खोजता है जिसे उपयोगकर्ता टॉप अप कर रहा है. यह असोसिएशन आईडी है, जो AssociatedAccountRequest में खाता लिंक करने के दौरान भेजा जाता है.

जवाब

उपयोगकर्ता के टॉप-अप फ़्लो को पूरा कर लेने के बाद, आपके ऐप्लिकेशन को Google को नतीजे के तौर पर इंटेंट वापस भेजना होगा. अगर टॉप-अप हो जाता है, तो इंटेंट बनाएं. साथ ही, एन्क्रिप्ट (सुरक्षित) किए गए कोड में बदले गए gspTopUpResponse और redirectRequestId को अतिरिक्त के तौर पर जोड़ें. इसके बाद, गतिविधि के नतीजे को सही नतीजे के कोड पर सेट करें.

...
result.setExtra("gspTopUpResponse", gspTopUpResponse);
result.setExtra("redirectRequestId", redirectRequestId);
setResult(Activity.RESULT_OK, result);
...
finish();

नतीजा

फ़ील्ड
नतीजा int

Activity.RESULT_OK
टॉप-अप की प्रोसेस पूरी हुई.
Activity.RESULT_CANCELED उपयोगकर्ता ने फ़्लो को मैन्युअल तरीके से रद्द कर दिया है और अब फ़्लो को रद्द कर दिया जाएगा.
Activity.RESULT_FIRST_USER किसी गंभीर वजह से टॉप-अप नहीं हो सका. इसलिए, फ़्लो को रद्द कर दिया जाना चाहिए. IE सर्वर ने लॉगिन करने पर एचटीटीपी 500 रिस्पॉन्स दिखाया.

बोनस वीडियो

फ़ील्ड
gspTopUpResponse TopUpRedirectResponse

ज़रूरी है: टॉप-अप किया गया जवाब. कोड में बदली गई यह वैल्यू 1 केबी से ज़्यादा नहीं होनी चाहिए.
redirectRequestId string

ज़रूरी: मूल/शुरू किए जा रहे रीडायरेक्ट पेमेंट के अनुरोध में भेजा गया requestId. Google पुष्टि करेगा कि यह भेजे गए requestId से मेल खाता है या नहीं. अगर यह मेल नहीं खाता है, तो पूरा रीडायरेक्ट फ़्लो काम नहीं करेगा.

अन्य गतिविधि की शर्तें

ऊपर बताई गई TOPUP_V1 कार्रवाई के साथ काम करने वाली गतिविधि में, इस बात की भी जांच करनी होगी कि एपीआई के कॉलर सिर्फ़ Google के साइन किए हुए ऐप्लिकेशन से आते हैं. इससे दूसरे ऐप्लिकेशन को आपकी गतिविधि शुरू करने और उपयोगकर्ता का डेटा वापस पाने से रोकने में मदद मिलेगी. ऐसा करने के लिए, आपकी गतिविधि लागू करने के super.onCreate बाद, दिए गए StandardPaymentUtils.verifyCallingActivityIsGoogleSigned का इस्तेमाल करें.

यहां एक नमूना दिया गया है:


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);

  ....
}

टॉप-अप फ़्लो में शुरू की गई सभी गतिविधियों को, windowIsTranslucent=true वाली गतिविधि थीम देनी होगी. Context.setTheme() का इस्तेमाल किए बिना, AndroidManifest android:theme एट्रिब्यूट का इस्तेमाल करके ऐसा किया जाना चाहिए. प्रोग्राम के हिसाब से, थीम सेट करने की सुविधा, विंडो पारदर्शिता के लिए ठीक से काम नहीं करती. Google यह लागू करेगा कि लॉन्च की गई पहली गतिविधि इस पैटर्न के हिसाब से हो. हालांकि, लॉन्च की गई सभी सब गतिविधियों को भी इस पैटर्न का पालन करना होगा. अगर ऐसा नहीं है, तो हो सकता है कि तीसरे पक्ष के डेवलपर से की गई खरीदारी काम न करे.