ข้ามไปยังเนื้อหา

API ของ Apple Wallet PassKit

PassKit Designer API ช่วยให้คุณสามารถสร้าง อัปเดต ดาวน์โหลด และจัดการ Apple Wallet passes ผ่านโปรแกรมได้ รองรับการทำงานเช่นเดียวกับตัวสร้าง pass ใน Control Panel ใช้ API นี้เพื่อออกบัตรสะสมคะแนน คูปอง ตั๋วงานกิจกรรม บัตรขึ้นเครื่อง และบัตรสมาชิก และเพื่อส่งการอัปเดตสดไปยัง pass ที่ติดตั้งอยู่บนอุปกรณ์ของผู้ใช้ของคุณแล้ว

URL พื้นฐาน

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

Endpoints ทั้งหมดให้บริการผ่าน HTTPS คำขอและการตอบกลับใช้ application/json เว้นแต่จะระบุไว้เป็นอย่างอื่น

การรับรองความถูกต้อง

Anchor link to

ทุกคำขอต้องมีเฮดเดอร์ Authorization พร้อมกับ โทเค็นการเข้าถึง API ของ Pushwoosh ของคุณ:

Authorization: Token <api-token>

บัญชีที่เป็นเจ้าของโทเค็นจะต้องเป็นเจ้าของแอปพลิเคชันที่อ้างอิงโดย applicationCode คำขอสำหรับแอปพลิเคชันที่เป็นของบัญชีอื่นจะส่งคืน 403 Forbidden

ข้อตกลงทั่วไป

Anchor link to
  • การตั้งชื่อฟิลด์: ฟิลด์ JSON ใช้ lowerCamelCase (ตัวอย่างเช่น passTypeIdentifier, serialNumber, backgroundColor)
  • ฟิลด์ที่ไม่มีข้อมูล: การตอบกลับจะรวมฟิลด์ทั้งหมด แม้ว่าจะเป็นค่าว่างหรือค่าศูนย์
  • ข้อมูลไบนารี: ฟิลด์ bytes เช่น pkpassData และ data ของรูปภาพเป็นสตริงที่เข้ารหัสแบบ Base64 ใน JSON
  • หมายเลขซีเรียล: serialNumber จะถูกกำหนดโดยเซิร์ฟเวอร์เสมอเมื่อมีการสร้าง pass ค่าใดๆ ที่คุณส่งเมื่อสร้างจะถูกละเว้น; มันจะระบุ pass สำหรับการดำเนินการทั้งหมดในภายหลัง

การตอบกลับข้อผิดพลาด

Anchor link to

API จะจับคู่รหัสสถานะภายในกับรหัสสถานะ HTTP:

รหัสสถานะ HTTPความหมาย
400 Bad Requestอาร์กิวเมนต์ไม่ถูกต้อง—ฟิลด์ที่จำเป็นขาดหายไปหรือมีรูปแบบไม่ถูกต้อง
401 Unauthorizedเฮดเดอร์ Authorization ขาดหายไปหรือไม่ถูกต้อง
403 Forbiddenแอปพลิเคชันไม่ได้เป็นของบัญชีของผู้เรียก
404 Not Foundไม่พบ pass, เทมเพลต หรือแอปพลิเคชัน
503 Service Unavailableบริการเต็มความจุหรือใช้งานไม่ได้ชั่วคราว
เมธอดพาธคำอธิบาย
POST/api/pass/validateตรวจสอบการกำหนดค่า pass
POST/api/pass/createสร้าง .pkpass ใหม่
POST/api/pass/update/{serialNumber}อัปเดต pass ที่มีอยู่และแจ้งเตือนอุปกรณ์
GET/api/passesแสดงรายการ pass ทั้งหมดสำหรับแอปพลิเคชัน
GET/api/pass/{applicationCode}/{serialNumber}รับ pass รายการเดียว
GET/api/pass/{applicationCode}/{serialNumber}/downloadดาวน์โหลดไฟล์ .pkpass ของ pass ที่มีอยู่
DELETE/api/pass/{applicationCode}/{serialNumber}ลบ pass
GET/api/pass/{serialNumber}/registrationsแสดงรายการอุปกรณ์ที่ลงทะเบียนสำหรับ pass
GET/api/configรับการกำหนดค่า PassKit ของแอปพลิเคชัน
GET/api/templatesแสดงรายการเทมเพลต pass ที่มีอยู่
GET/api/templates/{filename}รับเทมเพลตรายการเดียว

