gpt4 book ai didi

ios - iOS 中应用内购买的服务器端验证最佳实践

转载 作者:技术小花猫 更新时间:2023-10-29 10:39:19 25 4
gpt4 key购买 nike

我们像这样使用服务器端验证付款 -

  1. 用户付款。
  2. Store kit API 向 App 发送交易收据。
  3. 应用程序将 base64 编码的交易收据发送到我们的服务器。
  4. 我们的服务器调用 https://buy.itunes.apple.com/verifyReceipt并验证交易收据。
  5. 用户被标记为已付费。

对于特定用户,我们没有在服务器上获得交易收据,因此无法验证收据。我们猜测第 2 步和第 3 步出了问题。如果在向服务器发送收据时出现连接问题,应用程序会在后续应用程序恢复时再次重试。

现在我们有一张丢失的交易收据和一个愤怒的用户。你建议我们如何前进?我们将来如何防止这种情况发生?是否有任何我们可以遵循的准则或最佳做法来防止出现这种情况?

谢谢。

最佳答案

根据我的经验,可能的问题是

  • base64 数据在此过程中进行了 url 编码,因此 + 和/变得困惑 - 在传输之前用更安全的字符替换它们
  • 整个交易都是假的。

第二种情况的检查方法是查看您的账户,看看是否有匹配的购买记录。遗憾的是,除非您的购买量较低,否则该网站可能有点难以审核。

为了正确处理服务器上或 Apple 端(如果发生)上的错误,您需要在代码中做两件事。

  1. 不要调用 finishTransaction: 直到您与服务器成功通信(在这种情况下它无济于事,但值得注意)
  2. 在 SKPaymentQueue defaultQueue 上有一个调用 restoreCompletedTransactions: 的“重新加载购买”按钮或操作。对于非消费品/权利对象,这将重新发送所有交易以及可以在您的服务器上重新验证的收据。

如果您面临的问题是非消耗品/权利,那么第二项就是出路。

关于ios - iOS 中应用内购买的服务器端验证最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14808039/

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