从 iOS 应用内购买收据中检索订单 ID/文件编号

Posted

技术标签:

【中文标题】从 iOS 应用内购买收据中检索订单 ID/文件编号【英文标题】:Retrieve Order ID/Document No from iOS In-App Purchase Receipt 【发布时间】:2017-11-21 05:16:42 【问题描述】:

目前我们的系统以这样一种方式工作,当用户购买应用内订阅时,购买的收据数据会发送到服务器,验证后我们将根据需要更改用户的权利。

有时由于各种原因,我们可能会遇到一个问题,即用户可能没有被分配他们应有的权利,在这种情况下,他们通过电子邮件向我们发送他们从 Apple 获得的收据,其中包含他们的订单 ID 和文档编号等.

我似乎无法在通过应用内购买发送的收据数据中找到任何与苹果发送的文档中的任何内容相匹配的内容,这将使我能够确定哪个订单与该订单 ID 匹配。

有没有办法从应用内购买有效负载中获取订单 ID 等以帮助识别?

【问题讨论】:

你不能;用户的收据与您拥有的收据之间没有共同的信息。它是非续订订阅还是自动续订订阅?如果它是自动续订订阅,那么您应该在您的应用程序中提供一个“恢复购买”按钮,这将导致在您的服务器上重试交易。如果是非续订订阅,则在您激活用户帐户上的订阅之前,您不应完成 IAP 交易。 【参考方案1】:

不,通过 Apple 邮寄给用户的收据发送的订单 ID 与 App Store 收据中的交易 ID 无关。 (不是很有用,我知道。)

如果您的后端确实有收据,我会使用the verifyReceipt endpoint 检查内容,看看他们有什么购买。只要您的 IAP 是非消耗品,它们就会显示在收据中。然后,您可以希望手动授予他们权利。 (IMO,从客户服务的角度来看,我只会让客户受益并立即批准。)

作为实施说明,在用户从您的后端收到预期的权利之前,您不应该在收据上调用finishTransaction。这会将事务留在 StoreKit 队列中,并提供一种简单的机制,以便稍后在发送到后端失败时重试。

【讨论】:

以上是关于从 iOS 应用内购买收据中检索订单 ID/文件编号的主要内容,如果未能解决你的问题,请参考以下文章

iOS7应用收据中的交易ID何时更改?

iOS 7:应用内购买收据验证和验证

iOS 应用内购买收据与不同的 iTunes 用户

为什么Apple AppStore应用内收据在iOS上为空?

一次购买的 Apple 应用内购买 transaction_id 有时会发生变化

iOS:React Native:应用内购买:收据验证