React-native-iap: Comprar el mismo producto dos veces dará error

Creado en 18 abr. 2018  ·  5Comentarios  ·  Fuente: dooboolab/react-native-iap

Versión de react-native-iap

0.3.13

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

iOS

Comportamiento esperado

Se espera que compre un producto sin problemas

Comportamiento real

La primera vez que compro un producto_A en un dispositivo "nuevo", funciona.
Segunda vez que intento comprar el mismo producto_A (no importa si reinicio la aplicación o no)
no trabajará. El mensaje de error es: "Se ha producido un error desconocido o inesperado. Vuelva a intentarlo más tarde".

Pasos para reproducir el comportamiento

1.Implemente IAP como en Léame.

try {
      const msg = await RNIap.prepare()
      const products = await RNIap.getProducts([`${productId}`])
      const purchase = await RNIap.buyProduct(productId)
      this.props.purchaseCoinsPack(coinsPack)
      await RNIap.consumePurchase(purchase.transactionReceipt)
    } catch (err) {
      alert(err.message);
    }

_En caso de que tenga este código en mi componenteDidMount() y componenteWillUnmount():_

getPurchases = async () => {
    try {
      const purchases = await RNIap.getAvailablePurchases();
      purchases.forEach(async purchase => {
        const boughtPack = R.find(R.propEq('androidStoreId', purchase.productId))(this.props.coinsPacks)
        if (boughtPack) {
          this.props.purchaseCoinsPack(boughtPack);
          await RNIap.consumePurchase(purchase.transactionReceipt);
        }
      })
    } catch (err) {
      console.warn(err); // standardized err.code and err.message available
    } finally {
      this.setState({ isLoading: false })
    }
  }

  async componentDidMount() {
    try {
      await RNIap.prepare()
    } catch (err) {
      console.warn(err);
    }
    this.getPurchases()
  }

  async componentWillUnmount() {
    RNIap.endConnection()
  }

2. La primera compra funciona bien.
Por favor, inténtelo de nuevo más tarde."

Comentario más útil

la última v0.3.15 le dará el error code con un mensaje.
Entonces, ¿puede probar la última versión nuevamente y cuál es el código de error?
Si el código de error es -1001, podría tratarse de un problema de sandbox temporal de Apple.
Voy a mirar este problema también.

Todos 5 comentarios

¿El producto es consumible o no consumible?

@JJMoon consumible.
2018-04-19_07h40_09

la última v0.3.15 le dará el error code con un mensaje.
Entonces, ¿puede probar la última versión nuevamente y cuál es el código de error?
Si el código de error es -1001, podría tratarse de un problema de sandbox temporal de Apple.
Voy a mirar este problema también.

Después de la actualización a 0.3.15, el problema desapareció en iOS.
Android también funciona muy bien.
¡Gracias!

¡Bueno oír eso!
Puede ser un problema temporal de Apple, ya que la nueva versión no cambió nada más que el registro.
Ha habido tantos problemas cuando probamos con el sandbox.
La mayoría de los casos no ocurren en la producción lanzada por App Store.

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

Temas relacionados

jvandenaardweg picture jvandenaardweg  ·  4Comentarios

lc3t35 picture lc3t35  ·  4Comentarios

ramondelmondo picture ramondelmondo  ·  4Comentarios

MacMillan13 picture MacMillan13  ·  3Comentarios

sanilcgs picture sanilcgs  ·  3Comentarios