पास क्लास और ऑब्जेक्ट की खास जानकारी

किसी असली उपयोगकर्ता के 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 बनाने की ज़रूरत नहीं है.