انتقل إلى المحتوى

واجهة برمجة تطبيقات Google Wallet

تتيح لك واجهة برمجة تطبيقات Google Wallet إنشاء وتحديث وسرد وإدارة بطاقات Google Wallet برمجيًا. وهي تدعم نفس العمليات التي تقوم بها أداة إنشاء البطاقات في لوحة التحكم.

استخدمها لإصدار بطاقات الولاء، والعروض، وبطاقات الهدايا، وتذاكر الفعاليات، وبطاقات صعود الطائرة، وتذاكر النقل، والبطاقات العامة، ولإرسال تحديثات حية إلى البطاقات المحفوظة بالفعل على أجهزة المستخدمين.

عنوان URL الأساسي

Anchor link to
https://apple-passkit.svc-nue.pushwoosh.com

يتم تقديم جميع نقاط النهاية عبر HTTPS. تستخدم الطلبات والاستجابات application/json ما لم يُذكر خلاف ذلك.

المصادقة

Anchor link to

يجب أن يتضمن كل طلب ترويسة Authorization مع رمز الوصول إلى واجهة برمجة تطبيقات Pushwoosh:

Authorization: Token <api-token>

يجب أن يمتلك الحساب الذي يمتلك الرمز التطبيق المشار إليه بواسطة applicationCode. الطلب لتطبيق ينتمي إلى حساب آخر يُرجع 403 Forbidden.

الاصطلاحات

Anchor link to
  • تسمية الحقول: تستخدم حقول JSON lowerCamelCase (على سبيل المثال، serialNumber، hexBackgroundColor، logoUrl).
  • الحقول غير المعبأة: تتضمن الاستجابات جميع الحقول، حتى لو كانت فارغة أو قيمتها صفر.
  • الهوية: يتم دائمًا تعيين serialNumber بواسطة الخادم عند إنشاء بطاقة. يتم تجاهل أي قيمة ترسلها عند الإنشاء. معرّف كائن Google Wallet الكامل هو {issuerId}.{serialNumber}.
  • الصور: logoUrl و heroImageUrl هي عناوين URL عامة بصيغة HTTPS لصور تقوم Google بجلبها—وليست ملفات مرفوعة.
  • نمط البطاقة: يجب تعيين نمط واحد بالضبط (generic، offer، loyalty، eventTicket، giftCard، flight، أو transit) على البطاقة. لا يمكن تغيير النمط بعد الإنشاء.

استجابات الخطأ

Anchor link to
حالة HTTPالمعنى
400 Bad Requestوسيطة غير صالحة—حقل مطلوب مفقود أو مشوه.
401 Unauthorizedترويسة Authorization مفقودة أو غير صالحة.
403 Forbiddenالتطبيق لا ينتمي إلى حساب المتصل.
404 Not Foundلم يتم العثور على البطاقة أو القالب أو التطبيق.
503 Service Unavailableالخدمة بكامل طاقتها أو غير متاحة مؤقتًا.

نقاط النهاية

Anchor link to
الطريقةالمسارالوصف
POST/api/google/pass/validateالتحقق من صحة تكوين بطاقة
POST/api/google/pass/createإنشاء كائن بطاقة جديد والحصول على رابط حفظ
POST/api/google/pass/update/{serialNumber}تحديث بطاقة موجودة؛ تقوم Google بتسليم التغيير
GET/api/google/pass/{applicationCode}/{serialNumber}/save-linkالحصول على رابط حفظ “إضافة إلى Google Wallet”
GET/api/google/pass/{applicationCode}/{serialNumber}الحصول على بطاقة واحدة
GET/api/google/passesسرد جميع البطاقات لتطبيق ما
POST/api/google/pass/{applicationCode}/{serialNumber}/stateتفعيل أو إبطال بطاقة
DELETE/api/google/pass/{applicationCode}/{serialNumber}حذف بطاقة
GET/api/google/configالحصول على تكوين Google Wallet للتطبيق
GET/api/google/templatesسرد قوالب البطاقات المتاحة
GET/api/google/templates/{filename}الحصول على قالب واحد

إنشاء بطاقة

Anchor link to

