首页 > 解决方案 > 使用受信任的服务器验证 IAP 收据。如果返回的 JSON 不包含“latest_receipt_info”键,如何确定试用资格?

问题描述

我正在开发一个 iOS swift 应用程序,它使用 In App Purchase 进行单个自动更新订阅,有 1 周的免费试用期。为了确定试用资格,我正在阅读此处的文档。它说:

确定资格

要确定用户是否有资格获得推介价格,请检查他们的收据:按照使用 App Store 验证收据中的说明验证收据。在收据中,检查所有应用内购买交易的订阅试用期和订阅介绍价格期的值。如果给定订阅的这些字段中的任何一个为真,则用户没有资格获得该订阅产品或同一订阅组中的任何其他产品的介绍性价格。您通常会从您的服务器检查用户的资格。最好尽早确定资格 - 例如,如果可能,在首次启动应用程序时。

根据收据,您会发现新客户和老客户有资格享受以下介绍价格或免费试用折扣: 新订户始终有资格。如果之前未收到给定产品(或同一订阅组中的任何产品)的介绍价格,则续订的已过期订阅者有资格。

问题是服务器返回的 JSON 有时不包含“latest_receipt_info”键,它只包含环境、状态和收据字段。在这种情况下如何确定用户的试用资格?任何帮助是极大的赞赏。

Ps JSON 确实总是包含 0 的状态,因此与服务器的通信运行良好。

编辑:如果密钥不存在,我不能仅仅假设试用不可用,因为我已经测试了没有密钥的情况,但我在订阅时提供了试用。

标签: swiftcocoacocoa-touchin-app-purchase

解决方案


latest_receipt_info对于没有自动更新订阅购买的收据,该密钥将丢失。

如果密钥不存在,我不能仅仅假设试用版不可用,因为我已经测试了没有密钥的情况,但我在订阅时提供了试用版。

这是在沙盒中吗?我认为这在生产中是不可能的。

对于它的价值,Apple 会自动管理介绍资格,您无需做任何事情即可让某人获得介绍优惠。本文档仅供您更新任何您想要更新的 UI 组件 - 但我从未听说过应用程序因未在 UI 中反映介绍资格而被拒绝。


推荐阅读