我使用服务器端收据验证。
当客户的
- (void)paymentQueue:(SKPaymentQueue *)queue
updatedTransactions:(NSArray *)transactions
被调用,并且transactionState
是SKPaymentTransactionStatePurchased
,客户端将收据发送到我们的服务器,我们的服务器验证它。
服务端回执验证成功后,客户端明显调用finishTransaction
,没问题。
当服务器端回执验证失败时,因为苹果临时返回非json,或者客户端发送了无效的回执,或者其他什么,服务器将该信息返回给客户端。
接下来,我们的客户应该怎么做?我们应该打电话finishTransaction
吗?
这会导致无效交易永远存在于队列中吗?就像在这个问题中所说:iPhone应用内购买:收据验证
但如果您发现收据无效,您应该完成关联交易。如果没有,您可能在事务队列中永远存在额外事务。这意味着每次您的应用程序运行时,paymentQueue:updatedTransaction: 将在每个事务中调用一次......
但是如果我们这样做finishTransaction
了,我们宝贵的用户就会被这张收据收费(我们未能验证),对吧?
或者验证失败的交易是否会在某个时间段内过期?
这是否记录在苹果文档的某个地方?我在http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction/Introduction.html中找不到任何内容