ينشئ فئة وكائن البطاقة في Google Wallet، ثم يُرجع الرقم التسلسلي المعين من الخادم، ومعرّف الكائن الكامل، ورابط حفظ “إضافة إلى Google Wallet”.

POST /api/google/pass/create

نص الطلب

Anchor link to
المعلمةالنوعمطلوبالوصف
passobjectنعمكائن البطاقة الذي يصف البطاقة. يجب تعيين نمط واحد بالضبط.
userIdstringنعممعرّف مستخدم Pushwoosh الذي تصدر له البطاقة.
applicationCodestringنعمرمز تطبيق Pushwoosh.
مثال على الطلب
Anchor link to
{
"applicationCode": "XXXXX-XXXXX",
"userId": "user-123",
"pass": {
"hexBackgroundColor": "#3c414c",
"logoUrl": "https://cdn.acme.com/logo.png",
"loyalty": {
"programName": "Acme Rewards",
"accountName": "Jane Doe",
"accountId": "1234567890",
"pointsLabel": "Points",
"pointsBalance": "1200",
"rewardsTier": "Gold"
},
"barcode": {
"format": "QR_CODE",
"value": "1234567890"
}
}
}

الاستجابة

Anchor link to
الحقلالنوعالوصف
serialNumberstringهوية فريدة معينة من الخادم للبطاقة التي تم إنشاؤها.
objectIdstringمعرّف كائن Google Wallet الكامل: {issuerId}.{serialNumber}.
saveLinkstringرابط “إضافة إلى Google Wallet”: https://pay.google.com/gp/v/save/{jwt}.
messagestringرسالة النتيجة.
مثال على الاستجابة
Anchor link to
{
"serialNumber": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"objectId": "XXXXXXXXXXXXXXX.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"saveLink": "https://pay.google.com/gp/v/save/{jwt}",
"message": "Pass created successfully"
}

التحقق من صحة بطاقة

Anchor link to

يتحقق من تكوين بطاقة مقابل متطلبات Google دون إنشائها. مفيد قبل استدعاء الإنشاء.

POST /api/google/pass/validate

نص الطلب

Anchor link to
المعلمةالنوعمطلوبالوصف
passobjectنعمكائن البطاقة للتحقق من صحته.

الاستجابة

Anchor link to
الحقلالنوعالوصف
validbooleanما إذا كانت البطاقة تجتاز التحقق من الصحة.
errorsarray of stringsمشاكل مانعة يجب إصلاحها.
warningsarray of stringsإرشادات غير مانعة.

تحديث بطاقة

Anchor link to

يصحح كائن البطاقة بمحتوى جديد. ثم تقوم Google بتسليم الإصدار المحدث إلى كل جهاز قام بحفظ البطاقة. يرسل اختياريًا إشعار Android مع التحديث.

POST /api/google/pass/update/{serialNumber}

معلمات المسار

Anchor link to
المعلمةالنوعالوصف
serialNumberstringالرقم التسلسلي الذي تم إرجاعه عند إنشاء البطاقة.

نص الطلب

Anchor link to
المعلمةالنوعمطلوبالوصف
updatesobjectنعمكائن البطاقة مع المحتوى الجديد. لا يمكن تغيير النمط.
applicationCodestringنعمرمز تطبيق Pushwoosh.
notifyMessagestringلاعندما لا يكون فارغًا، أرسل إشعار Android بهذا النص إلى كل من قام بحفظ البطاقة. يعني الفراغ تحديثًا صامتًا.
notifyOnUpdatebooleanلاطلب إشعار تحديث حقل. فقط بطاقات loyalty و eventTicket و flight هي التي تُعلم فعليًا؛ تقبل الأنماط الأخرى العلامة ولكنها لا ترسل إشعارًا أبدًا. يتم إطلاق الإشعارات فقط في غضون 3 ساعات من وقت البدء ذي الصلة، وتحد Google من الإشعارات إلى 3 إشعارات لكل بطاقة كل 24 ساعة.

الاستجابة

Anchor link to
الحقلالنوعالوصف
successbooleanما إذا كان التحديث قد نجح.
messagestringرسالة النتيجة.

