我使用服务器端收据验证。当服务器收据验证失败时,我应该调用finishTransaction吗?
当客户的
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
被调用,transactionState
是SKPaymentTransactionStatePurchased
, 客户发送收据到我们的服务器, 和我们的服务器进行验证。
当服务器端收据验证成功时, 客户端显然调用finishTransaction
,没问题。
当服务器端收据验证失败时, 因为apple临时返回非json,或者客户端发送无效收据,或者其他东西, 服务器将该信息返回给客户端。
接下来,我们的客户应该做什么? 我们应该叫finishTransaction
?
这导致无效的交易永远在队列中生活? 喜欢在这个问题上说:iPhone in-app purchase: receipt verification
但是,如果你发现收据是无效的,你要完成相关交易。如果没有,您可能会在交易队列中永远存在额外的交易。这意味着,每个应用程序运行时,paymentQueue:updatedTransaction:将每笔交易调用一次...
但是,如果我们这样做finishTransaction
,我们宝贵的用户是通过此收据收取(我们未能验证)对?
或者验证失败的交易在某段时间内过期了吗?
这是记录在苹果文档的某处吗? 我找不到任何http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction/Introduction.html
我经常看到这个评论,关于只要提供的内容无论如何,如果收据失败。如果你打算这么做,为什么要经历验证收据的麻烦?只是好奇你的意见。 – Scooter 2017-03-05 01:17:48