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

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

تتيح لك واجهة برمجة تطبيقات PassKit Designer إنشاء بطاقات Apple 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 (على سبيل المثال، passTypeIdentifier، serialNumber، backgroundColor).
  • الحقول غير المعبأة: تتضمن الاستجابات جميع الحقول، حتى عندما تكون فارغة أو قيمتها صفر.
  • البيانات الثنائية: حقول bytes مثل pkpassData و data للصور هي سلاسل نصية بترميز Base64 في JSON.
  • الأرقام التسلسلية: يتم تعيين serialNumber دائمًا بواسطة الخادم عند إنشاء بطاقة. يتم تجاهل أي قيمة ترسلها عند الإنشاء؛ فهو يحدد البطاقة لجميع العمليات اللاحقة.

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

Anchor link to

تقوم واجهة برمجة التطبيقات بربط رموز الحالة الداخلية برموز حالة HTTP:

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

نقاط النهاية

Anchor link to
الطريقةالمسارالوصف
POST/api/pass/validateالتحقق من صحة تكوين بطاقة
POST/api/pass/createإنشاء .pkpass جديد
POST/api/pass/update/{serialNumber}تحديث بطاقة موجودة وإخطار الأجهزة
GET/api/passesسرد جميع البطاقات لتطبيق ما
GET/api/pass/{applicationCode}/{serialNumber}الحصول على بطاقة واحدة
GET/api/pass/{applicationCode}/{serialNumber}/downloadتنزيل .pkpass لبطاقة موجودة
DELETE/api/pass/{applicationCode}/{serialNumber}حذف بطاقة
GET/api/pass/{serialNumber}/registrationsسرد الأجهزة المسجلة لبطاقة
GET/api/configالحصول على تكوين PassKit للتطبيق
GET/api/templatesسرد قوالب البطاقات المتاحة
GET/api/templates/{filename}الحصول على قالب واحد

إنشاء بطاقة

Anchor link to

يُنشئ ويوقع ويخزن بطاقة جديدة، ثم يُرجع رقمها التسلسلي المعين من الخادم.

POST /api/pass/create

نص الطلب

Anchor link to
المعلمةالنوعمطلوبالوصف
passobjectنعمكائن البطاقة الذي يصف البطاقة.
imagesarray of objectsلاصور البطاقة (أيقونة، شعار، إلخ). icon وlogo مطلوبان لبطاقة صالحة.
userIdstringنعممعرّف مستخدم Pushwoosh الذي أُصدرت له البطاقة.
applicationCodestringنعمرمز تطبيق Pushwoosh.
مثال على الطلب
Anchor link to
{
"applicationCode": "XXXXX-XXXXX",
"userId": "user-123",
"pass": {
"description": "Acme loyalty card",
"logoText": "Acme",
"backgroundColor": "rgb(60, 65, 76)",
"foregroundColor": "rgb(255, 255, 255)",
"labelColor": "rgb(255, 255, 255)",
"storeCard": {
"primaryFields": [
{ "key": "balance", "label": "BALANCE", "value": "1200 pts" }
],
"secondaryFields": [
{ "key": "member", "label": "MEMBER", "value": "Jane Doe" }
]
},
"barcodes": [
{
"format": "PKBarcodeFormatQR",
"message": "1234567890",
"messageEncoding": "iso-8859-1"
}
]
},
"images": [
{ "imageType": "icon", "data": "<base64>", "contentType": "image/png" },
{ "imageType": "logo", "data": "<base64>", "contentType": "image/png" }
]
}

الاستجابة

Anchor link to
الحقلالنوعالوصف
serialNumberstringالهوية الفريدة المعينة من الخادم للبطاقة التي تم إنشاؤها. استخدمها لجلب البطاقة (الحصول على بطاقة) أو تنزيل .pkpass (تنزيل بطاقة).
messagestringرسالة النتيجة.
مثال على الاستجابة
Anchor link to
{
"serialNumber": "a1b2c3d4-1234-5678-9abc-def012345678",
"message": "Pass created successfully"
}

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

Anchor link to

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

POST /api/pass/validate

نص الطلب

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

الاستجابة

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

تحديث بطاقة

Anchor link to

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

POST /api/pass/update/{serialNumber}

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

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

نص الطلب

Anchor link to
المعلمةالنوعمطلوبالوصف
updatesobjectنعمكائن البطاقة الكامل بالمحتوى الجديد.
applicationCodestringنعمرمز تطبيق Pushwoosh.

يتم الحفاظ على serialNumber (من المسار) ورمز المصادقة للبطاقة بواسطة الخادم بغض النظر عما ترسله.