الحصول على رابط حفظ

Anchor link to

يُرجع رابط حفظ “إضافة إلى Google Wallet” لبطاقة تم إنشاؤها بالفعل. يجب أن يكون كائن البطاقة موجودًا بالفعل (تم إنشاؤه عبر إنشاء بطاقة).

GET /api/google/pass/{applicationCode}/{serialNumber}/save-link

الاستجابة

Anchor link to
الحقلالنوعالوصف
saveLinkstringhttps://pay.google.com/gp/v/save/{jwt}.

الحصول على بطاقة

Anchor link to

يُرجع بطاقة واحدة مخزنة، بما في ذلك كائن البطاقة الكامل الخاص بها.

GET /api/google/pass/{applicationCode}/{serialNumber}

الاستجابة

Anchor link to

يُرجع { "pass": { ... } }، وهو سجل بطاقة واحد.

سرد البطاقات

Anchor link to

يُرجع قائمة مقسمة إلى صفحات ومرتبة للبطاقات المخزنة لتطبيق ما.

GET /api/google/passes?applicationCode=XXXXX-XXXXX&page=0&perPage=20

معلمات الاستعلام

Anchor link to
المعلمةالنوعمطلوبالوصف
applicationCodestringنعمرمز تطبيق Pushwoosh.
orderBystringلاحقل الفرز: UPDATED (افتراضي) أو CREATED.
orderDirectionstringلااتجاه الفرز: DESC (افتراضي، الأحدث أولاً) أو ASC.
pageintegerلافهرس الصفحة المستند إلى الصفر. الافتراضي هو 0.
perPageintegerلاحجم الصفحة. 0 أو محذوف يستخدم افتراضي الخادم.

الاستجابة

Anchor link to
الحقلالنوعالوصف
passesarray of objectsالصفحة الحالية من سجلات البطاقات.
pageintegerفهرس الصفحة المُرجعة.
perPageintegerحجم الصفحة المستخدم لهذه الاستجابة.
totalintegerالعدد الإجمالي للبطاقات للتطبيق عبر جميع الصفحات.

تعيين حالة البطاقة

Anchor link to

ينشط أو يبطل بطاقة. تنتقل البطاقة المبطلة (غير النشطة) إلى قسم البطاقات منتهية الصلاحية للمستخدم في Google Wallet؛ يتم الاحتفاظ بالسجل حتى يمكن إعادة تنشيطه.

POST /api/google/pass/{applicationCode}/{serialNumber}/state

نص الطلب

Anchor link to
المعلمةالنوعمطلوبالوصف
activebooleanنعمtrue يضبط البطاقة على ACTIVE؛ false يبطلها (INACTIVE).

الاستجابة

Anchor link to

يُرجع كائنًا فارغًا {} عند النجاح.

حذف بطاقة

Anchor link to

يبطل البطاقة في Google ويزيل سجلها المخزن في Pushwoosh.

DELETE /api/google/pass/{applicationCode}/{serialNumber}

الاستجابة

Anchor link to

يُرجع كائنًا فارغًا {} عند النجاح.

الحصول على التكوين

Anchor link to

يُرجع حالة تكوين Google Wallet لتطبيق ما.

GET /api/google/config?applicationCode=XXXXX-XXXXX

الاستجابة

Anchor link to
الحقلالنوعالوصف
hasServiceAccountbooleanما إذا كان مفتاح حساب الخدمة مكونًا.
issuerIdstringمعرّف جهة الإصدار في Google Pay & Wallet Console المكون.
serviceAccountEmailstringclient_email لـ حساب الخدمة المكون.

القوالب

Anchor link to

سرد قوالب البطاقات النموذجية المتاحة، أو جلب واحد كـ كائن بطاقة يمكنك استخدامه كنقطة بداية.

GET /api/google/templates — يُرجع { "templates": [ { "filename", "name", "description", "style" } ] }.

GET /api/google/templates/{filename} — يُرجع { "template": { ...pass object... } }.

مرجع الكائنات

Anchor link to

كائن البطاقة (Pass object)

