我使用服务器端收据验证。

当客户的
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
被调用,transactionStateSKPaymentTransactionStatePurchased
客户将收据发送到我们的服务器,
然后我们的服务器对其进行验证。

服务器端收据验证成功后,
客户端显然会调用finishTransaction,没问题。

当服务器端收据验证失败时,
因为Apple临时返回了非json,或者客户端发送了无效的收据,等等,
服务器将该信息返回给客户端。

接下来,我们的客户应该怎么做?
我们应该叫finishTransaction吗?

这导致无效的交易永远存在于队列中吗?
就像在这个问题中说的:iPhone in-app purchase: receipt verification



但是,如果我们执行finishTransaction,我们的宝贵用户将被该收据(我们无法验证)收取费用,对吗?

还是verify-failed-transaction在一段时间内到期?

这是在苹果文件的某个地方记录的吗?
我在http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction/Introduction.html中找不到任何内容

最佳答案

是的,您必须完成事务。

然后,如果您要给用户他们想要的东西,则取决于您。在某些情况下,即使收据无效或伪造(使用越狱),也最好向用户提供他们想要的东西。尤其是当它不花钱的时候。

关于ios - 服务器端收据验证失败时,我应该调用finishTransaction吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15526156/

10-15 15:16