تقدّم هذه الصفحة التفاصيل الفنية لمشغّل وسائل النقل العام (PTO) إلى الدمج مع Google لتقديم تذاكر Motics في "محفظة Google" يستخدم هذا الحلّ واجهة برمجة تطبيقات "محفظة Google" ويستند أيضًا إلى على تنفيذ نقطة نهاية التنشيط على PTO.
بنية النظام
يعرض هذا القسم بنية النظام وتدفق حفظ Motics.
الشكل 1. مسار حفظ تذكرة Motics
يوضح الشكل 1 تدفق إنشاء تذكرة Motics وتنشيطها وتثبيتها في "محفظة Google" في عدّة كيانات:
- خوادم Google
- خادم شركة تكامل النظام (PTO)
- خادم Motics SCE
- المتجر الإلكتروني
فيما يلي وصف التدفق بمزيد من التفصيل:
- في مرحلة الإعداد الأولية، ينشئ خادم PTO الخادم
transitClass
، اجتيازownerId
وactivationUrl
باستخدام transitClass:Insert نقطة نهاية Google Wallet API. وهذا نشاط لمرة واحدة. - بعد ذلك، عندما يشتري المستخدم تذكرة من متجر الويب، يتصل خادم PTO transitObject:Insert يحتوي على معلومات التذاكر الأساسية وبعض الحقول الأولية التي تشير إلى أن هذه تذكرة Motics.
- ثم يعمل خادم PTO ومتجر الويب معًا لعرض يمكنك الإضافة إلى "محفظة Google" وإرسال رمز JWT للتذكرة في النهاية إلى Google، باستخدام رابط الحفظ
- يمكن الآن أن تبدأ مرحلة تثبيت التذاكر، عندما يستدعي خادم Google
نقطة نهاية التفعيل بعد
activationUrl
. - استجابة للخطوة 4، ينشئ خادم PTO التوقيع (sigSTB) يحتوي على SCE_ID الموقع من خلال SAM.
- قبل الاستجابة لاستدعاء
activationUrl
، يجب أن يبدأ خادم PTO أولاً استدعاء transitObject:Patch يحتوي على جميع معلومات Motics اللازمة بما في ذلك applicationData Motics. - فقط بعد نجاح استدعاء transitObject:Patch، لن يظهر رمز PTO
أن يعرض الخادم استجابة ناجحة (HTTP-200) إلى خطأ
activationUrl
الاتصال.
تنفيذ النقل إلغاء ربط التدفق
لتوفير تجربة مستخدم جيدة، يجب أن يكون المستخدم قادرًا على تحريك حركاته تذكرة من جهاز إلى آخر ضمن حدود معيّنة تحدّدها جهة الإصدار لتنفيذ ذلك، على جهة الإصدار تنفيذ خطوات النقل وإلغاء الربط.
نقطة نهاية التفعيل
على جهة الإصدار/جهة تأسيس التداول (PTO) (أو جهة تكامل النظام) تقديم طلب دعم. نقطة نهاية التفعيل التي ستستدعيها Google عند حفظ التذكرة. عنوان URL إلى نقطة النهاية هذه في الاستدعاء 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
الناجحة بدون نص في الحالات التالية:
- تم إنشاء ملف sigSTB الذي يحتوي على SCE_ID وتوقيعه باستخدام SAM.
- تم استدعاء طريقةtransitObject:Patch بنجاح
Status: 200 - OK
Body: {}
أهداف وقت الاستجابة
يجب أن تلتزم نقطة نهاية التفعيل بأهداف وقت الاستجابة التالية:
- يجب الرد على
50%
على الأقل من كل الطلبات في غضون200ms
- يجب الرد على
95%
على الأقل من كل الطلبات في غضون2s
- هناك حد أقصى صارم بقيمة
10s
التغييرات في Google Wallet API
في ما يلي توضيح للتغييرات التي طرأت على نقاط نهاية Google Wallet API من أجل على Motics كما هو موضح في بنية النظام.
الطريقة: transitClass:insert
هذه هي نقطة نهاية Google Wallet API لإنشاء transitClass
على
الخلفية. على جهة دمج النظام استدعاء واجهة برمجة التطبيقات هذه مع ما يلي:
معلمات الطلب إلى جانب أي حقول أخرى قابلة للتطبيق. ارجع إلى
transitClass مستندات واجهة برمجة التطبيقات transitClass.Insert للاطّلاع على قائمة كاملة
المعلمات (غير المختلطة) والمزيد من التفاصيل.
POST: https://walletobjects.googleapis.com/walletobjects/v1/transitClass
تمثيل JSON
يتطلب تكامل Motics تمثيل JSON التالي على الأقل
transitClass
في نص الطلب 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 = "مراقبة نظام Google" الخادم بجلب الشهادة من خادم Motics في وضع الحماية.
الطريقة: transitObject:insert
هذه هي نقطة نهاية Google Wallet API لإدراج transitObject
في
تذكرة يريد المستخدم شراؤها وإضافتها إلى "محفظة Google". النظام
يجب أن تجتاز شركة الدمج transitObject
مع تضمين معلومات التذكرة بشكل أساسي في
هذه النقطة. يُرجى الرجوع إلى transitObject و واجهة برمجة التطبيقات transitObject.Insert
للحصول على قائمة كاملة بالمعلمات (غير المختلطة) والمزيد من التفاصيل.
POST
: https://walletobjects.googleapis.com/walletobjects/v1/transitObject
تمثيل JSON
يتطلب تكامل Motics تمثيل JSON التالي على الأقل
transitObject
في نص الطلب transitObject:insert
. كائن آخر
يجوز تعيين حقول بيانات التعريف أيضًا، ويجب أيضًا تعيين جميع الحقول الإلزامية
.
{
"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
معادلة المنطقة الزمنية. المحددة، على سبيل المثال:2024-04-12T19:20:50.52-04:00
.
الطريقة: transitObject:patch
هذه هي نقطة نهاية Google Wallet API لتصحيح transitObject
بالبيانات التي يجب تنفيذها.
تستخدمه Google لإنشاء الرمز الشريطي في Motics وجلب خدمة VDV eTicket.
الشهادات. يُرجى الرجوع إلى transitObject و واجهة برمجة التطبيقات transitObject.Patch
للحصول على قائمة كاملة بالمعلمات (غير المختلطة) والمزيد من التفاصيل.
PATCH:
https://walletobjects.googleapis.com/walletobjects/v1/transitObject/{resourceId}
تمثيل JSON
يتطلب تكامل Motics التمثيل التالي
transitObject
في نص الطلب transitObject:patch
. لاحظ أنه في هذا
عند تعبئة الحقل applicationData
.
{
"activationStatus": {
"state": ACTIVATED (State)
},
"rotatingBarcode": {
"type": AZTEC (BarcodeType),
"valuePattern": "{vdv_barcode}",
"deviceEntitlementSupport": {
"vdvEntitlementDetails": {
"applicationData": string - Hex encoded,
},
},
}
}
مواصفات بيانات التطبيق
فيما يلي مواصفات Motics لمحتويات
applicationData
(العلامة:0x5F07
). يجب أن يتم إنشاء applicationData
بواسطة
وحدة تكامل النظام بتنسيق طول العلامة (TLV). هذه البيانات لاحقًا
يتم تغليفها في بنية بيانات أكبر ليتم تشفيرها أخيرًا كجزء من رمز الاستجابة السريعة
الرمز.
العلامة | الطول | القيمة |
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
|