Anchor link to
الحقلالنوعالوصف
serialNumberstringيتم تعيينه بواسطة الخادم عند الإنشاء؛ يحدد البطاقة.
generic / offer / loyalty / eventTicket / giftCard / flight / transitobjectنمط البطاقة. يجب تعيين واحد بالضبط. انظر كائنات النمط أدناه.
hexBackgroundColorstringلون خلفية البطاقة، #rrggbb.
logoUrlstringعنوان URL عام بصيغة HTTPS لصورة الشعار. مطلوب لبطاقات الولاء والنقل.
heroImageUrlstringعنوان URL عام بصيغة HTTPS لصورة لافتة عريضة.
barcodeobjectكائن الباركود المعروض على البطاقة.
textModulesarrayوحدات النص المعروضة في عرض التفاصيل.
linksarrayوحدات الروابط المعروضة في عرض التفاصيل.
expirationTimestringوقت ISO 8601 عندما تقوم Google بإنهاء صلاحية البطاقة تلقائيًا. يعني الفراغ عدم وجود انتهاء صلاحية.
appLinkobjectرابط التطبيق: زر دعوة لاتخاذ إجراء على واجهة البطاقة.
locationsarrayالمواقع التي تطلق إشعارًا جغرافيًا (بحد أقصى 10).
holdersPolicystringمن يمكنه حفظ البطاقة: ONE_USER_ALL_DEVICES (افتراضي)، ONE_USER_ONE_DEVICE، أو MULTIPLE_HOLDERS.

كائن عام (Generic object)

Anchor link to
الحقلالنوعالوصف
cardTitlestringمطلوب. اسم جهة الإصدار/البرنامج في أعلى البطاقة.
headerstringمطلوب. العنوان الرئيسي للبطاقة.
subheaderstringعنوان ثانوي.
cardFieldsarrayما يصل إلى 6 وحدات نصية مثبتة على الواجهة (حتى 3 صفوف من 2).

كائن العرض (Offer object)

Anchor link to
الحقلالنوعالوصف
titlestringمطلوب. على سبيل المثال، خصم 20% على كل شيء.
providerstringمطلوب. اسم التاجر.
detailsstringتفاصيل العرض.
finePrintstringالشروط والأحكام.
redemptionChannelstringONLINE، INSTORE، BOTH (افتراضي)، أو TEMPORARY_PRICE_REDUCTION.
issuerNamestringيظهر على أسطح “صادر عن” في Google؛ الافتراضي هو provider.

كائن الولاء (Loyalty object)

Anchor link to
الحقلالنوعالوصف
programNamestringمطلوب. يتطلب logoUrl على البطاقة.
accountNamestringاسم العضو المعروض على البطاقة.
accountIdstringمعرّف العضو المعروض على البطاقة.
pointsLabelstringعلى سبيل المثال، نقاط. يظهر فقط مع رصيد.
pointsBalancestringرصيد النقاط.
rewardsTierstringعلى سبيل المثال، ذهبي.
rewardsTierLabelstringالتسمية بجوار الفئة؛ الافتراضي هو الفئة.
issuerNamestringالافتراضي هو programName.

كائن تذكرة الفعالية (Event ticket object)

Anchor link to
الحقلالنوعالوصف
eventNamestringمطلوب.
venueName / venueAddressstringتفاصيل المكان.
startDateTime / endDateTimestringISO 8601 مع إزاحة (على سبيل المثال، 2026-07-01T19:30:00+02:00).
ticketHolderName / ticketNumber / ticketTypestringتفاصيل حامل التذكرة والتذكرة.
section / row / seat / gatestringتفاصيل المقاعد.
issuerNamestringالافتراضي هو eventName.

كائن بطاقة الهدايا (Gift card object)

Anchor link to
الحقلالنوعالوصف
merchantNamestringمطلوب.
cardNumberstringمطلوب.
pinstringرقم التعريف الشخصي للبطاقة.
balancestringمبلغ عشري، على سبيل المثال 25.00. يتطلب balanceCurrency.
balanceCurrencystringرمز عملة ISO 4217، على سبيل المثال USD.
issuerNamestringالافتراضي هو merchantName.

