gpt4 book ai didi

iOS 应用内购买 transactionReceipt 与 appStoreReceiptURL

转载 作者:行者123 更新时间:2023-11-29 00:07:35 24 4
gpt4 key购买 nike

从一开始,我们就很乐意在我们的 iOS 应用中处理应用内购买。因为代码已经有一段时间了,它在我们的 paymentQueue:updatedTransactions: 方法被 Store Kit 调用时,对我们获得的交易使用了现已弃用的 transactionReceipt 属性。我们将该收据发送到我们的服务器,服务器通过发送到 Apple 的服务器来验证它,做我们需要在服务器上做的事情,并向我们的应用程序报告“成功”。效果很好。

现在我们想添加一个基于订阅的产品,所以我考虑必须使用主包上的 appStoreReceiptURL 属性重新实现 IAP,并从那里加载我的应用程序收据。有几件事我不明白。

首先也是最明显的:调用 paymentQueue:updatedTransactions: 时,我得到相同的 SKPaymentTransactionStatePurchased 状态。现在,当我将它提交给 Apple 时,我只是显示我返回的 JSON。由于状态不为零,我也提交给沙箱服务器并显示我从中得到的结果。问题是在这两种情况下我都明白了:

{"status":21002, "exception":"com.apple.jingle.mzfairplay.validators.DrmInvalidArgumentException"}

我怀疑这与我正在运行调试版本这一事实有关,虽然不是在 sim 中——它在实际设备上运行。为了解决这个问题,我尝试将构建上传到 App Store,以便我可以通过 TestFlight 下载,但由于我使用的是沙盒 Apple ID,TestFlight 拒绝安装它。

所以第一个问题是为什么我会收到此“DrmInvalidArgumentException”,并且我是否正确配置以进行测试(在真实设备上调试构建,使用我的沙盒 Apple ID 进行购买)。

第二个问题更让我莫名其妙。据我了解,我仍然会通过 paymentQueue:updatedTransactions 收到通知,并且我会遍历到达那里的交易(?)但是我不会在交易中提交收据,而是提交来自主包中 URL 的应用程序收据。它将包含所有 IAP 购买,我将不得不遍历所有这些以找出新内容和我感兴趣的内容,对吗?

流程似乎不对。我收到了基于交易的通知,但随后查看了应用收据中包含的所有 IAP 交易的转储。所以我不可能正确理解流程。

最佳答案

状态 21002 为 收据数据属性中的数据格式错误或丢失。。验证端点的 POST 正文必须是一个 JSON 字典,其中包含一个 receipt-data 键和一个 password 键,其中包含您可以使用的特定于应用程序的共享 key 从 iTunes Connect 获取。

您可以尝试使用 this tool测试您的收据。您不需要使用 TestFlight,只要您使用 Sandbox iTunes 帐户(您可以在 iTunes Connect 中创建),一切都应该在调试版本中正常工作。

您的解释是正确的,您需要发送每笔购买交易的完整收据。这是多余的,您可能会保留一个应用程序端缓存,这样您就不会每次都发送相同的收据数据,但是 appStoreReceiptURL 的内容可能会随时更改。

实现订阅还有许多其他棘手的边缘情况。我建了RevenueCat因为订阅的所有这些蹩脚的东西。在我看来,苹果公司将其与现有的 IAP 内容结合起来确实很糟糕。

关于iOS 应用内购买 transactionReceipt 与 appStoreReceiptURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47602813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com