purchase hack apple app ios iphone in-app-purchase storekit

hack - in app purchase ios 11



Error del kit de la tienda de compras en la aplicaciĆ³n del iPhone-1003 "No se puede conectar a la tienda iTunes Store" (20)

He estado trabajando para agregar compras dentro de la aplicación y pude crear y probar las compras dentro de la aplicación usando el Kit de Tienda (¡yay!). Durante las pruebas, ejercité mi aplicación de una manera que causó que la aplicación fallara a mitad de la compra (por lo que supongo que se interrumpió el ciclo normal de recibir el pago.

Ahora no puedo completar con éxito ninguna transacción y, en cambio, solo obtengo transacciones con transactionState SKPaymentTransactionStateFailed cuando se llama a paymentQueue: updatedTransactions.

El transaction.error.code es -1003 y transaction.error.localizedDescription es "No se puede conectar a la tienda iTunes Store".

He intentado eliminar todos los productos de iTunesConnect y los he reconstruido utilizando diferentes identificadores, pero eso no ayudó. También he intentado usar la aplicación App Store para conectarme realmente a la App Store real y descargar algunas aplicaciones para tener conectividad. Finalmente, he visitado la aplicación Configuración: Tienda para asegurarme de que cierre la sesión de mi cuenta de tienda de aplicaciones normal.


Agregar nuevo usuario de prueba para su aplicación.


Asegúrese de tener la fecha y la hora correctas en la Configuración. De lo contrario, no se puede hacer una declaración SSL a la tienda !!


Comencé a jugar con la App Store y luego volví a Configuración / Tienda para cerrar sesión. Hice esto 3 veces, volviendo a visitar mi aplicación cada vez y agregando la salida de NSLog de depuración, y ahora puedo continuar probando mi código de compra en la aplicación sin error -1003. No estoy seguro de la razón exacta para que esto funcione de nuevo, pero estoy bastante seguro de que no es un cambio de código por mi parte, ya que todo lo que estaba haciendo era agregar NSLogs y volver a ejecutar mi aplicación.


Desafortunadamente, me encontré con un problema que no estaba documentado aquí. Las compras dentro de la aplicación no funcionarán hasta que usted acepte todos los contratos relacionados con los aspectos de la aplicación y de la aplicación. Así que asegúrese de que usted (o su cliente) configuren todos los contratos en iTunesConnect correctamente, deben aparecer en la sección "Contratos en vigencia" para que sus compras funcionen.


En SKPaymentTransactionState informa que SKPaymentTransactionStateFailed antes de SKPaymentTransactionStateFailed su solicitud a la cola del servidor.

@class SKPayment; enum { SKPaymentTransactionStatePurchasing, // Transaction is being added to the server queue. SKPaymentTransactionStatePurchased, // Transaction is in queue, user has been charged. Client should complete the transaction. SKPaymentTransactionStateFailed, // Transaction was cancelled or failed before being added to the server queue. SKPaymentTransactionStateRestored // Transaction was restored from user''s purchase history. Client should complete the transaction. }; typedef NSInteger SKPaymentTransactionState;

Y en la SKPaymentTransaction errores de referencia de clase de SKPaymentTransaction dice:

La propiedad de error no está definida, excepto cuando transactionState se establece en SKPaymentTransactionStateFailed . Su aplicación puede leer la propiedad de error para determinar por qué falló la transacción.

Por lo tanto, transaction.error.localizedDescription es "No se puede conectar a la tienda iTunes Store". es un mensaje de error general. También recibo este mensaje de error regularmente al probar mis compras de InApp.

Algunos consejos que puedes hacer es,

  1. Recupere todos los productos de la tienda de aplicaciones usando SKProductsRequest y verifique si sus productos de response.products contienen el productIdentifier solicitado. para este uso,

    SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:[objProducts allKeys]]]; //pass product identifier array as argument [request start];

Y captura la respuesta en:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{ NSArray *myProduct = response.products; }

