React-native-iap: No permite recomprar elementos de Android en la cuenta de prueba

Creado en 13 abr. 2018  ·  16Comentarios  ·  Fuente: dooboolab/react-native-iap

Versión de react-native-iap

0.3.10

Plataformas a las que se enfrentó el error (¿IOS o Android o ambos?)

Androide

Comportamiento esperado

Debería poder recomprar un artículo tantas veces como sea necesario, ya que solo estoy probando

Comportamiento real

Devoluciones

Error: You already own this item.
    at createErrorFromErrorData (59522b9c-ca17-4e00-9e00-05cc989b1199:2016)
    at 59522b9c-ca17-4e00-9e00-05cc989b1199:1968
    at MessageQueue.__invokeCallback (59522b9c-ca17-4e00-9e00-05cc989b1199:2410)
    at 59522b9c-ca17-4e00-9e00-05cc989b1199:2155
    at MessageQueue.__guardSafe (59522b9c-ca17-4e00-9e00-05cc989b1199:2323)
    at MessageQueue.invokeCallbackAndReturnFlushedQueue (59522b9c-ca17-4e00-9e00-05cc989b1199:2154)
    at t (RNDebuggerWorker.js:1)

Pasos para reprobar el comportamiento

Compre un artículo más de una vez con una cuenta de prueba

🙏 help wanted

Comentario más útil

Me estaba encontrando con el mismo problema que @ilyakar , y usando el código a continuación pude borrar la compra no consumible y probarla nuevamente.


async componentDidMount() {
    const { itemSkus } = this.props;
    try {
      const result = await RNIap.initConnection()
      console.log('initiated connection?', result)
      const consumed = await RNIap.consumeAllItems();
      console.log('consumed all items?', consumed)
      let products = await RNIap.getProducts(itemSkus);
      console.log('loaded products', products)
    } catch (err) {
      console.warn(err);
    }
  };

Todos 16 comentarios

@ilyakar ¿Es este un producto consumible? Debes consumir el artículo para recomprarlo. Lea algunas guías sobre cómo funciona IAP en Android.

Hola @dooboolab , no es un producto consumible. Los usuarios lo tienen para siempre. Hay una forma de restaurar el producto, por lo que es bueno informar a los usuarios en producción que no pueden volver a comprar el mismo producto porque ya lo compraron. Pero a efectos de prueba, resulta muy incómodo tener que utilizar una cuenta diferente cada vez que se han realizado todas las compras.

No creo que haya tenido este problema en 0.2.17

@ilyakar Ah .. Lo siento, estaba confundido. En realidad, si se trata de un producto non-consumable , no se puede volver a comprar. Si eso fuera posible en 0.2.17 debe estar funcionando mal. Sólo los productos consumibles pueden recomprarlo. Es lo mismo en ambas plataformas (ios y android). Si el usuario desea restaurar el elemento, debe hacerlo opcionalmente, pero como en LINK , no volverá a cobrarle al usuario. Por lo tanto, si está diseñando productos integrados en la aplicación que desea cobrar a los usuarios mediante la recompra, creo que debería crear el producto consumable .

@ilyakar Recibí comentarios de mi amigo desarrollador y él también enfrentó el mismo problema. Por lo tanto, se me ocurrió una solución para usar el método refreshItems que solo ocurre en android . Puede usar esto en [email protected] . Intente usarlo después del método prepare . Mi amigo se enfrentaba a este problema porque no podía encontrar la ficha del producto comprado para consumir. Por lo tanto, este method es solo para su comodidad si no le importa el historial de compras que se basa en playstore . Cuando tenga su propio backend que recopile el historial de compras, esto lo ayudará a resolver el problema. Tengo que echarle un vistazo a este más duro. Además, seguir el readme lo ayudaría. ¡Gracias por tu informe!

PD: Creo que el método anterior también funcionará en el producto non-consumable . Además, este artículo te ayudará a comprender lo que refeshItems te resolvería.

Creo que esto ya está resuelto porque no creo que IAP funcione con la cuenta de prueba

Y la solución de @dooboolab de refreshItems es el camino a seguir

Una pregunta de novato @dooboolab, ya que solo he implementado IAP una vez en una aplicación de Android, pero nunca lo intenté si funciona

¿Podemos comprar un producto sin gastar dinero como $ 0?

Sí, @ deadcoder0904 , ese es todo el concepto de cuentas de prueba de Android (https://developer.android.com/google/play/billing/billing_testing.html). Que funcionan bien con el complemento, pero como he señalado, no puede realizar la misma compra dos veces.

@ilyakar Estás diciendo que todavía no funciona. ¿Intentó llamar refreshItems después de comprar el producto? Como se describe aquí , puede causar cierto retraso en Play Store. Sin embargo, puede forzar el consumo del producto para poder recomprarlo nuevamente. Sin embargo, también tengo curiosidad por saber por qué esto funciona ... También ten cuidado si confías en las compras en el historial de Google Play y no lo recopilas en tu backend.

Hola @dooboolab , estaba respondiendo a @ deadcoder0904 con mis conocimientos previos. Me temo que no he probado tu solución y probablemente no lo haré por algún tiempo, ya que no es una solución urgente. Pero te lo haré saber en el futuro cuando lo haya hecho.

@ilyakar ten cuidado con refreshItems porque consumirá todos los productos que el usuario haya comprado. Solo puede usarlo si no le importa la información almacenada en PlayStore porque tiene su servidor ganado. Además, este problema suele ocurrir como publiqué hace 13 días desde aquí , si el usuario ha reembolsado el artículo, el usuario no puede volver a comprar el mismo artículo durante 24 horas.

Me estaba encontrando con el mismo problema que @ilyakar , y usando el código a continuación pude borrar la compra no consumible y probarla nuevamente.


async componentDidMount() {
    const { itemSkus } = this.props;
    try {
      const result = await RNIap.initConnection()
      console.log('initiated connection?', result)
      const consumed = await RNIap.consumeAllItems();
      console.log('consumed all items?', consumed)
      let products = await RNIap.getProducts(itemSkus);
      console.log('loaded products', products)
    } catch (err) {
      console.warn(err);
    }
  };

@TylerNoblett Esta solución no funciona en este momento.

  • Intenté con consumeAllItemsAndroid lugar de consumeAllItems .
    Se agradece cualquier ayuda adicional.

La salida de la consola es:

setUpDeveloperTools.js:73 TypeError: _reactNativeIap.default.consumeAllItems is not a function
    at loadPurchases$ (NewGameScreen.js:167)
    at tryCatch (runtime.js:45)
    at Generator.invoke [as _invoke] (runtime.js:271)
    at Generator.prototype.<computed> [as next] (runtime.js:97)
    at tryCatch (runtime.js:45)
    at invoke (runtime.js:135)
    at runtime.js:145
    at tryCallOne (core.js:37)
    at core.js:123
    at JSTimers.js:289

En:

    "react": "16.9.0",
    "react-native": "0.61.3",
    "react-native-iap": "^4.3.0",

@tulpn Parece que no ha instalado correctamente nuestro módulo ya que consumeAllItemsAndroid debería estar funcionando bien.

@hyochan no funcionó para mí.

@ roots-ai ¿Qué versión estás usando? Además, consulte el código que proporcionamos en example también.

¿Fue útil esta página
0 / 5 - 0 calificaciones