Compra en la aplicación de iOS: ¿los revisores de Apple probarán el entorno en vivo o sandbox?

Uso In App Payment para vender consumibles dentro del juego. Después de un pago exitoso, reenvío el recibo de pago a mi backend, que valida el recibo con el backend de pago de iTunes. Esto funciona perfectamente en el entorno sandbox.

Ahora envié mi aplicación para que los chicos de Apple puedan aprobarla y publicarla en la App Store. Por supuesto, me aseguré de que mi backend validara los recibos de pago con el entorno de producción del backend de itunes, porque esperaba que los chicos de Apple probaran la aplicación en modo de producción. Sin embargo, la aplicación fue rechazada. Como motivo, me dijeron que la compra de mis consumibles no funciona (mi backend se negó debido a un recibo no válido). Después de revisar mis registros, veo 3 intentos de compra. Descifré los recibos que se usaron y vi que todos estos son "entorno" = "Sandbox".

¿Significa esto que Apple prueba las aplicaciones enviadas en modo sandbox? ¡Eso sería una locura! ¿Se supone que debo permitir el pago de sandbox en mi entorno de producción o qué? ¿Algún dato sobre esto?

preguntado el 31 de julio de 12 a las 12:07

3 Respuestas

Thomas, definitivamente deberías leer las preguntas frecuentes de Apple sobre la compra desde la aplicación: https://developer.apple.com/library/content/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228-CH1-RECEIPTURL

Siempre verifique su recibo primero con la URL de producción; proceda a verificar con la URL de la zona de pruebas si recibe un código de estado 21007. Seguir este enfoque garantiza que no tenga que cambiar de URL mientras su aplicación se prueba o revisa en el entorno de pruebas o está activa en la App Store.

Así que sí, están un poco locos. Pero eso lo sabíamos, ¿no?

Respondido el 29 de junio de 17 a las 16:06

wow, gracias por esto... No puedo creer cuánto tiempo pasé tratando de depurar el código. erikrl

¿No sabes dónde puedo encontrar un ejemplo de código de validación del lado del servidor que tenga implementado este flujo de trabajo? Sé que es una posibilidad remota, pero no quiero perder otra semana con la revisión de Apple. - Julián Osorio

Pude implementar el flujo de trabajo descrito en la respuesta, pero tengo una pregunta. ¿No sería posible con esta configuración piratear la aplicación usando una cuenta de prueba en la aplicación de producción? Gracias - Julián Osorio

Gracias... me salvó el día :-) - Chandan Shetty SP

@JulianOsorio una vez que la aplicación se puso en marcha, Apple ya no permite que la cuenta sandox compre la compra en la aplicación, por lo que no se genera el recibo, por lo que es seguro. - Chandan Shetty SP

respuesta rápida: si su aplicación está en revisión, use sandbox.

¿Qué URL debo usar para verificar mi recibo? Utilice la URL de la zona de pruebas https://sandbox.itunes.apple.com/verifyReceipt mientras prueba su aplicación en la zona de pruebas y mientras su aplicación está en revisión.

Usar la URL de producción https://buy.itunes.apple.com/verifyReceipt una vez que su aplicación esté activa en la App Store.

Respondido el 16 de Septiembre de 20 a las 16:09

La respuesta de @Jan P es correcta. Si está buscando una respuesta rápida SÍ/NO, la respuesta específica de las preguntas frecuentes es;

Debe utilizar la zona de pruebas mientras se revisa su solicitud.

(15) ¿Qué URL debo usar para verificar mi recibo? Utilice la URL de la zona de pruebas https://sandbox.itunes.apple.com/verifyReceipt mientras prueba su aplicación en el sandbox y mientras su solicitud está en revisión.

Respondido 16 Oct 14, 19:10

¿Y cómo sabemos cuándo la aplicación está en revisión aparte de usar un temporizador (conmoción, horror) o hacer ping a un servidor? - DrMickeyLauer

@DrMickeyLauer La única forma de lograr esto es reescribir su lógica para que primero pruebe Producción y luego Sandbox. Ridículo pero cierto. Más detalles están aquí: desarrollador.apple.com/library/archive/technotes/tn2413/… - Confianza

Bien. Sin embargo, esto no se aplicará a la verificación de recibos locales, que es lo que aún prefiero, especialmente para las aplicaciones que funcionan sin conexión. - DrMickeyLauer

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.