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

时间:2014-09-09 23:20:26

标签: ios in-app-purchase server-side subscription in-app

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

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

另外,我期待in_app元素包含所有收据。但是,latest_receipt_info实际上包含所有收据。 Apple文档似乎建议使用in_app来查找最新收据。

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

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

5 个答案:

答案 0 :(得分:11)

只是想明确只有latest_receipt_info字段才会返回最新续订的收据。这是基于我们实际从Apple获得的回报。

相关文档位于page 21.

虽然它声明latest_receiptlatest_receipt_info字段为"仅针对iOS 6样式的交易收据返回以进行自动续订 订阅",我们发现他们正在我们的iOS 7收据中退回。 in_app对象中的receipt字段也会返回几乎相同的数据,但不包含最新的收据信息,这是您在自动续订时关注的信息

答案 1 :(得分:8)

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

这是目前(2017-08-09)正式记录在in_applatest_receipt_info元素上的内容:

in_app

  

在JSON文件中,此键的值是包含all的数组   基于应用内购买交易的应用内购买收据   存在于输入base-64收据数据中。对于包含的收据   自动续订订阅,检查值   latest_receipt_info用于获取最近续订状态的密钥。

source

latest_receipt_info

  

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

source

答案 2 :(得分:3)

This是关于此问题的最新和最清晰的讨论。希望这会有所帮助。

答案 3 :(得分:1)

Babken Vardanyan在多个回答线程中提到,有时会丢失latest_receipt_info。我在此线程https://forums.developer.apple.com/thread/92200的收据中看到了一件有趣的事情 是last_receipt_info与in_app的区别。当进行比较时,我注意到链中的第一个收据丢失了(包含is_trial_period = true)。它没有生成等效的应用内收据。

文档中的链接:https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW4表示将“ latest_receipt_info”用作“对于iOS 7样式的应用收据,此键的值是一个包含所有应用内购买交易的数组。”

关于订阅,您不应使用in_app,而应仅使用Latest_receipt_info。

https://www.revenuecat.com/2018/09/24/apple-subscription-notifications-are-almost-useless涵盖了诸如cancelal_date之类的极端情况,其中这是客户服务提供的取消,如在此Apple开发者论坛线程中所见:https://forums.developer.apple.com/thread/96670

答案 4 :(得分:0)

Receipt Fields(Apple Docs)

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

但我同意,文档非常缺乏,这让我很紧张。 让我知道您在生产中使用iOS 7样式收据验证的体验。