Wallet 与 Apple Pay 新变化
What's new in Wallet and Apple Pay
2021年6月9日
一句话判断
Wallet 支持了 App Clip Code、新的通行证类型和订单追踪,Apple Pay 则增加了延期增强(Deffered Payment)和自动 reload —— 苹果正在把 Wallet 从”卡包”变成”万能数字容器”。
这场 Session 讲了什么
Session 覆盖了 Wallet 和 Apple Pay 在 iOS 15 中的多项更新。
Wallet 方面:新增了对 App Clip Code 的支持(扫描后直接打开 App Clip)、新的 pass 类型(酒店钥匙、企业凭证、身份验证)、以及订单追踪功能。用户在 Safari 中完成购买后,可以在 Wallet 中追踪订单状态,无需安装额外 app。
Apple Pay 方面:引入了延期增强支付(Deferred Payment),允许商家在用户确认后一段时间才扣款(如酒店押金、延迟发货的预购)。还新增了自动充值(Auto Reload),当余额低于阈值时自动扣款充值(如交通卡、储值卡)。
还讲解了 pass 文件格式(PKPass)的新字段和 Apple Pay JS / Payment Sheet 的 UI 改进。
值得深挖的点
订单追踪的 Order Tracking API。当用户在 Safari 中完成 Apple Pay 支付后,系统会自动在 Wallet 中创建一个订单追踪条目。实现方式是商家在 Apple Pay 的 payment response 中附加 orderTracking 字段,包含订单详情页 URL、订单号和状态更新 URL。用户可以在 Wallet 中直接查看物流状态。这对电商 app 来说是一个低成本的留存入口。
延期增强支付的风控考量。Deferred Payment 允许你在支付授权后延迟最多 30 天扣款。支付时只做卡片验证和额度冻结,实际扣款在后续触发。这需要商家和支付处理器支持相同的授权模式。苹果在 API 层面通过 PKDeferredPaymentRequest 来配置,但风控逻辑(如何处理冻结失败、如何处理退款)需要商家自己实现。
代码片段
创建订单追踪 Pass:
import PassKit
func createOrderTrackingPass() {
// 在 Apple Pay 完成回调中添加订单追踪信息
let orderDetails = PKPaymentOrderDetails(
orderTypeIdentifier: "com.mystore.order",
orderIdentifier: "ORD-2021-12345",
webServiceURL: URL(string: "https://api.mystore.com/orders/track")!,
authenticationToken: "auth_token_xxx"
)
// 附加到支付完成回调
// paymentToken.payment.orderDetails = orderDetails
}
配置延期支付请求:
import PassKit
func setupDeferredPayment() {
let request = PKPaymentRequest()
request.merchantIdentifier = "merchant.com.yourstore"
request.paymentSummaryItems = [
PKPaymentSummaryItem(label: "酒店押金", amount: NSDecimalNumber(value: 500))
]
// 配置延期支付
let deferredPayment = PKDeferredPaymentRequest(
paymentDescription: "酒店入住时扣款",
deferredBillingAddress: nil,
managementURL: URL(string: "https://hotel.example.com/manage")!,
freeCancellationDate: Calendar.current.date(byAdding: .day, value: 2, to: Date())!,
paymentTiming: .deferred
)
request.deferredPaymentRequest = deferredPayment
}
配置自动充值:
import PassKit
func setupAutoReload() {
let request = PKPaymentRequest()
request.merchantIdentifier = "merchant.com.transport"
// 设置自动充值:余额低于 20 元时自动充值 100 元
let autoReload = PKAutomaticReloadPaymentRequest(
paymentDescription: "交通卡自动充值",
automaticReloadBillingAddress: nil,
managementURL: URL(string: "https://transport.example.com/manage")!,
thresholdAmount: NSDecimalNumber(value: 20), // 触发阈值
reloadAmount: NSDecimalNumber(value: 100) // 充值金额
)
request.automaticReloadPaymentRequest = autoReload
}
最佳实践
- 电商 app 一定要接入 Order Tracking。用户在 Wallet 中看到订单状态会自发打开你的 app 查看,这是零成本的留存入口。只需要在 Apple Pay 回调中多加几个字段。
- 延期支付要给用户明确的扣款时间提示。在 Payment Sheet 中显示”将在 X 月 X 日扣款”,降低用户焦虑和退款率。
- pass 文件设计要用 Apple 的模板。Wallet 的 UI 有严格的布局规则,自定义 pass 时使用
pass.com.apple前缀的统一样式,不要尝试做过于花哨的设计。
还有什么值得关注
- Wallet 新增了对隐私友好型身份验证的支持,用户可以选择性地展示证件中的特定字段。
- Apple Pay 的 Payment Sheet UI 在 iOS 15 中增加了优惠券和折扣码输入框。
- 商家可以在 Payment Sheet 中展示配送方式的碳排放信息(环保标签)。