cómo manejar si el usuario canceló la compra InApp o simplemente otro estado fallido

Estoy tratando de manejar el button cancelar manejando el código de error SKErrorPaymentCancelled. Sin embargo, el código de error SKErrorPaymentCancelled y el estado SKPaymentTransactionStateFailed devuelven el mismo valor. Entonces, todos los estados de SKPaymentTransactionStateFailed actúan como si el usuario cancelara la transacción. ¿Hay alguna manera de distinguir estos dos códigos?

mi código es así:

case SKPaymentTransactionStateFailed: { if (transaction.error.code == SKErrorPaymentCancelled) { [kUIActivator stopAnimating]; button1.enabled = YES; } 

Solutions Collecting From Web of "cómo manejar si el usuario canceló la compra InApp o simplemente otro estado fallido"