ios - 我是否需要服务器端支持自动续订订阅的 iOS 宽限期?
问题描述
Apple 为订阅引入了宽限期。
https://developer.apple.com/app-store-connect/whats-new/?id=billinggraceperiod
我仍然不知道是否需要设置服务器端以支持此功能,或者只是检查服务器上的收据只是推荐的方式,我可以在没有服务器端的情况下使用宽限期?
例如,您可以在设备中检查收据以在没有服务器端的 iOS 上使用自动续订订阅,但建议使用服务器检查收据以避免人渣。
宽限期描述说您需要检查收据和服务器通知,我想您只能在需要时检查设备上的收据,但不确定服务器通知部分。
任何帮助表示赞赏!
解决方案
您可以在没有服务器的情况下执行此操作,但不能使用离线设备上的收据验证,因为您需要/verifyReceipt
来自 Apple 服务器端点的新收据信息。这就是为什么建议使用服务器到服务器验证的原因,因为直接网络请求容易受到中间人攻击。
grace_period_expires_date_ms
解析收据验证响应,您可以通过在pending_renewal_info中查找来获取订阅是否处于宽限期,并检查is_in_billing_retry_period以指示 Apple 仍在尝试收取付款。
收据响应文档: https ://developer.apple.com/documentation/appstorereceipts/verifyreceipt 处理计费宽限期文档: https ://developer.apple.com/documentation/storekit/in-app_purchase/reducing_involunction_subscriber_churn
推荐阅读
- sql-server - 查找具有重叠日期的值
- git - 不接受变基操作
- python - xmlsec 的构建轮失败 - mac
- docker - “docker pull”一步一步做什么?
- bash - 如何删除日志文件中超过 14 天的行?
- docker - 如何通过卷将 Zookeeper 数据保存在 Docker 设置中?
- .net - 如何使用 NGEN 预编译 dotnetcore 程序集?
- android - Recylerview:获取mediaplayer.setDataSource Android的运行时异常
- sql - 在表 B 的 WHERE 语句中使用表 A 中的列内容
- lua - 使用 luac 和 string.dump() 创建的 lua 5.1 字节码有区别吗?