do not forget to check if you can make a payment:
if (SKPaymentQueue.canMakePayments()) { SKPaymentQueue.default().restoreCompletedTransactions() }
To verify the recovery, you must follow the protocol: SKPaymentTransactionObserver and then implement the method:
func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!)
and subscribe to the event by doing:
SKPaymentQueue.default().add(self)
Finally, here is an example of how I check the result:
func paymentQueue(_ queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) { print("Received Payment Transaction Response from Apple"); for transaction in transactions { switch transaction.transactionState { case .purchased, .restored: print("Purchased purchase/restored") SKPaymentQueue.default().finishTransaction(transaction as SKPaymentTransaction) break case .failed: print("Purchased Failed") SKPaymentQueue.default().finishTransaction(transaction as SKPaymentTransaction) break default: print("default") break } } }
source share