كائن الطيران (Flight object)

Anchor link to
الحقلالنوعالوصف
carrierIataCodestringمطلوب. رمز IATA المكون من حرفين، على سبيل المثال LX.
airlineNamestringاسم عرض شركة الطيران.
flightNumberstringمطلوب. أرقام فقط، على سبيل المثال 113.
originAirportCode / destinationAirportCodestringمطلوب. رموز IATA المكونة من 3 أحرف.
originTerminal / originGate / destinationTerminalstringتفاصيل المحطة والبوابة.
departureDateTimestringمطلوب. الوقت المحلي لمطار المغادرة، ISO 8601 بدون إزاحة (على سبيل المثال، 2026-09-01T06:30:00).
boardingTime / arrivalDateTimestringنفس التنسيق المحلي. arrivalDateTime هو الوقت المحلي للوجهة.
passengerNamestringمطلوب.
confirmationCode / seatNumber / seatClass / boardingGroupstringتفاصيل الراكب.
issuerNamestringالافتراضي هو airlineName، ثم رمز شركة النقل.

كائن النقل (Transit object)

Anchor link to
الحقلالنوعالوصف
transitTypestringمطلوب. BUS، RAIL، TRAM، FERRY، أو OTHER.
transitOperatorNamestringمطلوب. يتطلب logoUrl على البطاقة.
passengerNamestringمطلوب.
ticketNumberstringرقم التذكرة.
tripTypestringONE_WAY (افتراضي) أو ROUND_TRIP.
legsarrayمرحلة أو أكثر من مراحل النقل بترتيب السفر.
issuerNamestringالافتراضي هو transitOperatorName.

كائن مرحلة النقل (Transit leg object)

Anchor link to
الحقلالنوعالوصف
originName / destinationNamestringمطلوب.
departureDateTime / arrivalDateTimestringISO 8601؛ الإزاحة اختيارية (الوقت المحلي عند حذفها).
platform / coach / seatstringتفاصيل الصعود.
fareNamestringعلى سبيل المثال، Anytime Single.

كائن الباركود (Barcode object)

Anchor link to
الحقلالنوعالوصف
formatstringQR_CODE، PDF_417، AZTEC، CODE_128، EAN_13، وأنواع باركود Google Wallet الأخرى.
valuestringالبيانات المشفرة في الباركود.
altTextstringالنص المعروض أسفل الباركود.

كائن وحدة النص (Text module object)

Anchor link to
الحقلالنوعالوصف
idstringمعرّف الوحدة.
headerstringعنوان الوحدة.
bodystringنص الوحدة.
Anchor link to
الحقلالنوعالوصف
uristringعنوان URL للرابط الخارجي.
descriptionstringتسمية الرابط المعروضة في عرض التفاصيل.
Anchor link to
الحقلالنوعالوصف
uristringعنوان URL للويب أو URI هدف الرابط العميق.
androidPackageNamestringاختياري. عند تعيينه، يفتح تطبيق Android.
descriptionstringوصف داخلي لـ URI الهدف (ليس تسمية زر مرئية)؛ الافتراضي هو URI.

كائن الموقع (Location object)

Anchor link to
الحقلالنوعالوصف
latitudenumber-90.0 إلى +90.0.
longitudenumber-180.0 إلى +180.0.

كائن سجل البطاقة (Pass record object)

Anchor link to

يتم إرجاعه بواسطة نقاط نهاية السرد/الحصول.

الحقلالنوعالوصف
serialNumberstringالرقم التسلسلي للبطاقة.
objectIdstringمعرّف كائن Google Wallet الكامل {issuerId}.{serialNumber}.
cardTitlestringعنوان العرض/الترويسة للبطاقة.
headerstringعنوان عرض ثانوي.
userIdstringمعرّف مستخدم Pushwoosh الذي صدرت له البطاقة.
createdAt / updatedAtstringالطوابع الزمنية للإنشاء وآخر تحديث.
statestringACTIVE أو INACTIVE.
stylestringgeneric، offer، loyalty، eventTicket، giftCard، flight، أو transit.
passobjectكائن البطاقة الكامل، للتحرير.