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

Apple Wallet PassKit API

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

URL พื้นฐาน

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

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

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

Anchor link to

ทุกคำขอต้องมีเฮดเดอร์ Authorization พร้อมกับ Pushwoosh API access token ของคุณ:

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ใช่Pushwoosh User ID ที่ 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 ใหม่ด้วยเนื้อหาใหม่ ลงนามใหม่ เพิ่มแท็กอัปเดต และส่ง silent push notification ไปยังทุกอุปกรณ์ที่ลงทะเบียน pass นั้น จากนั้น iOS จะดึงข้อมูลและติดตั้งเวอร์ชันที่อัปเดตในเบื้องหลัง

POST /api/pass/update/{serialNumber}

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

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

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

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

serialNumber (จากพาธ) และโทเค็นการรับรองความถูกต้องของ 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 code

Anchor link to

เพื่อให้ผู้ใช้สามารถเพิ่ม pass โดยการสแกน QR code (หรือแตะลิงก์) ให้เข้ารหัส URL การติดตั้ง pass เป็น QR code 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 code ด้วยไลบรารี 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 ทั้งหมด สำหรับการแก้ไข
userIdstringPushwoosh User ID ที่ pass ถูกออกให้