React-native-iap: ¿Cómo cancelar manualmente una compra pendiente?

Creado en 29 jul. 2019  ·  8Comentarios  ·  Fuente: dooboolab/react-native-iap

Versión de react-native-iap

3.3.7

Versión de react-native

0.59.8

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

Androide

Comportamiento esperado

cuando solicito una compra, valido el recibo en mi servidor, si la validación falló, quiero poder cancelar manualmente la compra, en lugar de la función purchaseUpdatedListener que se activa cada vez, si no llamo a reconocer la compra o consumir la compra.

Comportamiento real

al no finalizar la compra, no puedo cancelar la compra pendiente. En Android tengo que esperar a que se cancele automáticamente.

Entorno probado (¿Emulador? ¿Dispositivo real?)

Dispositivo real

Pasos para reproducir el comportamiento

Realice una compra y no llame a reconocercompra ni a consumircompra.

1️⃣ good first issue ❓ question 🙏 help wanted 🤖 android

Comentario más útil

@hyochan , ¿Existe una funcionalidad como esa en iOS, para cancelar una compra que no se ha completado llamando finishTransactionIOS y luego eliminar esa compra del historial de compras? No sé si hay otra forma de verificar si una suscripción aún está activa, pero lo que hago ahora es verificar la fecha de vencimiento de la última transacción en el historial de recibos. Entonces, si una compra no se ha completado, no quiero que se registre en el historial de compras. Desafortunadamente, en este momento, eso es exactamente lo que está sucediendo. Y a diferencia de Android, la compra incompleta no se cancelará después de un tiempo y nunca dejará de ser activada por el purchaseUpdateListener .

Entonces tengo el mismo problema en ios y android, necesito cancelar una compra que no se ha completado. Y específicamente en ios, no tener esa compra registrada en el historial a menos que exista una forma más eficiente de verificar la validez de una suscripción.

Todos 8 comentarios

Incluso el resultado de la falla, aún debe llamar a acknowledgePurchase y consumePurchase para completar la transacción. Solo no procede con la lógica, como no dar una recompensa en su propia base de datos. Además, debe consmePurchase para que no permanezca en su aplicación.

@hyochan si hago eso, el pago será aprobado y la cuenta de usuario será cargada sin recibir recompensa.

@tmjordan Oh, ya veo lo que quisiste decir. ¿Qué pasa si procedes con lógica dando una recompensa entonces?

@hyochan cuando un usuario compra un producto, el recibo entregado se envía a los servidores de Google para validar el recibo y obtener el estado de la compra (si el pago ha sido aprobado, está pendiente o cancelado).
Digamos que tengo un error durante el proceso de validación que no proviene del servidor de Google (mi backend, por ejemplo), por lo que no puedo validar el recibo y quiero cancelar la compra manualmente en lugar de esperar a que Google la cancele ( durante ese tiempo no puedo hacer otra compra) si no llamo aknowledgepurchase o consumepurchase.
No sé si es posible, tal vez así es como funciona el proceso de compra en Google.

Sería bueno si pudiéramos cancelar manualmente una compra que aún no ha sido reconocida o consumida. En ese escenario, se reembolsará al usuario si el pago ha sido aprobado.
En lugar de que se active la misma compra cada vez hasta que Google la cancele.

@tmjordan Gracias por tu buen punto de vista. Suena muy razonable, pero no estoy seguro de que las compras de pending se carguen realmente. Creo que las compras de pending ni siquiera deberían cargarse cuando acknowledged y más bien deberían eliminarse. Espero que podamos repasar más detalles sobre otras experiencias.

@hyochan , ¿Existe una funcionalidad como esa en iOS, para cancelar una compra que no se ha completado llamando finishTransactionIOS y luego eliminar esa compra del historial de compras? No sé si hay otra forma de verificar si una suscripción aún está activa, pero lo que hago ahora es verificar la fecha de vencimiento de la última transacción en el historial de recibos. Entonces, si una compra no se ha completado, no quiero que se registre en el historial de compras. Desafortunadamente, en este momento, eso es exactamente lo que está sucediendo. Y a diferencia de Android, la compra incompleta no se cancelará después de un tiempo y nunca dejará de ser activada por el purchaseUpdateListener .

Entonces tengo el mismo problema en ios y android, necesito cancelar una compra que no se ha completado. Y específicamente en ios, no tener esa compra registrada en el historial a menos que exista una forma más eficiente de verificar la validez de una suscripción.

Me gustaría manejar un escenario similar

  1. Usuario Iniciar la compra de un producto (urgente). Este producto debe devolverse inmediatamente.
  2. El servidor no devuelve el producto. y puede ser tarde para devolver el producto volviendo a intentar
  3. purchaseUpdateListener se activa muchas veces hasta que se llama a finishTransactionIOS; sin embargo, estos no son los resultados deseables. La transacción debe cancelarse en esta etapa.

¿Existe algún método para cancelar la transacción?

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