आपके पास किसी व्यक्ति के लिए, Google Wallet में सेव करने के लिए लगभग सभी पास जारी करने का विकल्प होता है. इन पास को दो कॉम्पोनेंट से तय किया जाता है: पास की क्लास और पास का ऑब्जेक्ट. किसी उपयोगकर्ता को पास जारी करने के लिए, आपको Passes Class और Passes Object, दोनों के इंस्टेंस की ज़रूरत होगी. इससे Google Wallet API को यह पता चलेगा कि किस तरह का पास बनाना है. साथ ही, पास पर कौनसी जानकारी दिखानी है. जैसे, उपहार कार्ड की वैल्यू या टिकट खरीदने वाले का नाम.
Google Wallet API, पास की क्लास और पास के ऑब्जेक्ट का पहले से तय किया गया सेट उपलब्ध कराता है. इनकी मदद से, पास के इंस्टेंस बनाए जाते हैं. इसके बाद, इनका इस्तेमाल करके ऐसा पास बनाया जाता है जिसे किसी उपयोगकर्ता को जारी किया जाता है. जैसे, GiftCardClass और GiftCardObject, GenericClass और GenericObject वगैरह.
हर पास क्लास और पास ऑब्जेक्ट इंस्टेंस को JSON ऑब्जेक्ट के तौर पर तय किया जाता है. इसमें ज़रूरी और वैकल्पिक प्रॉपर्टी का सेट होता है. ये प्रॉपर्टी, पास के टाइप के हिसाब से इस्तेमाल के खास उदाहरण से जुड़ी होती हैं.
पास की क्लास
पास की क्लास को एक शेयर किए गए टेंप्लेट के तौर पर समझें. इसका इस्तेमाल, एक या उससे ज़्यादा पास बनाने के लिए किया जाता है. ये पास, आपको अपने उपयोगकर्ताओं को देने होते हैं. पास की क्लास, प्रॉपर्टी का एक ऐसा सामान्य सेट तय करती है जिसे रेफ़रंस करने वाले सभी पास में शामिल किया जाएगा.
उदाहरण के लिए, EventTicketClass का यह इंस्टेंस उन फ़ील्ड के बारे में बताता है जो आने वाले इवेंट के लिए जारी किए गए सभी टिकट के लिए एक जैसे होते हैं(जगह, इवेंट का नाम, जारी करने वाला, तारीख/समय).
{
"id": "ISSUER_ID.EVENT_CLASS_ID",
"issuerName": "[TEST ONLY] Heraldic Event",
"localizedIssuerName": {
"defaultValue": {
"language": "en-US",
"value": "[TEST ONLY] Heraldic Event"
}
},
"eventName": {
"defaultValue": {
"language": "en-US",
"value": "Google Live"
}
},
"venue": {
"name": {
"defaultValue": {
"language": "en-US",
"value": "Shoreline Amphitheater"
}
},
"address": {
"defaultValue": {
"language": "en-US",
"value": "ADDRESS_OF_THE_VENUE"
}
}
},
"dateTime": {
"start": "2023-04-12T11:30"
},
"reviewStatus": "UNDER_REVIEW"
}
पासेस क्लास के हर इंस्टेंस के लिए, id प्रॉपर्टी की ज़रूरत होती है. इसे आपको तय करना होता है. यह क्लास आईडी, एक यूनीक आइडेंटिफ़ायर के तौर पर काम करता है. इसका इस्तेमाल, नया पास ऑब्जेक्ट इंस्टेंस बनाने के लिए किया जाता है.
ऑब्जेक्ट पास करता है
PassesClass का कोई इंस्टेंस, एक या उससे ज़्यादा पास में इस्तेमाल की जाने वाली शेयर की गई प्रॉपर्टी का सेट तय करता है. वहीं, PassesObject, किसी ऐसे पास की यूनीक जानकारी तय करता है जो किसी उपयोगकर्ता को जारी किया गया है.
उदाहरण के लिए, जब Google Wallet API की मदद से इवेंट टिकट पास बनाया जाता है, तो EventTicketObject इंस्टेंस में उस टिकट को असाइन की गई सीट की प्रॉपर्टी शामिल होती हैं. ऐसा इसलिए, क्योंकि जारी किए गए हर टिकट के लिए ये वैल्यू यूनीक होंगी.
{
"id": "ISSUER_ID.OBJECT_ID",
"classId": "ISSUER_ID.EVENT_CLASS_ID",
"state": "ACTIVE",
"seatInfo": {
"seat": {
"defaultValue": {
"language": "en-us",
"value": "9"
}
},
"row": {
"defaultValue": {
"language": "en-us",
"value": "L"
}
},
"section": {
"defaultValue": {
"language": "en-us",
"value": "45"
}
},
"gate": {
"defaultValue": {
"language": "en-us",
"value": "7C"
}
}
},
"barcode": {
"type": "BARCODE_TYPE_UNSPECIFIED",
"value": "BARCODE_VALUE",
"alternateText": ""
}
}
पासेस ऑब्जेक्ट के हर इंस्टेंस के लिए, id प्रॉपर्टी की ज़रूरत होती है. इसे आपको तय करना होता है. यह ऑब्जेक्ट आईडी, एक यूनीक आइडेंटिफ़ायर के तौर पर काम करता है. जब आपको किसी उपयोगकर्ता को पास जारी करना हो, तब आपको इस आईडी का इस्तेमाल करना होगा.
Passes Classes, Passes Objects के साथ कैसे काम करती हैं
पास ऑब्जेक्ट को, पास क्लास के किसी इंस्टेंस को बढ़ाना होगा. इसके लिए, पास क्लास के आईडी को रेफ़र किया जा सकता है या पास क्लास की पूरी परिभाषा शामिल की जा सकती है. Passes Class और Passes Object इंस्टेंस के बीच इस संबंध का मतलब है कि Passes Class इंस्टेंस के ज़रिए, जारी किए गए सभी पास के लिए सामान्य प्रॉपर्टी सेट और अपडेट की जा सकती हैं. साथ ही, Passes Object इंस्टेंस में किसी पास के लिए यूनीक प्रॉपर्टी सेट की जा सकती हैं.
उदाहरण के लिए, इवेंट के टिकट वाले पास के इस डायग्राम में दिखाया गया है कि शेयर किए गए EventTicketClass में तय किए गए फ़ील्ड और किसी खास टिकट के लिए EventTicketObject में तय किए गए फ़ील्ड, जारी किए गए फ़ाइनल पास को बनाने के लिए कैसे एक साथ काम करते हैं. ध्यान दें कि Passes Class के आईडी को Passes Object की classId प्रॉपर्टी में कैसे रेफ़र किया गया है.
PassesClass ऑब्जेक्ट के किसी इंस्टेंस में किए गए बदलाव, उसे रेफ़र करने वाले सभी PassesObject इंस्टेंस पर तुरंत लागू हो जाएंगे. उपयोगकर्ताओं को, Google Wallet ऐप्लिकेशन में पास सिंक करने पर, पास की क्लास के इंस्टेंस में किए गए सभी बदलाव दिखेंगे.
किसी उपयोगकर्ता के Google Wallet में पास जोड़ना
किसी उपयोगकर्ता के Google Wallet में पास जोड़ने के लिए, आपको एक JSON Web Token (JWT) बनाना होगा. इसमें वे दावे शामिल होते हैं जो जारी करने वाला व्यक्ति या कंपनी, Passes Object इंस्टेंस के बारे में करती है. यह इंस्टेंस, उपयोगकर्ता के Google Wallet में सेव किया जाएगा. इसमें सबसे ज़रूरी है कि Passes Object इंस्टेंस का ऑब्जेक्ट आईडी शामिल हो, जिसे आपको उपयोगकर्ता को जारी करना है. इसके बाद, JWT को उपयोगकर्ता को Google Wallet में जोड़ें बटन या Google Wallet में जोड़ें लिंक के ज़रिए भेजा जाता है.
जब कोई उपयोगकर्ता, जारी किए गए पास को Google Wallet में जोड़ने के लिए बटन या लिंक पर क्लिक करता है, तब JWT में एन्कोड किया गया Passes Object इंस्टेंस का लिंक, उस उपयोगकर्ता के Google खाते से लिंक हो जाता है. इसका मतलब है कि जब उपयोगकर्ता दोबारा बटन पर क्लिक करता है, तो उस पास ऑब्जेक्ट का लिंक पहले से मौजूद होता है. इसलिए, डुप्लीकेट कॉपी उपयोगकर्ता के वॉलेट में नहीं जोड़ी जाएंगी.
अगर कोई उपयोगकर्ता Google Wallet ऐप्लिकेशन से कोई पास हटाता है, तो उससे जुड़ा Passes Object इंस्टेंस, उपयोगकर्ता से अपने-आप अनलिंक हो जाता है. हालांकि, इसे मिटाया नहीं जाता. इसका मतलब है कि उपयोगकर्ता, Google Wallet में जोड़ें बटन पर क्लिक करके या पास को फिर से लिंक करके, उसे सेव कर सकता है. इसके लिए, नए पास ऑब्जेक्ट इंस्टेंस या JWT बनाने की ज़रूरत नहीं होती.