提问人:Chris 提问时间:9/10/2014 最后编辑:ljkChris 更新时间:10/17/2022 访问量:19244
使用 in_app 或 latest_receipt_info 获取自动续期 iOS 7 风格交易的最新收据?
Use in_app or latest_receipt_info for getting latest receipt for auto-renewable iOS 7 style transactions?
问:
我正在尝试验证自动续期的应用内购买是否未过期服务器端(不在设备上)。
我正在使用 Apple 的 Grand Unified Receipt(iOS 7 样式的交易)。Apple 返回的响应包含 和 元素以及一系列收据。JSON 元素包含的收据少于 。我原以为这两个元素都包含相同的数字或收据。in_app
latest_receipt_info
in_app
latest_receipt_info
此外,我预计该元素将包含所有收据。但是,它似乎实际上包含所有收据。Apple 文档似乎建议用于查找最新收据。in_app
latest_receipt_info
in_app
我很惊讶地看到,因为 Apple 的文档指出此元素是“仅针对自动续期订阅的 iOS 6 样式交易收据返回”(不是 iOS 7+)。latest_receipt_info
我应该迭代哪个 JSON 元素来查找自动续期 iOS 7 样式交易的最新收据:或 ?in_app
latest_receipt_info
答:
上面的文档非常清楚地使用了 .
请注意文档中的“下面未记录的密钥保留供 Apple 使用,必须由你的应用忽略”行。
因此,即使解码的收据有,我们也应该忽略它。in_app
latest_receipt_info
但我同意,文档非常缺乏,这让我很紧张。 让我知道您在生产中使用 iOS 7 样式收据验证的体验如何。
评论
只是想明确指出,只有该字段返回最新的续订收据。这是基于我们从苹果公司实际得到的回报。latest_receipt_info
相关文档位于第 21 页。
尽管它声明 and 字段是“仅针对自动续订的 iOS 6 样式交易收据返回
订阅“,我们发现它们在我们的 iOS 7 收据中被退回。对象中的字段也会返回几乎相同的数据,但不包含最新的收据信息,这是您在自动续订的情况下关心的信息。latest_receipt
latest_receipt_info
in_app
receipt
评论
latest_receipt_info
若要验证自动续订订阅是否未过期,请选中该元素。latest_receipt_info
这是目前 (2017-08-09) 官方记录的 和 元素:in_app
latest_receipt_info
in_app
在 JSON 文件中,此键的值是一个数组,其中包含 基于 App 内购买交易的 App 内购买收据 存在于输入 base-64 收据数据中。对于包含以下内容的收据 自动续期订阅,请检查 latest_receipt_info获取最近续订状态的关键。
(源)
latest_receipt_info
仅针对包含自动续期订阅的收据退回。 对于 iOS 6 样式的交易收据,这是 JSON 表示形式 最近一次续订的收据。对于 iOS 7 风格的应用程序 receipts,此键的值是一个包含所有应用内的数组 购买交易。这不包括消耗品的交易 已被您的应用标记为已完成的产品。
(源)
评论
latest_receipt_info
@BabkenVardanyan,我的 Testflight 收据回复中也缺少了。不知道如何处理这种情况?
Babken Vardanyan 在多个回答线程中提到,latest_receipt_info有时会丢失。我在这个线程 https://forums.developer.apple.com/thread/92200 的收据中看到的一件有趣的事情是latest_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 涵盖了一些边缘情况,例如cancellation_date,这是客户服务提供的取消,如以下 Apple 开发者论坛主题所示: https://forums.developer.apple.com/thread/96670
我想链接最新的文档 App Store 收据
latest_receipt_info
包含所有应用内购买交易的数组。这不包括您的应用标记为已完成的易耗品的交易。这仅返回包含自动续期订阅的收据。
in_app
位于Receipt.In_app
一个数组,包含所有应用内购买交易的应用内购买收据字段。
由于包含所有收据,我更喜欢迭代它并找到自动续订订阅的最新收据。in_app
评论
latest_receipt_info
latest_receipt
latest_receipt_info
latest_receipt
latest_receipt
latest_receipt
latest_receipt
latest_receipt_info
latest_receipt