Google Wallet में मोटिक्स टिकट की तकनीकी जानकारी

इस पेज पर, पब्लिक ट्रांज़िट ऑपरेटर (पीटीओ) और तकनीकी जानकारी दी गई है अपने सिस्टम इंटिग्रेटर को Google के साथ इंटिग्रेट करना होगा, ताकि Motics के टिकट उपलब्ध कराए जा सकें के लिए, Google Wallet का इस्तेमाल करें. यह समाधान, Google Wallet API का इस्तेमाल करता है और एक ऐक्टिवेशन एंडपॉइंट लागू करने के लिए पीटीओ पर.

सिस्टम आर्किटेक्चर

इस सेक्शन में सिस्टम आर्किटेक्चर और Motics सेव फ़्लो दिखाया गया है.

मोटिक टिकट सेव फ़्लो अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है पहली इमेज. मोटिक टिकट सेव फ़्लो

पहली इमेज में, मोटिक टिकट बनाने, चालू करने, और पिन करने का फ़्लो दिखाया गया है कई इकाइयों के लिए Google Wallet:

  • Google के सर्वर पर
  • पीटीओ (सिस्टम इंटिग्रेटर) सर्वर
  • Motics SCE सर्वर
  • वेब शॉप

यहां फ़्लो के बारे में ज़्यादा जानकारी दी गई है:

  1. सेट अप के शुरुआती चरण में पीटीओ सर्वर transitClass बनाता है, transitClass:Insert का इस्तेमाल करके, ownerId और activationUrl को पास करना Google Wallet API एंडपॉइंट. यह एक बार की जाने वाली गतिविधि है.
  2. इसके बाद, जब कोई उपयोगकर्ता वेब शॉप से टिकट खरीदता है, तो पीटीओ सर्वर transitObject:Insert होता है, जिसमें टिकट बेचने की बुनियादी जानकारी होती है. साथ ही, इसमें कुछ अन्य जानकारी भी होती है यह एक मोटिक टिकट है.
  3. फिर PTO सर्वर और वेब शॉप एक साथ काम करके Google Wallet बटन में जोड़ें और टिकट के JWT को इस पर वापस कर दें Google सेव करें लिंक का इस्तेमाल करके.
  4. अब टिकट पिन करने की प्रोसेस तब शुरू हो सकती है, जब Google का सर्वर activationUrl के पीछे मौजूद ऐक्टिवेशन एंडपॉइंट.
  5. चौथे चरण के मुताबिक, पीटीओ सर्वर हस्ताक्षर (sigSTB) जनरेट करता है जिसमें SAM के साथ हस्ताक्षर किया गया SCE_ID शामिल हो.
  6. activationUrl कॉल का उत्तर देने से पहले, पीटीओ सर्वर को सबसे पहले transitObject:Patch को कॉल करें, जिसमें Motics से जुड़ी सभी ज़रूरी जानकारी शामिल है, जिसमें Motics applicationData भी शामिल है.
  7. transitObject:Patch कॉल सफल होने के बाद ही, पीटीओ सर्वर को activationUrl के लिए एक सफल (HTTP-200) प्रतिक्रिया देनी चाहिए कॉल.

अच्छा उपयोगकर्ता अनुभव देने के लिए, उपयोगकर्ता को अपने मोटिक्स को स्थानांतरित करने में सक्षम होना चाहिए टिकट जारी करने वाले बैंक या कंपनी की तय की गई कुछ सीमाओं के अंदर, एक डिवाइस से दूसरे डिवाइस पर टिकट भेजना. इसके लिए, जारी करने वाले को डेटा ट्रांसफ़र और अनलिंक करने की प्रोसेस लागू करनी होगी.

ऐक्टिवेशन एंडपॉइंट

टिकट जारी करने वाले/पीटीओ (या उनके सिस्टम इंटिग्रेटर) को टिकट लागू करना होगा ऐक्टिवेशन एंडपॉइंट जिसे Google, टिकट सेव किए जाने पर शुरू करेगा. यूआरएल इस एंडपॉइंट को शुरू करने की प्रक्रिया में transitClass:Insert को शामिल किया जाना चाहिए. ऐक्टिवेशन एंडपॉइंट, सिग्नेचर (sigSTB) जनरेट करेगा और नीचे दिए गए पैरामीटर के साथ transitObject:Patch तरीका सेक्शन में जाएं.

