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

واجهة برمجة تطبيقات 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

كائن البطاقة

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.

الكائن العام

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

كائن العرض

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

كائن الولاء

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

كائن تذكرة الفعالية

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.

كائن بطاقة الهدايا

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

كائن الرحلة الجوية

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، ثم رمز شركة الطيران.

كائن النقل

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

كائن مرحلة النقل

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

كائن الباركود

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

كائن وحدة النص

Anchor link to
الحقلالنوعالوصف
idstringمعرّف الوحدة.
headerstringعنوان الوحدة.
bodystringنص الوحدة.

كائن وحدة الرابط

Anchor link to
الحقلالنوعالوصف
uristringعنوان URL للرابط الخارجي.
descriptionstringتسمية الرابط المعروضة في عرض التفاصيل.

كائن رابط التطبيق

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

كائن الموقع

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

كائن سجل البطاقة

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كائن البطاقة الكامل، للتحرير.