跳到内容

Apple Wallet PassKit API

PassKit Designer API 允许您以编程方式创建、更新、下载和管理 Apple Wallet 通票。它支持与控制面板中的通票构建器相同的操作。使用它来发行会员卡、优惠券、活动门票、登机牌和商店卡,并向已安装在用户设备上的通票推送实时更新。

https://apple-passkit.svc-nue.pushwoosh.com

所有端点都通过 HTTPS 提供服务。除非另有说明,否则请求和响应均使用 application/json

身份验证

Anchor link to

每个请求都必须包含一个 Authorization 标头,其中包含您的 Pushwoosh API 访问令牌

Authorization: Token <api-token>

拥有令牌的账户必须拥有 applicationCode 引用的应用程序。对属于另一个账户的应用程序的请求将返回 403 Forbidden

  • 字段命名: JSON 字段使用 lowerCamelCase(例如,passTypeIdentifierserialNumberbackgroundColor)。
  • 未填充字段: 响应包含所有字段,即使它们为空或值为零。
  • 二进制数据: bytes 字段(如 pkpassData 和图像 data)在 JSON 中是 Base64 编码的字符串。
  • 序列号: serialNumber 总是在创建通票时由服务器分配。您在创建时发送的任何值都将被忽略;它用于标识通票以进行后续所有操作。

错误响应

Anchor link to

API 将内部状态码映射到 HTTP 状态码:

HTTP 状态含义
400 Bad Request无效参数——缺少必需字段或字段格式不正确。
401 Unauthorized缺少或无效的 Authorization 标头。
403 Forbidden该应用程序不属于调用者的账户。
404 Not Found未找到通票、模板或应用程序。
503 Service Unavailable服务已满负荷或暂时不可用。
方法路径描述
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通票图片(图标、标志等)。iconlogo 是有效通票的必需项。
userIdstring通票发行给的 Pushwoosh User ID。
applicationCodestringPushwoosh 应用程序代码
请求示例
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" }
]
}
字段类型描述
serialNumberstring服务器分配的已创建通票的唯一标识。使用它来获取通票(获取通票)或下载 .pkpass下载通票)。
messagestring结果消息。
响应示例
Anchor link to
{
"serialNumber": "a1b2c3d4-1234-5678-9abc-def012345678",
"message": "Pass created successfully"
}

验证通票

Anchor link to

根据 Apple 的规范检查通票配置,而无需创建文件。在调用 create 之前很有用。

POST /api/pass/validate

请求正文

Anchor link to
参数类型必需描述
passobject要验证的通票对象
字段类型描述
validboolean通票是否通过验证。
errorsarray of strings必须修复的阻塞性问题。
warningsarray of strings非阻塞性建议。

更新通票

Anchor link to

用新内容重新生成通票,重新签名,增加其更新标签,并向注册了该通票的每个设备发送静默推送通知。然后,iOS 会在后台获取并安装更新后的版本。

POST /api/pass/update/{serialNumber}

路径参数

Anchor link to
参数类型描述
serialNumberstring创建通票时返回的序列号。

请求正文

Anchor link to
参数类型必需描述
updatesobject包含新内容的完整通票对象
applicationCodestringPushwoosh 应用程序代码。

无论您发送什么,服务器都会保留 serialNumber(来自路径)和通票的身份验证令牌。

字段类型描述
successboolean更新是否成功。
updateTaginteger新的更新标签(一个 Unix 时间戳)。
messagestring结果消息。

列出通票

Anchor link to

返回为应用程序存储的通票的分页、排序列表。

GET /api/passes?applicationCode=XXXXX-XXXXX&page=0&perPage=20

查询参数

Anchor link to
参数类型必需描述
applicationCodestringPushwoosh 应用程序代码。
orderBystring排序字段:UPDATED(默认)或 CREATED
orderDirectionstring排序方向:DESC(默认,最新在前)或 ASC
pageinteger从零开始的页面索引。默认为 0
perPageinteger页面大小。0 或省略将使用服务器默认值。
字段类型描述
passesarray of objects当前页的通票记录
pageinteger返回的页面索引。
perPageinteger此响应使用的页面大小。
totalinteger应用程序在所有页面上的通票总数。
响应示例
Anchor link to
{
"passes": [ /* pass records */ ],
"page": 0,
"perPage": 20,
"total": 137
}

获取通票

Anchor link to

返回单个存储的通票,包括其完整的通票对象。

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

路径参数

Anchor link to
参数类型描述
applicationCodestringPushwoosh 应用程序代码。
serialNumberstring通票序列号。

返回 { "pass": { ... } },一个通票记录

下载通票

Anchor link to

返回现有通票的已存储 .pkpass 文件。

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

字段类型描述
pkpassDatastring (Base64).pkpass 文件。
filenamestring建议的文件名。

删除通票

Anchor link to

删除通票记录及其存储的 .pkpass 文件。

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

字段类型描述
successboolean通票是否已删除。
messagestring结果消息。

获取通票注册信息

Anchor link to

列出已添加该通票并注册更新的设备。

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

