Assuming everything is set up correctly, you should have an object that implements SKPaymentTransactionObserver, which will receive callbacks for transaction / failure / cancellation success.
In my example, the purchaseManager object mentioned in this call
[[SKPaymentQueue defaultQueue] addTransactionObserver:purchaseManager];
When the user cancels the payment, you should receive a callback with the transaction status canceled:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { switch (transaction.transactionState) { case SKPaymentTransactionStatePurchased: [self completeTransaction:transaction]; break; case SKPaymentTransactionStateFailed:
You can use this callback to reject your view, etc.
source share