Received "Cannot finish a purchasing transaction" error even though transaction state was checked prior to finishing.

I have a crash reported in the sandbox environment due to "Cannot finish a purchasing transaction". Ok, I understand this part, however this is the only code in my entire application involving an SKPaymentQueue call to finishTransaction:


if (transaction.transactionState != SKPaymentTransactionStatePurchasing) 
{
     [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

     // Unrelated code removed
}


Can anybody shed any light on how it might be possible for me to receive this error in light of the explicit validation above? The only thing I can think of is that the transaction state might be SKPaymentTransactionStateDeferred, and somehow this deferred transaction becomes a purchasing transaction with the exact perfect timing to cause the crash.


Any insight much appreciated! Thank you.

Replies

The error is telling you that you are not supposed to call finish Transaction on a transaction that has the state purchasing.

A belated thank you, sir.