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

واجهة برمجة تطبيقات 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",
"logoText": "Acme",
"backgroundColor": "rgb(60, 65, 76)",
"foregroundColor": "rgb(255, 255, 255)",
"labelColor": "rgb(255, 255, 255)",
"storeCard": {
"primaryFields": [
{ "key": "balance", "label": "الرصيد", "value": "1200 نقطة" }
],
"secondaryFields": [
{ "key": "member", "label": "عضو", "value": "جين دو" }
]
},
"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": "تم إنشاء البطاقة بنجاح"
}

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

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": { ...كائن البطاقة... } }.

مشاركة بطاقة كرمز 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المنارات (Beacons) التي تجعل البطاقة ذات صلة.
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النص المعروض على شاشة القفل بالقرب من هذا الموقع.

كائن المنارة (Beacon)

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 الذي صدرت له البطاقة.