我使用服务器端收据验证。
当客户的- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
被调用,transactionState
是SKPaymentTransactionStatePurchased
,
客户将收据发送到我们的服务器,
然后我们的服务器对其进行验证。
服务器端收据验证成功后,
客户端显然会调用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/