الاستجابة

Anchor link to
الحقلالنوعالوصف
successbooleanما إذا كان التحديث قد نجح.
updateTagintegerعلامة التحديث الجديدة (طابع زمني Unix).
messagestringرسالة النتيجة.

سرد البطاقات

Anchor link to

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

GET /api/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
{
"passes": [ /* سجلات البطاقات */ ],
"page": 0,
"perPage": 20,
"total": 137
}

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

Anchor link to

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

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

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

Anchor link to
المعلمةالنوعالوصف
applicationCodestringرمز تطبيق Pushwoosh.
serialNumberstringالرقم التسلسلي للبطاقة.

الاستجابة

Anchor link to

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

تنزيل بطاقة

Anchor link to

يُرجع ملف .pkpass المخزن لبطاقة موجودة.

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

الاستجابة

Anchor link to
الحقلالنوعالوصف
pkpassDatastring (Base64)ملف .pkpass.
filenamestringاسم الملف المقترح.

حذف بطاقة

Anchor link to

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

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

الاستجابة

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

الحصول على تسجيلات البطاقة

Anchor link to

يسرد الأجهزة التي أضافت البطاقة ومسجلة للتحديثات.

GET /api/pass/{serialNumber}/registrations?applicationCode=XXXXX-XXXXX

الاستجابة

Anchor link to

يُرجع { "registrations": [ ... ] }، حيث يحتوي كل عنصر على:

الحقلالنوعالوصف
deviceLibraryIdentifierstringمعرّف مكتبة جهاز Apple.
pushTokenstringرمز الدفع للبطاقة للجهاز.

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

Anchor link to

يُرجع تكوين PassKit الذي تم حله لتطبيق من شهادته.

GET /api/config?applicationCode=XXXXX-XXXXX

الاستجابة

Anchor link to
الحقلالنوعالوصف
teamIdentifierstringمعرّف فريق Apple من الشهادة.
passTypeIdentifierstringمعرّف نوع البطاقة من الشهادة.
organizationNamestringاسم المنظمة من الشهادة.
hasCertificatebooleanما إذا كانت الشهادة مكونة.
webServiceUrlstringعنوان URL الأساسي لخدمة الويب للبطاقة. يقوم العملاء بإنشاء رابط تثبيت بإضافة /v1/passes/{passType}/{serial}?token={authToken}.

القوالب

Anchor link to

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

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

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

مشاركة بطاقة كرمز QR

Anchor link to

للسماح للمستخدمين بإضافة بطاقة عن طريق مسح رمز QR (أو النقر على رابط)، قم بترميز عنوان URL لتثبيت البطاقة في رمز QR. يتم بناء عنوان URL من القيم التي تحصل عليها بالفعل من واجهة برمجة التطبيقات:

{webServiceUrl}/v1/passes/{passTypeIdentifier}/{serialNumber}?token={authenticationToken}
جزء URLمن أين تحصل عليه
webServiceUrlGET /api/configwebServiceUrl
passTypeIdentifierسجل البطاقةpass.passTypeIdentifier (من القائمة/الحصول)
serialNumberسجل البطاقةserialNumber
authenticationTokenسجل البطاقةpass.authenticationToken

مثال:

https://apple-passkit.svc-nue.pushwoosh.com/v1/passes/pass.com.acme.loyalty/a1b2c3d4-1234-5678-9abc-def012345678?token=AbC123XyZ

قم بعرض عنوان URL هذا كرمز QR باستخدام أي مكتبة QR. عندما يقوم المستخدم بمسحه، يفتح جهازه الرابط، وينزل أحدث .pkpass، وتطالبه Wallet بإضافته — مما يسجل الجهاز أيضًا للتحديثات.

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

Anchor link to

كائن البطاقة