Para que pueda decidir es que puede comunicarse con la tienda de aplicaciones. y su identificación del producto está allí.

  1. Asegúrese de utilizar la cuenta de usuario de prueba de la aplicación para realizar pruebas.
  2. Y utiliza el mismo aprovisionamiento de ID de aplicación que configuró en la compra de la aplicación.

Gracias


En mi caso, probé todo en internet, pero nada funcionó.

Apple realmente rompió el sistema de pago de producción, y la caja de arena. Solo tuve que esperar dos días, y empezó a funcionar.


He estado atrapado por 2 días, aquí está mi solución:

  1. Eliminar todos los productos en la aplicación.
  2. Eliminar nuevos productos en la aplicación.
  3. Crear un probador de caja de arena.
  4. Cierre sesión en mi cuenta de Apple desde el dispositivo (iPad) y luego intente comprar el producto.
  5. Solicitará el inicio de sesión y luego volverá a iniciar sesión con la cuenta del comprobador de sandbox.
  6. La compra pasa por.

Creo que la importancia es la cuenta del comprobador de sandbox, no la he usado antes, ya que siempre obtuve el error-0.


Hice un Limpiar todos los destinos en XCode y eliminé manualmente la aplicación de mi dispositivo, luego Generé y ejecuté desde XCode y solucioné un problema similar (el mismo mensaje de error pero un código de error diferente: -1009)


Intenté todas las soluciones ofrecidas en el hilo aquí, pero fue en vano. En mi caso, tenía un identificador de paquete de comodín que comenzaba con el mismo nombre de dominio que el que usé al crear el identificador de paquete para el perfil de aprovisionamiento de compras en la aplicación.

Aquí es cómo solucioné el problema y puedo ayudarte a solucionar el tuyo (ver adjunto):

1) Conecte su iPhone a Mac.

2) En la sección "Dispositivos" (en Xcode> Menú de la ventana> Ventana del organizador), seleccione la opción "Perfiles de aprovisionamiento" para su iPhone. Verá todos los perfiles de aprovisionamiento que residen actualmente en su iPhone.

3) Elimine con cuidado todos los perfiles de aprovisionamiento que comiencen con el nombre de dominio particular en el identificador del paquete (com.MYDOMAIN. *) Especialmente los que usan comodín, excepto el que usted crea específicamente con la capacidad de hacer compras en la aplicación (com .MYDOMAIN.inappidentifier).

4) Instale la aplicación nuevamente y pruebe su implementación con un nuevo usuario de prueba de conexión de iTunes (sandbox)

CAPTURA DE PANTALLA:


Las preguntas frecuentes sobre la compra en la aplicación dicen:

No se puede conectar a la tienda de iTunes

El problema "No se puede conectar a iTunes Store" puede deberse a una o más de las siguientes razones:

  • La caja de arena puede ser inalcanzable.
  • Su aplicación no tiene una versión de paquete (CFBundleVersion). Consulte Configuración del número de versión y la cadena de compilación para obtener más información.
  • Su aplicación se ejecuta en el simulador, que no admite la compra desde la aplicación.
  • Está intentando comprar un producto que no está disponible para la venta. Consulte Consultar la tienda de aplicaciones para obtener información sobre el producto antes de presentar la interfaz de usuario de la tienda de su aplicación para obtener más información.

En mi caso, el error ocurrió porque estaba usando el simulador de Xcode. Comenzó a funcionar cuando usé mi dispositivo.

Incluso en la Guía de programación de compras en la aplicación, el uso del dispositivo iOS de desarrollo tiene un paso de prueba sugerido .


Lo que funcionó para mí fue desinstalar mi aplicación del dispositivo de prueba y luego instalar una copia nueva de Xcode.


Nuestro problema era que en Itunes Connect teníamos el identificador de paquete incorrecto. Alguien había creado la aplicación de antemano y tuvimos que editarla y configurarla a la nueva.


Sí, si inicialmente ha conectado su iPad / iPhone a una computadora diferente y ahora lo está usando en otra, debe cerrar la sesión en su iPad, iniciar sesión con una cuenta normal en iTunes en su MAC, luego sincronizar .

