首页 文章

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

提问于
浏览
46

我正在尝试验证自动更新的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的Documentation声明这个元素是"Only returned for iOS 6 style transaction receipts for auto-renewable subscriptions."(不是iOS 7) .

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

5 回答

  • 1

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

    相关文档在page 21.

    虽然它声明 latest_receiptlatest_receipt_info 字段是"Only returned for iOS 6 style transaction receipts for auto-renewable subscriptions",但我们发现它们是在我们的iOS 7收据中返回的 . receipt 对象中的 in_app 字段也返回了几乎相同的数据,但不包含最新的收据信息,这是您在自动续订时关注的信息 .

  • 3

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

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

    in_app

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

    source

    latest_receipt_info

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

    source

  • 5

    This是关于此问题的最新和最清晰的讨论 . 希望这可以帮助 .

  • 10

    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作为"for iOS 7 style app receipts, the value of this key is an array containing all in-app purchase transactions."

    关于订阅,您不应使用in_app并仅使用latest_receipt_info .

    https://www.revenuecat.com/2018/09/24/apple-subscription-notifications-are-almost-useless涵盖了像cancellation_date这样的边缘案例,它是一个客户服务提供的取消,就像在这个苹果开发者论坛帖子中看到的那样:https://forums.developer.apple.com/thread/96670

  • 0

    Receipt Fields(Apple Docs)

    上面的文档很清楚使用 in_app . 请注意文档中的"Keys not documented below are reserved for use by Apple and must be ignored by your app"行 . 因此,即使解码后的收据有 latest_receipt_info ,我们也应该忽略它 .

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

相关问题