สร้าง pass

Anchor link to

สร้าง ลงนาม และจัดเก็บ pass ใหม่ จากนั้นส่งคืนหมายเลขซีเรียลที่เซิร์ฟเวอร์กำหนด

POST /api/pass/create

เนื้อหาของคำขอ

Anchor link to
พารามิเตอร์ประเภทจำเป็นคำอธิบาย
passobjectใช่อ็อบเจกต์ pass ที่อธิบาย pass
imagesarray of objectsไม่รูปภาพของ Pass (ไอคอน, โลโก้, ฯลฯ) icon และ logo เป็นสิ่งจำเป็นสำหรับ pass ที่ถูกต้อง
userIdstringใช่User ID ของ Pushwoosh ที่ pass ถูกออกให้
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ข้อมูลระบุตัวตนที่ไม่ซ้ำกันของ pass ที่สร้างขึ้นซึ่งกำหนดโดยเซิร์ฟเวอร์ ใช้เพื่อดึงข้อมูล pass (รับ pass) หรือดาวน์โหลด .pkpass (ดาวน์โหลด pass)
messagestringข้อความผลลัพธ์
ตัวอย่างการตอบกลับ
Anchor link to
{
"serialNumber": "a1b2c3d4-1234-5678-9abc-def012345678",
"message": "Pass created successfully"
}

ตรวจสอบ pass

Anchor link to

ตรวจสอบการกำหนดค่า pass เทียบกับข้อกำหนดของ Apple โดยไม่ต้องสร้างไฟล์ มีประโยชน์ก่อนที่จะเรียกใช้ create

POST /api/pass/validate

เนื้อหาของคำขอ

Anchor link to
พารามิเตอร์ประเภทจำเป็นคำอธิบาย
passobjectใช่อ็อบเจกต์ pass ที่จะตรวจสอบ

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
validbooleanระบุว่า pass ผ่านการตรวจสอบหรือไม่
errorsarray of stringsปัญหาที่บล็อกซึ่งต้องได้รับการแก้ไข
warningsarray of stringsคำแนะนำที่ไม่ใช่การบล็อก

อัปเดต pass

Anchor link to

สร้าง pass ใหม่ด้วยเนื้อหาใหม่ ลงนามใหม่ เพิ่มแท็กการอัปเดต และส่ง push notification แบบเงียบ ไปยังทุกอุปกรณ์ที่ลงทะเบียน pass นั้นไว้ จากนั้น iOS จะดึงข้อมูลและติดตั้งเวอร์ชันที่อัปเดตในเบื้องหลัง

POST /api/pass/update/{serialNumber}

พารามิเตอร์ของพาธ

Anchor link to
พารามิเตอร์ประเภทคำอธิบาย
serialNumberstringหมายเลขซีเรียลที่ได้รับคืนเมื่อ pass ถูกสร้างขึ้น

เนื้อหาของคำขอ

Anchor link to
พารามิเตอร์ประเภทจำเป็นคำอธิบาย
updatesobjectใช่อ็อบเจกต์ pass ฉบับเต็มพร้อมเนื้อหาใหม่
applicationCodestringใช่รหัสแอปพลิเคชัน Pushwoosh

serialNumber (จาก path) และโทเค็นการรับรองความถูกต้องของ pass จะถูกเก็บรักษาโดยเซิร์ฟเวอร์ไม่ว่าคุณจะส่งอะไรไปก็ตาม

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
successbooleanระบุว่าการอัปเดตสำเร็จหรือไม่
updateTagintegerแท็กการอัปเดตใหม่ (การประทับเวลา Unix)
messagestringข้อความผลลัพธ์

แสดงรายการ pass

Anchor link to

ส่งคืนรายการ pass ที่จัดเก็บไว้สำหรับแอปพลิเคชันในรูปแบบที่มีการแบ่งหน้าและจัดเรียง

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หน้าปัจจุบันของ บันทึก pass
pageintegerดัชนีหน้าที่ส่งคืน
perPageintegerขนาดหน้าที่ใช้สำหรับการตอบกลับนี้
totalintegerจำนวน pass ทั้งหมดสำหรับแอปพลิเคชันในทุกหน้า
ตัวอย่างการตอบกลับ
Anchor link to
{
"passes": [ /* pass records */ ],
"page": 0,
"perPage": 20,
"total": 137
}

