storekit

客户端注意事项

每次启动都需要校验数据

1
2
3
4
5
6
7
8
9
10
11
12
13
if let appStoreReceiptURL = Bundle.main.appStoreReceiptURL,
FileManager.default.fileExists(atPath: appStoreReceiptURL.path) {
do {
let receiptData = try Data(contentsOf: appStoreReceiptURL, options: .alwaysMapped)
let receiptString = receiptData.base64EncodeString(options: [])
// 1. update the receiptString to server
// 2. server should checkout to apple server call http method verifReceipt
// 3. update subscribed status
} catch {
print("some error in there: \(error)")
}
}

服务端注意事项

Server-to-Server Notifications

original_transaction_id 是订阅的唯一标识符

  • 当服务端收到苹果通知后,需要向苹果服务器响应200状态码,如果没有返回200 苹果最多重试3次

  • 使用的 originalTransactionId 和 user 做的关联 添加 lastReceiptData 数据

视频链接

实施主动应用内购买恢复
为订阅构建架构
App 内购买和使用服务器到服务器通知
订阅优惠最佳实践
工程订阅
订阅优惠最佳实践

文档

使用 StoreKit API 在 App 中实现商店
工程订阅
工程订阅pdf
Engineering-Subscriptions