Además, asegúrese de que su iPad "WIFI" esté encendido ...


Si está obteniendo el error 0 "No se puede conectar a la tienda iTunes Store" (me doy cuenta de que no es el error -1003 que solicitó OP, pero una búsqueda en la web del error 0 también conlleva aquí), esto puede deberse a dos problemas posibles:

  1. Estás pasando el identificador de producto equivocado. Si ese es el caso, obtendrá el error 0 poco después de llamar -[SKPaymentQueue addPayment:] , antes de que -[SKPaymentQueue addPayment:] la ventana emergente que le pide que confirme el pago.
  2. Su usuario de prueba se ha invalidado. Esto puede suceder si accidentalmente inicia sesión en la App Store con su usuario de prueba. Cuando esto suceda, recibirá un error 0 después de ingresar su contraseña para confirmar su pago.

Para solucionar el problema # 1, pase el ID de producto correcto. Para solucionar el problema # 2, cree un nuevo usuario de prueba en iTunes Connect y, opcionalmente, elimine el usuario de prueba anterior.


Simplemente cierre sesión en su cuenta de iTunes (¡no inicie sesión en su cuenta de prueba ahora!) E inicie su programa. Cuando Inapp lo compre, solicite sus datos de inicio de sesión, debe ingresar la información de su cuenta de prueba.


Tuve dos problemas que causaron esto:

1) Copié el código IAP de una aplicación diferente (en funcionamiento) pero no pude configurar mi observador:

observador = [[IAPHelper alloc] init]; [[SKPaymentQueue defaultQueue] addTransactionObserver: observador];

2) He iniciado sesión en iTunes en la configuración de mi dispositivo. Solo puede usar un usuario de prueba en el recinto de seguridad: cerré la sesión y funcionó de nuevo.


Tuve el mismo error que parecía surgir de la nada (estaba funcionando bien un día, pero al día siguiente me estaba dando estos errores aproximadamente 2 de cada 3 veces que probé mi compra desde la aplicación).

Luego visité la App Store (cuando intentaba hacer otra compra real) y me di cuenta de que tenían un nuevo acuerdo de usuario que querían que yo verificara. Después de hacer eso, cuando volví a mi propia aplicación y volví a probar la compra de prueba, funcionó bien y no he tenido errores desde entonces. Entonces sospecho que estaba recibiendo el error porque querían que yo verificara el nuevo acuerdo de usuario.

Ahora, lo único que me pregunto es si hay una manera de que mi compra en la aplicación reenvíe ese mensaje a mis usuarios en lugar de darles un error misterioso.


Tuve el mismo error, y después de leer algunos subprocesos en los foros de desarrolladores , restablecí la configuración de mi dispositivo (Configuración-> General-> Restablecer-> Restablecer toda la configuración), lo que lo aclaró. Parecía drástico, pero funcionó.


Tuve un problema similar, estaba recibiendo "No se puede conectar a iTunes Store" con el Código = 0. Así es como lo resolví, después de probar todos los demás consejos rituales encontrados en Internet de volver a descargar mis certificados para restablecer todas las configuraciones de mi dispositivo y sacrificar una cabra virgen negra:

En el resumen de destino de la aplicación, solía tener mi número de versión en el campo "compilación", pero nada en el campo "versión". Esto me pareció extraño, así que moví el número de versión de "compilación" a "versión". Esto dio lugar al error mencionado anteriormente. Mover el número de versión a "compilación" solucionó el error.


Tuve una situación similar y descargué el tráfico de red del iPhone para ver qué está pasando. Encontré que se contactó con la tienda normal en lugar de con la caja de arena. Ayudó a eliminar la aplicación del dispositivo, a limpiarlo y a compilarlo / instalarlo nuevamente. Aparentemente algo con el perfil de desarrollo había salido mal.

Actualización: para volcar el tráfico de red de un iPhone sin jailbreak, solo use Compartir en su Mac y configure su iPhone para usar el WiFi de su Mac. Entonces tcpdump -n -i en1 en tu Mac hará el truco.