使用in_app或latest_receipt_info获取可自动更新的iOS 7风格交易的最新收据?

Chr*_*ris 53 server-side subscription in-app-purchase ios in-app

我正在尝试验证自动更新的In App购买是否已过期服务器端(不在设备上).

我正在使用Apple的Grand Unified Receipt(iOS 7风格的交易).由苹果返回的响应中包含in_applatest_receipt_info用收据的一个数组元素.该in_appJSON元素包含LESS比收据latest_receipt_info.我期待两个元素包含相同的数字或收据.

此外,我期待该in_app元素将包含所有收据.但是,它似乎latest_receipt_info实际上包含所有收据.Apple文档似乎建议in_app用于查找最新收据.

我很惊讶地看到,latest_receipt_info因为Apple的文档声明这个元素是 "仅针对自动续订订阅的iOS 6样式交易收据返回".(不是iOS 7+).

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

小智 11

只想表明只有该latest_receipt_info领域正在退回最新的续签.这是基于我们实际从Apple获得的回报.

相关文档见第21页.

虽然它声明latest_receipt并且latest_receipt_info字段是"仅针对自动续订订阅的iOS 6样式交易收据返回",但我们发现它们是在我们的iOS 7收据中返回的.对象中的in_app字段receipt也返回几乎相同的数据,但不包含最新的收据信息,这是您在自动续订时关注的信息.


jox*_*jox 10

要验证自动更新订阅是否已过期,请检查latest_receipt_info元素。

这是当前(2017-08-09)关于in_applatest_receipt_info元素的正式记录:

in_app

在JSON文件中,此键的值是一个数组,其中包含基于输入的base-64收据数据中存在的应用程序内购买交易的所有应用程序内购买收据。对于包含自动续订订阅的收据,请检查latest_receipt_info键的值以获取最新续订的状态。

来源

latest_receipt_info

仅针对包含自动续订的收据返回。对于iOS 6样式的交易收据,这是最新续签的收据的JSON表示形式。对于iOS 7风格的应用收据,此键的值是一个包含所有应用内购买交易的数组。这不包括已被您的应用标记为已完成的消耗品交易。

来源

  • 这并非总是如此。我的产品应用程序中有时会缺少 latest_receipt_info。 (6认同)

Tah*_*eed -1

收据字段(Apple 文档)

上面的文档非常清楚地说明了如何使用in_app. 请注意文档中的“下面未记录的密钥保留供 Apple 使用,您的应用程序必须忽略”行。因此,即使解码后的收据有latest_receipt_info,我们也应该忽略它。

但我同意,文档非常缺乏,这让我感到紧张。让我知道您在生产中使用 iOS 7 风格的收据验证的体验如何。

  • 我认为这是不正确的 - 如果存在latest_receipt_info,则它包含其他地方未提及的续订。重要的是,它们似乎是在_app 中提到的那些之后发生的。所以有点害怕! (8认同)
  • 他们告诉你使用的信息不适用于续订订阅,而且人们必须使用“未记录”字段才能获取此信息,这意味着苹果可以(并且将会)更改它们,恕不另行通知,这是非常阴暗的。 (2认同)