使用in_app或latest_receipt_info获取自动更新iOS 7样式事务的最新收据?

我试图validation一个自动更新的应用程序购买没有到期的服务器端(不是在设备上)。

我正在使用苹果的Grand Unified Receipt(iOS 7风格的交易)。 Apple返回的响应包含带有收据数组的in_applatest_receipt_info元素。 in_app JSON元素包含LESS收据,而不是latest_receipt_info 。 我期待这两个元素包含相同的数字或收据。

此外,我期待in_app元素将包含所有收据。 但是,似乎latest_receipt_info实际上包含所有的收据。 苹果的文档似乎build议使用in_appfind最新的收据。

我很惊讶地看到latest_receipt_info因为Apple的文档声明这个元素是“仅针对自动更新订阅的iOS 6样式事务回执返回的”。 (不是iOS 7+)。

我应该迭代哪个JSON元素来查找自动更新iOS 7样式事务的最新收据: in_applatest_receipt_info

只是想明确只有latest_receipt_info字段正在返回最新的更新收据。 这是基于我们实际从苹果回来的。

相关的文档在这里第21页。

尽pipe它声明latest_receiptlatest_receipt_info字段是“仅针对自动更新订阅的iOS 6样式事务回执返回的”,但我们发现它们是在我们的iOS 7收据中返回的。 receipt对象中的in_app字段也会返回几乎相同的数据,但不包含最新的收货信息,这是您在自动续订时关心的信息。

这是最近最清楚的讨论。 希望这可以帮助。

要validation自动续订订阅还没有过期,请检查latest_receipt_info元素。

这是目前(2017-08-09)在in_applatest_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。