iOS内购收据验证疑问:verifyReceipt已弃用,求最新方法
iOS内购收据验证最新方案及接口说明
1. 正确且最新的收据验证方法
苹果目前官方推荐使用App Store Server API作为内购交易/收据验证的替代方案,完全取代已弃用的verifyReceipt接口。核心执行流程如下:
- 生成JWT授权令牌:用在App Store Connect创建的App Store Connect API密钥(
Users & Access -> Integrations -> Keys路径获取),以ES256算法生成包含kid(密钥ID)、iss(Issuer ID)、iat(签发时间)等必填声明的JWT令牌。 - 调用对应API端点:根据业务需求选择匹配的接口,比如单交易验证、订阅状态查询等。
- 验证响应合法性(可选但推荐):苹果返回的响应附带签名,可通过苹果根证书验证签名,确保数据未被篡改。
- 完成业务逻辑:依据API返回的交易状态、订阅有效期、退款记录等信息,完成用户权益发放、交易状态同步等操作。
2. 关于GET /inApps/v1/transactions/{transactionId}接口的说明
是的,该接口是App Store Server API中用于验证单条交易的官方接口,但使用时需注意以下细节:
- 必须携带JWT授权头:请求时需在
Authorization头中添加Bearer <你的JWT令牌>,否则会返回权限错误。 - 区分环境域名:沙盒环境使用
https://api.storekit-sandbox.itunes.apple.com,生产环境使用https://api.storekit.itunes.apple.com。 - 接口返回价值:该接口会返回对应
transactionId的完整交易详情,包括交易时间、商品信息、收据数据、订阅状态(针对订阅类商品)等,可直接用于验证交易有效性。
如果你的业务核心是定期订阅的全生命周期管理(比如续期、过期、退款追踪),更推荐使用GET /inApps/v1/subscriptions/{subscriptionId}/status接口,它能返回该订阅的所有关联交易记录及当前状态,适配订阅业务的复杂场景。
内容的提问来源于stack exchange,提问作者Kıvanç ARSLAN
相关产品推荐
相关产品推荐