Anchor link to
الحقلالنوعالوصف
formatVersionintegerإصدار تنسيق البطاقة. الافتراضي 1.
passTypeIdentifierstringمعرّف نوع بطاقة Apple (pass.com.yourcompany.passtype). الافتراضي من الشهادة.
serialNumberstringيتم تعيينه بواسطة الخادم عند الإنشاء؛ يحدد البطاقة.
teamIdentifierstringمعرّف فريق Apple. الافتراضي من الشهادة.
organizationNamestringالمنظمة المعروضة على البطاقة. الافتراضي من الشهادة.
descriptionstringوصف يمكن قراءته من قبل الإنسان (مطلوب من قبل Apple).
boardingPass / coupon / eventTicket / storeCard / genericobjectنمط البطاقة. يجب تعيين واحد بالضبط. انظر مجموعات الحقول.
backgroundColorstringلون الخلفية، rgb(r, g, b).
foregroundColorstringلون المقدمة (النص)، rgb(r, g, b).
labelColorstringلون تسمية الحقل، rgb(r, g, b).
logoTextstringالنص المعروض بجانب الشعار.
suppressStripShinebooleanتعطيل تأثير اللمعان على صورة الشريط.
barcodesarrayالباركود المعروض على البطاقة.
locationsarrayالمواقع التي تجعل البطاقة ذات صلة.
beaconsarrayالمنارات التي تجعل البطاقة ذات صلة.
relevantDatestringتاريخ ISO 8601 عندما تصبح البطاقة ذات صلة.
maxDistanceintegerأقصى مسافة (بالأمتار) لصلة الموقع.
expirationDatestringتاريخ انتهاء الصلاحية ISO 8601.
voidedbooleanيضع علامة على البطاقة كملغاة.
groupingIdentifierstringيجمع البطاقات ذات الصلة (تذاكر الفعاليات/بطاقات الصعود).
userInfoobject (map)بيانات تطبيق عشوائية بقيمة/مفتاح.

كائن مجموعة الحقول

Anchor link to

كل نمط بطاقة (boardingPass، coupon، eventTicket، storeCard، generic) يجمع الحقول في مناطق:

الحقلالنوعالوصف
headerFieldsarrayتظهر في ترويسة البطاقة (مرئية عند تكديسها في Wallet).
primaryFieldsarrayأبرز الحقول.
secondaryFieldsarrayأسفل الحقول الأساسية.
auxiliaryFieldsarrayحقول إضافية أسفل الثانوية.
backFieldsarrayتظهر على ظهر البطاقة.

boardingPass لديه بالإضافة إلى ذلك transitType (PKTransitTypeAir، PKTransitTypeTrain، PKTransitTypeBus، PKTransitTypeBoat، أو PKTransitTypeGeneric).

كائن الحقل

Anchor link to
الحقلالنوعالوصف
keystringمفتاح حقل فريد داخل البطاقة.
labelstringتسمية الحقل.
valuestringقيمة الحقل (نص أو رقم كسلسلة نصية).
changeMessagestringالرسالة المعروضة عند تغيير القيمة (استخدم %@ كعنصر نائب).
textAlignmentstringقيمة PKTextAlignment.
dateStyle / timeStylestringPKDateStyle لتنسيق التاريخ/الوقت.
isRelativebooleanعرض التاريخ بالنسبة للوقت الحالي.
numberStylestringPKNumberStyle لتنسيق الأرقام.
currencyCodestringرمز العملة ISO 4217.
dataDetectorTypesarray of stringsكاشفات البيانات لتطبيقها على القيمة.

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

Anchor link to
الحقلالنوعالوصف
formatstringPKBarcodeFormatQR، PKBarcodeFormatPDF417، PKBarcodeFormatAztec، أو PKBarcodeFormatCode128.
messagestringالبيانات المشفرة في الباركود.
messageEncodingstringترميز النص، عادة iso-8859-1.
altTextstringالنص المعروض أسفل الباركود.

كائن الموقع

Anchor link to
الحقلالنوعالوصف
latitudenumberخط العرض.
longitudenumberخط الطول.
altitudenumberالارتفاع بالأمتار.
relevantTextstringالنص المعروض على شاشة القفل بالقرب من هذا الموقع.

كائن المنارة

Anchor link to
الحقلالنوعالوصف
proximityUuidstringiBeacon proximity UUID.
majorintegerالقيمة الرئيسية.
minorintegerالقيمة الثانوية.
relevantTextstringالنص المعروض على شاشة القفل بالقرب من هذه المنارة.

كائن صورة البطاقة

Anchor link to
الحقلالنوعالوصف
imageTypestringواحد من icon، logo، strip، background، footer، thumbnail. icon و logo مطلوبان.
datastring (Base64)بايتات الصورة.
contentTypestringنوع MIME، على سبيل المثال image/png.

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

Anchor link to

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

الحقلالنوعالوصف
serialNumberstringالرقم التسلسلي للبطاقة.
passTypeIdentifierstringمعرّف نوع البطاقة.
organizationNamestringاسم المنظمة.
descriptionstringوصف البطاقة.
createdAtstringالطابع الزمني للإنشاء (RFC 3339).
updatedAtstringالطابع الزمني لآخر تحديث (RFC 3339).
updateTagintegerعلامة التحديث الحالية.
passobjectكائن البطاقة الكامل، للتحرير.
userIdstringمعرّف مستخدم Pushwoosh الذي تم إصدار البطاقة له.