Android APK की पुष्टि करने वाला एपीआई

पुष्टि, तीन अलग-अलग एनवायरमेंट में हो सकती है:

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

फ़्लो चाहे जो भी हो, Google, उपयोगकर्ता इंटरैक्शन को पेमेंट इंटिग्रेटर के सॉफ़्टवेयर में भेज देता है. पेमेंट इंटीग्रेटर के पास यह चुनने का विकल्प होता है कि उसे उपयोगकर्ता को कोई इंटरफ़ेस दिखाना है या उसके पास ज़रूरत के मुताबिक डेटा होने पर उसे तुरंत वापस करना है. सभी फ़्लो का नतीजा, इंटिग्रेटर से पुष्टि करने वाला रिस्पॉन्स तैयार करने में होता है. इस जवाब पर हस्ताक्षर करके, Google को वापस भेज दिया गया है.

मोबाइल और डेस्कटॉप वेबसाइटों को Webredirect Authentication API के नियमों का पालन करना होगा, जबकि Android ऐप्लिकेशन फ़्लो को Android पुष्टि करने वाले एपीआई के निर्देशों का पालन करना होगा.

उपयोगकर्ताओं की पुष्टि करने के लिए, इंटिग्रेटर को Android APK समाधान लागू करना चाहिए. पुष्टि करने का यह एक अलग तरीका है. हालांकि, इसका मकसद वेब पुष्टि करने से मिलने वाली पुष्टि के समान ही होता है.

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

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

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

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

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

अनुरोध

फ़ील्ड
gspAuthenticationRequest AuthenticationRequest

पुष्टि करने का अनुरोध.

gspAssociationId string

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

जवाब

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

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

नतीजा

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

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

बोनस वीडियो

फ़ील्ड
gspAuthenticationResponse AuthenticationResponse

पुष्टि की गई. कोड में बदली गई यह वैल्यू 1 केबी से ज़्यादा नहीं होनी चाहिए.

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

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

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


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

  ....
}

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