gpt4 book ai didi

ios - iOS购买收据验证失败怎么办?

转载 作者:可可西里 更新时间:2023-11-01 03:49:50 24 4
gpt4 key购买 nike

iOS 购买收据服务器验证通常是这样的:

  1. 用户在 iPhone 上购买

  2. 您的应用已将购买收据发送到服务器

  3. 服务器收到recipt并发送给苹果验证

  4. 服务器从 Apple 获取验证结果。

  5. 服务器将验证结果发送给应用

但是如果只有第 1 步成功怎么办?例如,应用程序无法在步骤 2 中向服务器发送请求或应用程序在步骤 5 中无法从服务器获得响应。问题是用户已经付款。处理此问题的最佳方法是什么?

最佳答案

如果您使用的是 SKPaymentQueue,那就很简单了。您所要做的就是在 SKPaymentQueue 中保留交易,直到您从服务器获得成功/失败验证结果的“第 5 步” .

如果在第 1 步到第 5 步之间出现任何问题,您的应用仍然可以访问 SKPaymentQueue 中的交易,并且可以“重新处理”它。
重新处理未完成的交易可能会在您的应用程序开始(或您喜欢的某个时间间隔)时开始。
只需检查 SKPaymentQueue 即可获取待处理/未完成的交易并将它们发送到您的服务器(就像“第 2 步”一样​​)。如果您的服务器仍然无法访问,显然您不会进入第 5 步,因此您不会从队列中删除事务,并且每次在下一次应用程序启动时,这种重新处理都会一次又一次(或下一个队列检查时间间隔)直到完成

实现

实现也很简单,你需要有一个SKPaymentTransactionObserver的“交易观察者类”。
在应用程序启动时创建一个“交易观察者类”的实例,它应该通过调用注册自己:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]

然后'交易观察者类'在方法中获取交易:

(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

此方法是您可以处理和重新处理所有未完成交易的地方。

请注意,您的服务器必须幂等(即能够处理重复的交易,如果它们已经被处理过的话)
一旦服务器处理并完成了第 2 步到第 4 步,就会出现应用成功/失败结果,那是唯一您想要删除的时候strong> 通过调用队列中的事务:

[[SKPaymentQueue defaultQueue] finishTransaction: transaction]

最后为您的用户提供他们此时购买的高级功能。

关于ios - iOS购买收据验证失败怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287352/

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