รับ pass

Anchor link to

ส่งคืน pass ที่จัดเก็บไว้รายการเดียว รวมถึงอ็อบเจกต์ pass ฉบับเต็ม

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

พารามิเตอร์ของพาธ

Anchor link to
พารามิเตอร์ประเภทคำอธิบาย
applicationCodestringรหัสแอปพลิเคชัน Pushwoosh
serialNumberstringหมายเลขซีเรียลของ pass

การตอบกลับ

Anchor link to

ส่งคืน { "pass": { ... } } ซึ่งเป็น บันทึก pass รายการเดียว

ดาวน์โหลด pass

Anchor link to

ส่งคืนไฟล์ .pkpass ที่จัดเก็บไว้ของ pass ที่มีอยู่

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

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
pkpassDatastring (Base64)ไฟล์ .pkpass
filenamestringชื่อไฟล์ที่แนะนำ

ลบ pass

Anchor link to

ลบบันทึก pass และไฟล์ .pkpass ที่จัดเก็บไว้

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

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
successbooleanระบุว่า pass ถูกลบหรือไม่
messagestringข้อความผลลัพธ์

รับการลงทะเบียน pass

Anchor link to

แสดงรายการอุปกรณ์ที่ได้เพิ่ม pass และลงทะเบียนเพื่อรับการอัปเดต

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

การตอบกลับ

Anchor link to

ส่งคืน { "registrations": [ ... ] } โดยแต่ละรายการมี:

ฟิลด์ประเภทคำอธิบาย
deviceLibraryIdentifierstringตัวระบุไลบรารีอุปกรณ์ของ Apple
pushTokenstringโทเค็น push ของ pass สำหรับอุปกรณ์

รับการกำหนดค่า

Anchor link to

ส่งคืนการกำหนดค่า PassKit ที่แก้ไขสำหรับแอปพลิเคชันจากใบรับรอง

GET /api/config?applicationCode=XXXXX-XXXXX

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
teamIdentifierstringApple Team ID จากใบรับรอง
passTypeIdentifierstringPass Type ID จากใบรับรอง
organizationNamestringชื่อองค์กรจากใบรับรอง
hasCertificatebooleanระบุว่ามีการกำหนดค่าใบรับรองหรือไม่
webServiceUrlstringURL พื้นฐานของบริการเว็บ pass ไคลเอนต์สร้างลิงก์ติดตั้งโดยต่อท้ายด้วย /v1/passes/{passType}/{serial}?token={authToken}

เทมเพลต

Anchor link to

แสดงรายการเทมเพลต pass ที่มีอยู่ หรือดึงข้อมูลหนึ่งรายการเป็น อ็อบเจกต์ pass ที่คุณสามารถใช้เป็นจุดเริ่มต้นได้

GET /api/templates — ส่งคืน { "templates": [ { "filename", "name", "description", "style" } ] }

GET /api/templates/{filename} — ส่งคืน { "template": { ...pass object... } }

แชร์ pass เป็นรหัส QR

Anchor link to

เพื่อให้ผู้ใช้สามารถเพิ่ม pass โดยการสแกนรหัส QR (หรือแตะลิงก์) ให้เข้ารหัส URL การติดตั้ง ของ pass เป็นรหัส QR URL ถูกสร้างขึ้นจากค่าที่คุณได้รับกลับมาจาก API อยู่แล้ว:

{webServiceUrl}/v1/passes/{passTypeIdentifier}/{serialNumber}?token={authenticationToken}
ส่วนของ URLรับได้จากที่ไหน
webServiceUrlGET /api/configwebServiceUrl
passTypeIdentifierบันทึก passpass.passTypeIdentifier (จาก list/get)
serialNumberบันทึก passserialNumber
authenticationTokenบันทึก passpass.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

อ็อบเจกต์ Pass

