2011-11-16 15 views
10

Estoy desarrollando una aplicación que tiene una opción de suscripción de compra in-app auto-renovable. Además, la aplicación tiene una opción 'Restaurar', cuyo propósito es restaurar las transacciones anteriores.SKPaymentTransaction.originalTransaction.transactionReceipt is nil

Pero estoy enfrentando un problema al restaurar, obtengo el 'transactionReceipt' como nulo para elTransaction original por cada transacción restaurada. es decir, "SKPaymentTransaction.originalTransaction.transactionReceipt" se recibe como cero. Ahí mi validación del recibo de la transacción contra AppStore no se está haciendo realidad.

¿Alguien tiene el mismo problema?

Cualquier entrada me ayudaría mucho.

Tenga en cuenta que estoy probando la compra en la aplicación en el entorno de Sandbox.

Gracias de antemano, Vasu N

+1

¿Has resuelto esto? –

Respuesta

3

que estaba teniendo el mismo problema, así que lo que hice fue la prueba de [transacción transactionReceipt] y Apple lo verifica. No estoy seguro si esta es la forma correcta o no, pero al menos estoy siendo verificado por Apple. Eso es realmente todo lo que me preocupa, siempre y cuando pueda verificar que no es una transacción fraudulenta, estoy contento.

La documentación dice que debe poder obtener el recibo original pero no he podido hacerlo, siempre lo veo == nil.

+0

Aún más extraño, es que aunque NSLog indica que SKPaymentTransaction.originalTransaction.transactionReceipt es nulo, durante mi rutina SKPaymentTransactionStateRestored, por algún extraño motivo, mi aplicación logra volver a agregar el recibo correcto en [NSUserDefaults standardUserDefaults]. De hecho, creo que originalTransaction no es nulo, pero NSLog lo muestra como nulo? –

+0

Olvida ese comentario. Tenía otro fragmento de código que había olvidado, que en realidad utiliza transaction.transactionReceipt, como una copia de seguridad, para rellenar las variables de recepción [NSUserDefaults standardUserDefaults] relevantes. Entonces, sí, deberíamos usar transaction.transactionReceipt NOT originalTransaction.transactionReceipt para nuestra rutina de restauración de compras. –