使用in_app或latest_receipt_info获取自动更新iOS 7样式事务的最新收据?
我试图validation一个自动更新的应用程序购买没有到期的服务器端(不是在设备上)。
我正在使用苹果的Grand Unified Receipt(iOS 7风格的交易)。 Apple返回的响应包含带有收据数组的in_app
和latest_receipt_info
元素。 in_app
JSON元素包含LESS收据,而不是latest_receipt_info
。 我期待这两个元素包含相同的数字或收据。
此外,我期待in_app
元素将包含所有收据。 但是,似乎latest_receipt_info
实际上包含所有的收据。 苹果的文档似乎build议使用in_app
find最新的收据。
我很惊讶地看到latest_receipt_info
因为Apple的文档声明这个元素是“仅针对自动更新订阅的iOS 6样式事务回执返回的”。 (不是iOS 7+)。
我应该迭代哪个JSON元素来查找自动更新iOS 7样式事务的最新收据: in_app
或latest_receipt_info
?
只是想明确只有latest_receipt_info
字段正在返回最新的更新收据。 这是基于我们实际从苹果回来的。
相关的文档在这里第21页。
尽pipe它声明latest_receipt
和latest_receipt_info
字段是“仅针对自动更新订阅的iOS 6样式事务回执返回的”,但我们发现它们是在我们的iOS 7收据中返回的。 receipt
对象中的in_app
字段也会返回几乎相同的数据,但不包含最新的收货信息,这是您在自动续订时关心的信息。
这是最近最清楚的讨论。 希望这可以帮助。
要validation自动续订订阅还没有过期,请检查latest_receipt_info
元素。
这是目前(2017-08-09)在in_app
和latest_receipt_info
元素上正式logging的内容:
in_app
在JSON文件中,此密钥的值是一个数组,其中包含基于inputbase-64接收数据中的应用程序内购买事务的所有应用程序内购买收据。 对于包含自动续订订阅的收据,请检查latest_receipt_info键的值以获取最近续订的状态。
( 来源 )
latest_receipt_info
只返回包含自动更新订阅的收据。 对于iOS 6样式的交易收据,这是最近续约的收据的JSON表示forms。 对于iOS 7样式的应用收据,此密钥的值是包含所有应用内购买交易的数组。 这不包括您的应用已标记为已完成的易耗品的交易。
( 来源 )
收据字段(Apple Docs)
上面的文档使得in_app
非常清楚。 请注意,文档中的“Keys未在以下文档中保留供Apple使用,且必须被您的应用忽略”。 所以,即使解码的收据有latest_receipt_info
,我们也应该忽略它。
但我同意,文件非常缺乏,这让我感到紧张。 让我知道你在生产中如何使用iOS 7风格的收据validation。