Anchor link to
ฟิลด์ประเภทคำอธิบาย
formatVersionintegerเวอร์ชันรูปแบบ Pass ค่าเริ่มต้นคือ 1
passTypeIdentifierstringApple Pass Type ID (pass.com.yourcompany.passtype) ค่าเริ่มต้นจากใบรับรอง
serialNumberstringกำหนดโดยเซิร์ฟเวอร์เมื่อสร้าง; ใช้ระบุ pass
teamIdentifierstringApple Team ID ค่าเริ่มต้นจากใบรับรอง
organizationNamestringองค์กรที่แสดงบน pass ค่าเริ่มต้นจากใบรับรอง
descriptionstringคำอธิบายที่มนุษย์อ่านได้ (จำเป็นโดย Apple)
boardingPass / coupon / eventTicket / storeCard / genericobjectสไตล์ของ pass ต้องตั้งค่า เพียงหนึ่งรายการเท่านั้น ดู กลุ่มฟิลด์
backgroundColorstringสีพื้นหลัง, rgb(r, g, b)
foregroundColorstringสีพื้นหน้า (ข้อความ), rgb(r, g, b)
labelColorstringสีป้ายกำกับฟิลด์, rgb(r, g, b)
logoTextstringข้อความที่แสดงถัดจากโลโก้
suppressStripShinebooleanปิดใช้งานเอฟเฟกต์เงาบนภาพแถบ
barcodesarrayบาร์โค้ด ที่แสดงบน pass
locationsarrayตำแหน่ง ที่ทำให้ pass มีความเกี่ยวข้อง
beaconsarrayบีคอน ที่ทำให้ pass มีความเกี่ยวข้อง
relevantDatestringวันที่ในรูปแบบ ISO 8601 ที่ pass จะมีความเกี่ยวข้อง
maxDistanceintegerระยะทางสูงสุด (เมตร) สำหรับความเกี่ยวข้องของตำแหน่ง
expirationDatestringวันหมดอายุในรูปแบบ ISO 8601
voidedbooleanทำเครื่องหมาย pass ว่าเป็นโมฆะ
groupingIdentifierstringจัดกลุ่ม pass ที่เกี่ยวข้องกัน (ตั๋วงานกิจกรรม/บัตรขึ้นเครื่อง)
userInfoobject (map)ข้อมูลแอปที่เป็นคีย์/ค่าตามต้องการ

อ็อบเจกต์กลุ่มฟิลด์

Anchor link to

แต่ละสไตล์ของ pass (boardingPass, coupon, eventTicket, storeCard, generic) จะจัดกลุ่ม ฟิลด์ เป็นพื้นที่ต่างๆ:

ฟิลด์ประเภทคำอธิบาย
headerFieldsarrayแสดงในส่วนหัวของ pass (มองเห็นได้เมื่อซ้อนกันใน Wallet)
primaryFieldsarrayฟิลด์ที่โดดเด่นที่สุด
secondaryFieldsarrayอยู่ใต้ฟิลด์หลัก
auxiliaryFieldsarrayฟิลด์เพิ่มเติมใต้ฟิลด์รอง
backFieldsarrayแสดงที่ด้านหลังของ pass

boardingPass ยังมี transitType เพิ่มเติม (PKTransitTypeAir, PKTransitTypeTrain, PKTransitTypeBus, PKTransitTypeBoat, หรือ PKTransitTypeGeneric)

อ็อบเจกต์ฟิลด์

Anchor link to
ฟิลด์ประเภทคำอธิบาย
keystringคีย์ฟิลด์ที่ไม่ซ้ำกันภายใน pass
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ค่า Major
minorintegerค่า Minor
relevantTextstringข้อความที่แสดงบนหน้าจอล็อกใกล้กับบีคอนนี้

อ็อบเจกต์รูปภาพของ Pass

Anchor link to
ฟิลด์ประเภทคำอธิบาย
imageTypestringหนึ่งใน icon, logo, strip, background, footer, thumbnail icon และ logo เป็นสิ่งจำเป็น
datastring (Base64)ไบต์ของรูปภาพ
contentTypestringประเภท MIME ตัวอย่างเช่น image/png

อ็อบเจกต์บันทึก Pass

Anchor link to

ส่งคืนโดย endpoints list/get

ฟิลด์ประเภทคำอธิบาย
serialNumberstringหมายเลขซีเรียลของ Pass
passTypeIdentifierstringPass Type ID
organizationNamestringชื่อองค์กร
descriptionstringคำอธิบาย Pass
createdAtstringการประทับเวลาที่สร้าง (RFC 3339)
updatedAtstringการประทับเวลาอัปเดตล่าสุด (RFC 3339)
updateTagintegerแท็กการอัปเดตปัจจุบัน
passobjectอ็อบเจกต์ pass ฉบับเต็ม สำหรับการแก้ไข
userIdstringUser ID ของ Pushwoosh ที่ pass ถูกออกให้