- Apple Developer 账号和 Merchant ID;
- Payment Processing Certificate 及对应私钥;
- Apple Pay on the Web 所需的域名验证;
- Apple Pay JS 或 PassKit 前端集成;
- Token 验签、解密、防重放检查和敏感数据合规措施。
当前支持:透传解密后的 Token
当前你必须先在 Merchant 服务端解密 Apple Pay Token,再按本页格式将解密结果传给 Waffo。请求必须包含
token.decryptedPaymentData。token.paymentData 可以同时保留,但不能单独作为透传结果。原生加密 Token 结构
Apple Pay JS 或 PassKit 会返回下面的原生 payment token 信封。当前该对象是 Merchant 服务端执行验签和解密时的输入,不是可以直接提交给 Waffo 的paymentTokenData。
解密和校验 Token
Apple Pay JS 或 PassKit 返回的 Token 中,token.paymentData 包含加密支付数据。你需要在服务端:
1
选择解密密钥
使用与 Payment Processing Certificate 匹配的私钥处理 Token。
2
验证 Token
按 Apple 的规范验证 Token 签名和证书链。
3
解密支付数据
按 Token 的
version 解密 token.paymentData.data,并将 UTF-8 结果解析为 JSON。4
验证交易
确认
transactionId 未被处理过,并核对解密结果中的币种和金额。5
组装 Waffo 请求
将解密后的 JSON 放入
token.decryptedPaymentData,再提交给 Waffo。解密后 payload 结构
token.paymentData 解密后得到 Apple 定义的 payment token payload:
merchantTokenIdentifier 等 Merchant Token 信息。
透传格式
只提交解密后的 payload 不够。解密后的数据不包含卡组network,而且 Apple Pay 设备卡号的 BIN 通常无法反查卡组。账单联系人 billingContact 也位于加密数据之外,是持卡人姓名和账单地址的唯一来源。你必须保留 Apple Pay 返回对象的外层结构,并在 token 中增加 token.decryptedPaymentData。token.paymentData 可以同时保留。
下面的 JSON 是 /api/v1/order/create 请求字段 paymentTokenData 的内容:
paymentTokenData 在创建订单 API 中是 String。提交请求前,将上述完整对象序列化为 JSON 字符串:
token.decryptedPaymentData 时,会优先按解密后 Token 处理并跳过平台解密。
字段要求
只有 Apple Pay 支持解密后 Token 透传。Google Pay Token 必须以加密形式提交。