अनुरोध

ऐक्टिवेशन एंडपॉइंट के अनुरोध का फ़ॉर्मैट ऐसा होता है:

Content-Type: application/json
Body: {
  "classId": "123.classId",
  "expTimeMillis": 1669671940735,
  "eventType": "activate",
  "objectId": string - base64 encoded ID of the TransitObject,
  "deviceContext": string - base64 encoded SCE_ID,
}

जवाब

खाली मुख्य भाग के साथ HTTP-200 सफलता की प्रतिक्रिया, अगर:

  • SCE_ID वाला sigSTB, SAM के साथ जनरेट करके उस पर हस्ताक्षर किया गया
  • ट्रांज़िट ऑब्जेक्ट:पैच विधि को सफलतापूर्वक कॉल किया गया था
Status: 200 - OK
Body: {}

इंतज़ार के समय वाले टारगेट

ऐक्टिवेशन एंडपॉइंट को इन इंतज़ार के समय के टारगेट का पालन करना चाहिए:

  • सभी अनुरोधों में से कम से कम 50% का जवाब 200ms के अंदर दिया जाना चाहिए
  • सभी अनुरोधों में से कम से कम 95% का जवाब 2s के अंदर दिया जाना चाहिए
  • ज़्यादा से ज़्यादा 10s पॉइंट हासिल किए जा सकते हैं

Google Wallet API से जुड़े बदलाव

नीचे दिए गए लिंक में, Google Wallet API के एंडपॉइंट में होने वाले बदलावों के बारे में बताया गया है. जो सिस्टम आर्किटेक्चर में बताए गए Motics के साथ काम करते हैं.

तरीका: transitClass:insert

यह Google के वॉलेट पर transitClass बनाने के लिए Google Wallet API एंडपॉइंट है बैकएंड. सिस्टम इंटिग्रेटर को इस एपीआई को इन चीज़ों के साथ शुरू करना होगा पैरामीटर के साथ-साथ लागू होने वाले अन्य फ़ील्ड का अनुरोध करें. इससे संदर्भ लें transitClass और की पूरी सूची देखने के लिए transitClass.Insert एपीआई दस्तावेज़ (नॉन-मोटिक्स) पैरामीटर और अन्य विवरण.

POST: https://walletobjects.googleapis.com/walletobjects/v1/transitClass

JSON के काेड में दिखाना

Motics इंटिग्रेशन के लिए, कम से कम नीचे दी गई JSON इमेज का इस्तेमाल करना ज़रूरी है transitClass:insert अनुरोध के मुख्य हिस्से में मौजूद transitClass. अन्य ज़रूरी शर्तें transitClass मेटाडेटा फ़ील्ड को भी सेट करना होगा.

{
  "id": string,
  "multipleDevicesAndHoldersAllowedStatus": ONE_USER_ONE_DEVICE (MultipleDevicesAndHoldersAllowedStatus),
  "deviceCertificationSupport": {
     "vdvCertDetails": {
        "ownerId" string,
        "certEnvironment": PRODUCTION/STAGING,
      },
  },
  "activationOptions": {
    "activationUrl": string
  },
  ...
}

CERTEnvironment = PRODUCTION पर Google सर्वर, प्रमाणपत्र फ़ेच करेगा प्रोडक्शन मोटिक सर्वर से मिलेगी. जब certEnvironment = Google को सुरक्षित रखना सर्वर, सैंडबॉक्स मोटिक्स सर्वर से सर्टिफ़िकेट फ़ेच करेगा.

तरीका: transitObject:insert

यह Google Wallet API एंडपॉइंट है, जिसमें नई प्रॉपर्टी के लिए transitObject शामिल किया जा सकता है वह टिकट जिसे कोई उपयोगकर्ता खरीदना चाहता है और Google Wallet में जोड़ना चाहता है. सिस्टम इंटिग्रेटर को transitObject पास करना होगा. साथ ही, मुख्य तौर पर यहां टिकट की जानकारी देनी होगी इस पॉइंट से. transitObject देखें और transitObject.Insert एपीआई (नॉन-मोटिक्स) पैरामीटर की पूरी सूची और अन्य विवरण के लिए दस्तावेज़.

