在应用程序购买,SKPaymentTransactionStatePurchased重试

时间:2011-03-07 19:29:25

标签: iphone ios in-app-purchase

我正在实施In App Purchase并在我的服务器上验证收据。

SKPaymentTransactionStatePurchased期间遇到paymentQueue:updatedTransactions:时,我会将收据发送到我的服务器进行验证。当我的服务器响应OK时,我拨打finishTransaction

如果我的服务器处于离线状态或者我无法验证收据,是什么触发应用再次呼叫paymentQueue:updatedTransactions:,有效地让我有机会重试验证?我注意到重新启动应用程序会这样做 - 还有什么吗?当应用程序继续运行时,是否会在某个固定频率上再次调用它?

是否有手动方式强制事务队列循环?

2 个答案:

答案 0 :(得分:1)

我认为TomSwift不想恢复购买的付款, 但他希望申请打电话 paymentQueue:updatedTransactions 再次使用SKPaymentTransactionStatePurchased标志 of nonTransactionTransaction

他知道的唯一方法就是重新启动应用

我曾经尝试过 [[SKPaymentQueue defaultQueue] removeTransactionObserver:mMyStoreObserver]; [[SKPaymentQueue defaultQueue] addTransactionObserver:mMyStoreObserver]; 再次

但它不起作用..

非finishTransaction的问题是 苹果将​​说已经购买但从未下载过 当尝试再次购买相同的产品ID时,它将进入SKPaymentTransactionStateFailed。

答案 1 :(得分:0)

您可以让应用程序调用

  

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

这将发送到

  

paymentQueue :( SKPaymentQueue *)队列updatedTransactions :( NSArray   *)交易

一组所有交易:

  

SKPaymentTransactionStateRestored

而不是

  

SKPaymentTransactionStatePurchased