返回 { "registrations": [ ... ] },其中每个项目包含:

字段类型描述
deviceLibraryIdentifierstringApple 设备库标识符。
pushTokenstring设备的通票推送令牌。

获取配置

Anchor link to

返回从应用程序证书中解析出的 PassKit 配置。

GET /api/config?applicationCode=XXXXX-XXXXX

字段类型描述
teamIdentifierstring来自证书的 Apple Team ID。
passTypeIdentifierstring来自证书的 Pass Type ID。
organizationNamestring来自证书的组织名称。
hasCertificateboolean是否已配置证书。
webServiceUrlstring通票 Web 服务的基 URL。客户端通过附加 /v1/passes/{passType}/{serial}?token={authToken} 来构建安装链接。

列出可用的通票模板,或获取一个作为您可以使用的起点的通票对象

GET /api/templates — 返回 { "templates": [ { "filename", "name", "description", "style" } ] }

GET /api/templates/{filename} — 返回 { "template": { ...通票对象... } }

以二维码形式分享通票

Anchor link to

要让用户通过扫描二维码(或点击链接)添加通票,请将通票安装 URL 编码为二维码。该 URL 是根据您已从 API 获取的值构建的:

{webServiceUrl}/v1/passes/{passTypeIdentifier}/{serialNumber}?token={authenticationToken}
URL 部分从何处获取
webServiceUrlGET /api/configwebServiceUrl
passTypeIdentifier通票记录pass.passTypeIdentifier(来自 list/get)
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

使用任何 QR 库将此 URL 渲染为二维码。当用户扫描它时,他们的设备会打开链接,下载最新的 .pkpass,并且 Wallet 会提示他们添加它——这也会为设备注册更新。

对象参考

Anchor link to

通票对象

Anchor link to
字段类型描述
formatVersioninteger通票格式版本。默认为 1
passTypeIdentifierstringApple Pass Type ID (pass.com.yourcompany.passtype)。默认为证书中的值。
serialNumberstring在创建时由服务器分配;用于标识通票。
teamIdentifierstringApple Team ID。默认为证书中的值。
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位置相关性的最大距离(米)。
expirationDatestringISO 8601 过期日期。
voidedboolean将通票标记为无效。
groupingIdentifierstring对相关通票(活动门票/登机牌)进行分组。
userInfoobject (map)任意键/值应用数据。

字段组对象

Anchor link to

每种通票样式(boardingPasscouponeventTicketstoreCardgeneric)都将字段分组到不同区域:

字段类型描述
headerFieldsarray显示在通票标题中(在 Wallet 中堆叠时可见)。
primaryFieldsarray最突出的字段。
secondaryFieldsarray在主字段下方。
auxiliaryFieldsarray在次要字段下方的附加字段。
backFieldsarray显示在通票背面。

boardingPass 额外具有 transitTypePKTransitTypeAirPKTransitTypeTrainPKTransitTypeBusPKTransitTypeBoatPKTransitTypeGeneric)。

字段对象

Anchor link to
字段类型描述
keystring通票内的唯一字段键。
labelstring字段标签。
valuestring字段值(文本或数字,以字符串形式表示)。
changeMessagestring值更改时显示的消息(使用 %@ 作为占位符)。
textAlignmentstringPKTextAlignment 值。
dateStyle / timeStylestring用于日期/时间格式化的 PKDateStyle
isRelativeboolean显示相对于现在的日期。
numberStylestring用于数字格式化的 PKNumberStyle
currencyCodestringISO 4217 货币代码。
dataDetectorTypesarray of strings应用于该值的数据检测器。

条形码对象

Anchor link to
字段类型描述
formatstringPKBarcodeFormatQRPKBarcodeFormatPDF417PKBarcodeFormatAztecPKBarcodeFormatCode128
messagestring在条形码中编码的数据。
messageEncodingstring文本编码,通常为 iso-8859-1
altTextstring显示在条形码下方的文本。

位置对象

Anchor link to
字段类型描述
latitudenumber纬度。
longitudenumber经度。
altitudenumber海拔高度(米)。
relevantTextstring在此位置附近锁屏上显示的文本。

信标对象

Anchor link to
字段类型描述
proximityUuidstringiBeacon 邻近 UUID。
majorintegerMajor 值。
minorintegerMinor 值。
relevantTextstring在此信标附近锁屏上显示的文本。

通票图片对象

Anchor link to
字段类型描述
imageTypestringiconlogostripbackgroundfooterthumbnail 之一。iconlogo 是必需的。
datastring (Base64)图片字节。
contentTypestringMIME 类型,例如 image/png

通票记录对象

Anchor link to

由 list/get 端点返回。

字段类型描述
serialNumberstring通票序列号。
passTypeIdentifierstringPass Type ID。
organizationNamestring组织名称。
descriptionstring通票描述。
createdAtstring创建时间戳 (RFC 3339)。
updatedAtstring最后更新时间戳 (RFC 3339)。
updateTaginteger当前更新标签。
passobject完整的通票对象,用于编辑。
userIdstring通票发行给的 Pushwoosh User ID。