POST: https://walletobjects.googleapis.com/walletobjects/v1/transitObject

JSON के काेड में दिखाना

Motics इंटिग्रेशन के लिए, कम से कम नीचे दी गई JSON इमेज का इस्तेमाल करना ज़रूरी है transitObject:insert अनुरोध के मुख्य हिस्से में मौजूद transitObject. अन्य ऑब्जेक्ट मेटाडेटा फ़ील्ड को भी सेट किया जा सकता है और अन्य सभी ज़रूरी फ़ील्ड को भी शामिल हैं.

{
  "id": string,
  "classId": string,
  "validTimeInterval": {
    object (TimeInterval)
  },
  "activationStatus": {
    "state": NOT_ACTIVATED (State)
  },
  "rotatingBarcode": {
    "type": AZTEC (BarcodeType),
    "valuePattern": "{vdv_barcode}",
    "deviceEntitlementSupport": {
      "vdvEntitlementDetails": {
        "applicationData": "",
      },
    },
  },
  ...
}

ध्यान दें:

  • एपीआई के लिए applicationData फ़ील्ड को शामिल करना ज़रूरी है. इस समय Motics के ऐक्टिवेशन फ़्लो में, applicationData वैल्यू अब तक नहीं मिली है, इसलिए, इसे खाली स्ट्रिंग पर सेट किया जाना चाहिए.
    • applicationData को बाद में transitObject:Patch में सेट किया जाएगा कॉल.
  • validTimeInterval DateTime ऑब्जेक्ट में समय क्षेत्र ऑफ़सेट होना चाहिए तय किया गया है, उदाहरण के लिए: 2024-04-12T19:20:50.52-04:00.

तरीका: transitObject:पैच

यह Google Wallet API एंडपॉइंट है, जिसकी मदद से transitObject को पैच किया जा सकता है. इसका इस्तेमाल Google, Motics बारकोड बनाने और VDV ई-टिकट सेवा फ़ेच करने के लिए करता है सर्टिफ़िकेट. transitObject देखें और transitObject.Patch एपीआई (नॉन-मोटिक्स) पैरामीटर की पूरी सूची और अन्य विवरण के लिए दस्तावेज़.

PATCH:
https://walletobjects.googleapis.com/walletobjects/v1/transitObject/{resourceId}

JSON के काेड में दिखाना

मोटिक इंटिग्रेशन के लिए, नीचे दी गई चीज़ों की ज़रूरत होती है transitObject:patch अनुरोध का मुख्य भाग में transitObject. ध्यान दें कि यह इस पर है इससे पता चलता है कि applicationData फ़ील्ड में अपने-आप जानकारी भरी गई है.

{
  "activationStatus": {
    "state": ACTIVATED (State)
  },
  "rotatingBarcode": {
    "type": AZTEC (BarcodeType),
    "valuePattern": "{vdv_barcode}",
    "deviceEntitlementSupport": {
      "vdvEntitlementDetails": {
        "applicationData": string - Hex encoded,
      },
    },
  }
}

ऐप्लिकेशन डेटा की खास बातें

इस applicationData (टैग:0x5F07). applicationData को जनरेट करना चाहिए टैग-अवधि-वैल्यू (टीएलवी) फ़ॉर्मैट में सिस्टम इंटिग्रेटर. यह डेटा बाद का है बड़े डेटा स्ट्रक्चर में एन्कोड किया गया हो, ताकि उसे क्यूआर कोड के हिस्से के तौर पर एन्कोड किया जा सके कोड.

टैग अवधि वैल्यू
0x9E 81x80 हस्ताक्षर
OctetString, साइन किए गए एनटाइटलमेंट डेटा के शुरुआती 128 बाइट
Google शब्द: sigSTB
0x9A डेटा रीफ़्रेश होने की दर अलग-अलग हो सकती है रेज़िड्यूअल डेटा
OctetString, सदस्यता का बचा हुआ डेटा
Google शब्द: sigSTB cont.
0x7F21 81 सी8 जारी करने का सर्टिफ़िकेट
OctetString, सर्टिफ़िकेट का डेटा
Google शब्द: Cert(puk_SAM)
0x42 08 सर्टिफ़िकेट देने वाली संस्था का रेफ़रंस (सीएआर)
OctetString, कार की वैल्यू
Google शब्द: CAR