এই পৃষ্ঠাটি একটি পাবলিক ট্রানজিট অপারেটর (PTO) এবং তাদের সিস্টেম ইন্টিগ্রেটরকে Google Wallet-এ Motics টিকিট প্রদানের জন্য Google-এর সাথে একীভূত করতে প্রয়োজনীয় প্রযুক্তিগত বিবরণ প্রদান করে। সমাধানটি Google Wallet API ব্যবহার করে এবং PTO-এর উপরও নির্ভর করে একটি অ্যাক্টিভেশন এন্ডপয়েন্ট বাস্তবায়ন করে।
সিস্টেম আর্কিটেকচার
এই বিভাগটি সিস্টেম আর্কিটেকচার এবং মটিক্স সংরক্ষণ প্রবাহ দেখায়।
চিত্র 1. মটিক্স টিকিট সংরক্ষণ প্রবাহ
চিত্র 1 গুগল ওয়ালেটে একটি মটিক্স টিকিট তৈরি, সক্রিয় এবং পিন করার প্রবাহ দেখায়, বিভিন্ন সত্তা জুড়ে:
- গুগল সার্ভার
- PTO (সিস্টেম ইন্টিগ্রেটর) সার্ভার
- Motics SCE সার্ভার
- ওয়েব শপ
নিম্নলিখিত আরও বিস্তারিতভাবে প্রবাহ বর্ণনা করে:
- প্রাথমিক সেটআপ পর্বে, PTO সার্ভার
transitClass
তৈরি করে, transitClass:Insert Google Wallet API এন্ডপয়েন্ট ব্যবহার করেownerId
এবংactivationUrl
পাস করে। এটি একটি একক কার্যক্রম। - এরপরে, যখন একজন ব্যবহারকারী ওয়েব শপ থেকে একটি টিকিট ক্রয় করেন, তখন PTO সার্ভার ট্রানজিটঅবজেক্টকে কল করে: টিকিট সংক্রান্ত প্রাথমিক তথ্য এবং কিছু প্রাথমিক ক্ষেত্র যা নির্দেশ করে যে এটি একটি মটিক্স টিকিট।
- তারপরে পিটিও সার্ভার এবং ওয়েব শপ একসাথে কাজ করে অ্যাড টু গুগল ওয়ালেট বোতামটি রেন্ডার করে এবং শেষ পর্যন্ত সেভ লিঙ্কটি ব্যবহার করে টিকিটের JWT Google-এ ফেরত দেয়।
- এখন টিকিট পিনিং পর্ব শুরু হতে পারে, যখন Google সার্ভার
activationUrl
পিছনে অ্যাক্টিভেশন এন্ডপয়েন্টকে কল করে। - ধাপ 4-এর প্রতিক্রিয়া হিসাবে, PTO সার্ভার SAM-এর সাথে স্বাক্ষরিত SCE_ID ধারণকারী স্বাক্ষর (sigSTB) তৈরি করে।
-
activationUrl
কলে সাড়া দেওয়ার আগে, PTO সার্ভারকে প্রথমে ট্রানজিটঅবজেক্ট:প্যাচকে কল করা উচিত যাতে মটিক্স অ্যাপ্লিকেশন ডেটা সহ সমস্ত প্রয়োজনীয় মোটিক্স তথ্য রয়েছে। - transitObject:প্যাচ কল সফল হওয়ার পরেই, PTO সার্ভারের
activationUrl
কলে একটি সফল (HTTP-200) প্রতিক্রিয়া ফিরিয়ে দেওয়া উচিত।
সরানো এবং আনলিঙ্ক ফ্লো বাস্তবায়ন করুন
একটি ভাল ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য, একজন ব্যবহারকারীকে ইস্যুকারী দ্বারা সংজ্ঞায়িত নির্দিষ্ট সীমার মধ্যে একটি ডিভাইস থেকে অন্য ডিভাইসে তাদের মটিক্স টিকিট সরাতে সক্ষম হওয়া উচিত। এর জন্য, ইস্যুকারীকে মুভ এবং আনলিঙ্ক ফ্লো বাস্তবায়ন করতে হবে।
অ্যাক্টিভেশন এন্ডপয়েন্ট
ইস্যুকারী/পিটিও (বা তাদের সিস্টেম ইন্টিগ্রেটর) একটি টিকিট অ্যাক্টিভেশন এন্ডপয়েন্ট বাস্তবায়ন করতে হবে যা Google টিকেট সেভ করার সময় ব্যবহার করবে। এই এন্ডপয়েন্টের URLটি transitClass:Insert- এর আমন্ত্রণে প্রদান করা উচিত। অ্যাক্টিভেশন এন্ডপয়েন্ট স্বাক্ষর (sigSTB) তৈরি করবে এবং নিম্নলিখিত বিভাগে সংজ্ঞায়িত পরামিতি সহ ট্রানজিটঅবজেক্ট:প্যাচ পদ্ধতিতে কল করবে।
অনুরোধ
অ্যাক্টিভেশন এন্ডপয়েন্টের অনুরোধের নিম্নলিখিত বিন্যাস রয়েছে:
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 এন্ডপয়েন্টের পরিবর্তনগুলিকে রূপরেখা দেয়৷
পদ্ধতি: transitClass: সন্নিবেশ
এটি Google এর ব্যাকএন্ডে একটি transitClass
তৈরি করার জন্য Google Wallet API এন্ডপয়েন্ট। সিস্টেম ইন্টিগ্রেটরকে নিম্নলিখিত অনুরোধের পরামিতিগুলির সাথে প্রযোজ্য অন্যান্য ক্ষেত্রগুলির সাথে এই APIটি চালু করতে হবে৷ ট্রানজিটক্লাস এবং ট্রানজিটক্লাস পড়ুন। (নন-মোটিক্স) প্যারামিটারের সম্পূর্ণ তালিকা এবং আরও বিশদ বিবরণের জন্য API ডকুমেন্টেশন সন্নিবেশ করুন।
POST: https://walletobjects.googleapis.com/walletobjects/v1/transitClass
JSON প্রতিনিধিত্ব
Motics ইন্টিগ্রেশনের জন্য transitClass-এ transitClass
এর ন্যূনতম নিম্নলিখিত JSON উপস্থাপনা প্রয়োজন transitClass:insert
রিকোয়েস্ট বডি। অন্যান্য বাধ্যতামূলক transitClass
মেটাডেটা ক্ষেত্রগুলিও সেট করতে হবে।
{
"id": string,
"multipleDevicesAndHoldersAllowedStatus": ONE_USER_ONE_DEVICE (MultipleDevicesAndHoldersAllowedStatus),
"deviceCertificationSupport": {
"vdvCertDetails": {
"ownerId" string,
"certEnvironment": PRODUCTION/STAGING,
},
},
"activationOptions": {
"activationUrl": string
},
...
}
যখন certEnvironment = PRODUCTION Google সার্ভার প্রোডাকশন Motics সার্ভার থেকে সার্টিফিকেট আনবে৷ যখন certEnvironment = STAGING Google সার্ভার স্যান্ডবক্স Motics সার্ভার থেকে শংসাপত্র আনবে।
পদ্ধতি: transitObject: insert
এটি হল Google Wallet API এন্ডপয়েন্ট যা একজন ব্যবহারকারী ক্রয় করতে এবং Google Wallet-এ যোগ করতে চায় এমন নতুন টিকিটের জন্য transitObject
সন্নিবেশ করান। সিস্টেম ইন্টিগ্রেটরকে এই মুহুর্তে প্রধানত টিকিটের তথ্য সহ একটি transitObject
পাস করা উচিত। transitObject এবং transitObject পড়ুন। (নন-মোটিক্স) প্যারামিটারের সম্পূর্ণ তালিকা এবং আরও বিশদ বিবরণের জন্য API ডকুমেন্টেশন সন্নিবেশ করুন।
POST
: https://walletobjects.googleapis.com/walletobjects/v1/transitObject
JSON প্রতিনিধিত্ব
Motics ইন্টিগ্রেশনের ন্যূনতম নিম্নলিখিত JSON উপস্থাপনা প্রয়োজন transitObject
এ transitObject:insert
request body. অন্যান্য অবজেক্ট মেটাডেটা ক্ষেত্রগুলিও সেট করা যেতে পারে এবং অন্যান্য সমস্ত বাধ্যতামূলক ক্ষেত্রগুলিও অন্তর্ভুক্ত করা উচিত।
{
"id": string,
"classId": string,
"validTimeInterval": {
object (TimeInterval)
},
"activationStatus": {
"state": NOT_ACTIVATED (State)
},
"rotatingBarcode": {
"type": AZTEC (BarcodeType),
"valuePattern": "{vdv_barcode}",
"deviceEntitlementSupport": {
"vdvEntitlementDetails": {
"applicationData": "",
},
},
},
...
}
নোট:
- API-এর প্রয়োজন যে
applicationData
ক্ষেত্রটি অন্তর্ভুক্ত করা হয়েছে। মটিক্স অ্যাক্টিভেশন প্রবাহের এই মুহুর্তে,applicationData
মানটি এখনও জানা যায়নি, তাই এটি একটি খালি স্ট্রিংয়ে সেট করতে হবে।-
transitObject:Patch
কলেapplicationData
পরে সেট করা হবে।
-
-
validTimeInterval
DateTime অবজেক্টে অবশ্যই নির্দিষ্ট সময় অঞ্চল অফসেট থাকতে হবে, উদাহরণস্বরূপ:2024-04-12T19:20:50.52-04:00
।
পদ্ধতি: transitObject: patch
এটি হল Google Wallet API এন্ডপয়েন্ট যা transitObject
ডেটা সহ প্যাচ করার জন্য Google দ্বারা Motics বারকোড তৈরি এবং VDV eTicket পরিষেবা শংসাপত্র আনার জন্য ব্যবহার করা হবে৷ (নন-মোটিক্স) প্যারামিটারের সম্পূর্ণ তালিকা এবং আরও বিশদ বিবরণের জন্য transitObject এবং transitObject.Patch API ডকুমেন্টেশন পড়ুন।
PATCH:
https://walletobjects.googleapis.com/walletobjects/v1/transitObject/{resourceId}
JSON প্রতিনিধিত্ব
Motics ইন্টিগ্রেশনের জন্য transitObject-এ transitObject
এর নিম্নলিখিত উপস্থাপনা প্রয়োজন transitObject:patch
রিকোয়েস্ট বডি। মনে রাখবেন যে এই মুহুর্তে applicationData
ক্ষেত্রটি জনবহুল।
{
"activationStatus": {
"state": ACTIVATED (State)
},
"rotatingBarcode": {
"type": AZTEC (BarcodeType),
"valuePattern": "{vdv_barcode}",
"deviceEntitlementSupport": {
"vdvEntitlementDetails": {
"applicationData": string - Hex encoded,
},
},
}
}
অ্যাপ্লিকেশন ডেটা স্পেসিফিকেশন
নিম্নলিখিত applicationData
বিষয়বস্তুর জন্য মটিক্স স্পেসিফিকেশন (ট্যাগ: 0x5F07
)। applicationData
ট্যাগ-লেংথ-ভ্যালু (TLV) ফর্ম্যাটে সিস্টেম ইন্টিগ্রেটর দ্বারা তৈরি করা উচিত। এই ডেটা পরে একটি বৃহত্তর ডেটা স্ট্রাকচারে এনক্যাপসুলেট করা হয় এবং শেষ পর্যন্ত QR কোডের অংশ হিসেবে এনকোড করা হয়।
ট্যাগ | দৈর্ঘ্য | মান |
0x9E | 81 80 | স্বাক্ষরOctetString , স্বাক্ষরিত এনটাইটেলমেন্ট ডেটার প্রথম 128 বাইটGoogle শব্দ: sigSTB |
0x9A | পরিবর্তিত হয় | অবশিষ্ট তথ্যOctetString , অবশিষ্ট এনটাইটেলমেন্ট ডেটাGoogle শব্দ: sigSTB cont. |
0x7F21 | 81 C8 | ইস্যু করার শংসাপত্রOctetString , সার্টিফিকেট ডেটাGoogle শব্দ: Cert(puk_SAM) |
0x42 | 08 | সার্টিফিকেট অথরিটি রেফারেন্স (CAR)OctetString , CAR মানGoogle শব্দ: CAR |