असली उपयोगकर्ता के Google Wallet में सेव करने के लिए, आपके पास करीब-करीब सभी पास की जानकारी होती है. ये दो कॉम्पोनेंट होते हैं: पास की क्लास और पास ऑब्जेक्ट. किसी उपयोगकर्ता को पास जारी करने के लिए, आपको पास क्लास और पास ऑब्जेक्ट, दोनों के इंस्टेंस की ज़रूरत होगी. इससे 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
प्रॉपर्टी की ज़रूरत होती है, जिसके बारे में आपने जानकारी दी हो. यह क्लास आईडी
एक यूनीक आइडेंटिफ़ायर के तौर पर काम करता है. इसका इस्तेमाल करके, नया पास ऑब्जेक्ट इंस्टेंस
बनाते समय इसका रेफ़रंस दिया जा सकता है.
ऑब्जेक्ट पास करता है
पास की कैटगरी का एक इंस्टेंस, एक या एक से ज़्यादा पास में इस्तेमाल की जाने वाली शेयर की गई प्रॉपर्टी के सेट के बारे में बताता है. वहीं, पास ऑब्जेक्ट उस पास की खास जानकारी बताता है जिसे किसी उपयोगकर्ता को जारी किया गया है.
उदाहरण के लिए, जब 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
प्रॉपर्टी की ज़रूरत होती है. यह ऑब्जेक्ट आईडी
यूनीक आइडेंटिफ़ायर के तौर पर काम करता है. किसी उपयोगकर्ता को पास जारी करते समय इसका इस्तेमाल किया जाता है.
पास की क्लास, पास ऑब्जेक्ट के साथ कैसे काम करती हैं
पास ऑब्जेक्ट को, पास क्लास के इंस्टेंस को बढ़ाना चाहिए. इसके लिए, इसके क्लास आईडी का इस्तेमाल करें या पास क्लास की पूरी परिभाषा शामिल करें. पास क्लास और पास ऑब्जेक्ट इंस्टेंस के बीच इस संबंध का मतलब है कि उन प्रॉपर्टी को सेट और अपडेट किया जा सकता है जो पास्स क्लास इंस्टेंस के ज़रिए जारी किए गए सभी पास के लिए सामान्य हैं. साथ ही, पास ऑब्जेक्ट इंस्टेंस में किसी पास की यूनीक प्रॉपर्टी को सेट और अपडेट किया जा सकता है.
उदाहरण के लिए, इवेंट के सामान्य पास के नीचे दिए गए डायग्राम में दिखाया गया है कि शेयर किए गए EventTicketClass
में तय किए गए फ़ील्ड और EventTicketObject
में तय किए गए किसी टिकट के फ़ील्ड, जारी किए जाने वाले पास को बनाने के लिए साथ में जोड़े जाते हैं. ध्यान दें कि पास ऑब्जेक्ट की classId
प्रॉपर्टी में, पास क्लास के आईडी का रेफ़रंस कैसे दिया जाता है.
पास क्लास के इंस्टेंस में किए गए बदलाव, उन सभी पास ऑब्जेक्ट इंस्टेंस पर तुरंत लागू हो जाएंगे जिनमें इससे जुड़ा रेफ़रंस है. आपने पास क्लास के इंस्टेंस में जो भी बदलाव किए हैं वे अगली बार सिंक करने पर, उन्हें अपने Google Wallet ऐप्लिकेशन में पास में दिखेंगे.
उपयोगकर्ता के Google Wallet में पास की जानकारी जोड़ी जा रही है
उपयोगकर्ता के Google Wallet में पास की जानकारी जोड़ने के लिए, आपको एक JSON वेब टोकन (JWT) बनाना होता है. इसमें यह दावे शामिल होते हैं कि आपके (जारी करने वाले) पास ऑब्जेक्ट के इंस्टेंस के बारे में दावा कर रहे हैं. इस ऑब्जेक्ट को उपयोगकर्ता के Google Wallet में सेव किया जाएगा. सबसे अहम बात, पास ऑब्जेक्ट इंस्टेंस का ऑब्जेक्ट आईडी होता है. इसे उपयोगकर्ता को जारी किया जाता है. इसके बाद, उपयोगकर्ता को JWT Google Wallet में जोड़ें बटन या Google Wallet में जोड़ें लिंक की मदद से डिलीवर किया जाता है.
जब कोई उपयोगकर्ता अपने Google Wallet में जारी किए गए पास को जोड़ने के लिए बटन या लिंक पर क्लिक करता है, तो JWT में कोड में बदला गया पास्स ऑब्जेक्ट इंस्टेंस, उस उपयोगकर्ता के Google खाते से लिंक हो जाता है. इसका मतलब है कि जब उपयोगकर्ता बटन को फिर से क्लिक करता है, तो उस पास ऑब्जेक्ट के साथ एक लिंक पहले से मौजूद होता है. इससे, उपयोगकर्ता के वॉलेट में डुप्लीकेट कॉपी नहीं जोड़ी जातीं.
अगर कोई उपयोगकर्ता Google Wallet ऐप्लिकेशन से किसी पास को हटाता है, तो उससे जुड़े पास ऑब्जेक्ट इंस्टेंस को अपने-आप उपयोगकर्ता से हटा दिया जाता है. हालांकि, इसे मिटाया नहीं जाता है. इसका मतलब है कि उपयोगकर्ता Google Wallet में जोड़ें बटन या लिंक पर फिर से क्लिक कर सकता है. इससे, पास को सेव करने के लिए, नया पास ऑब्जेक्ट इंस्टेंस या JWT बनाने की ज़रूरत नहीं पड़ती.