Android IAP getBuyIntentToReplaceSkus no está cancelando la antigua suscripción
Estoy intentando implementar actualizaciones / descensos de suscripciones en mi aplicación para Android. Creo que he implementado correctamente todo lo que no parece estar funcionando correctamente durante mis pruebas.
Mi aplicación tiene tres opciones: Opciones de suscripción mensuales, de 3 meses y 6 meses. Cuando me suscribo a cualquier opción llamo a la siguiente función donde 'sku' es el sku para el artículo que se compra y 'oldSkus' son el skus para los otros elementos.
- ¿Es posible con la suscripción mensual de compra en la aplicación de Android?
- ¿Cómo verificamos el recibo de facturación de Android en la aplicación en el lado del servidor?
- Cómo manejar DeadObjectException?
- Compra de Android en la aplicación
- Facturación dentro de la aplicación - Artículo solicitado no disponible para la compra
buyIntentBundle = mService.getBuyIntentToReplaceSkus(5, mContext.getPackageName(), oldSkus, sku, itemType, extraData);
Cuando me suscribo a la opción de 3 meses, funciona bien y la aplicación recibe correctamente una suscripción de 3 meses de la Play Store. Si intento actualizar a la suscripción de 6 meses, se produce el siguiente flujo:
- Se le pedirá al cuadro de diálogo "Cambiar suscripción" que proporcione mi "Plan actual" y el "Plan nuevo" -> Haga clic en "Continuar"
- Se detallan los detalles del plan. Haga clic en -> 'Suscribir' -> 'Confirmar'
- La transacción se ha realizado correctamente y los datos de compra se devuelven a la aplicación.
- Recibir correo electrónico reclamando la suscripción se actualizó con detalles:
- Plan Anterior: 3 – Meses: Cancelado
- Nuevo Plan: 6 Meses: Activo Inmediatamente
- Ir a la cuenta de Play Store y ver suscripciones
- Plan de 3 meses – Suscrito con el botón Cancelar
- Plan de 6 Meses – Suscrito con el botón Cancelar
- Lanzar aplicación y observador getInventory resultados
- Plan de 3 meses – El usuario ha suscrito
- Plan de 6 meses – El usuario ha suscrito
Por lo que puedo decir, la antigua suscripción no fue cancelada correctamente por Play Store. Mi esperanza es que esto está sucediendo solamente porque estoy utilizando una cuenta del probador y el $ / day que ocurre cuando las suscripciones de prueba están causando algunos problemas con el pro-grado.
ACTUALIZACIÓN: Google ha respondido a mi boleto y me informó de que han escalado el problema. Actualizaré de nuevo cuando reciba otra respuesta.
- ¿Qué cuenta de Google Play utiliza IabHelper?
- OnIabPurchaseFinishedListener nunca se llama
- Android en la facturación de aplicaciones - Error al recuperar información del servidor
- Extraño error de API de IAP de lotes de Google Play
- En el IAB de Google, ¿puedo obtener el título y el precio del producto antes de llamar al método launchpurchaseflow?
- Google Play Store está dando créditos adicionales al usuario?
- ID de pedido de Google Play actualizado a un nuevo formato
- Facturación de InApp: java.lang.SecurityException Requiere READ_PHONE_STATE
Lo he probado con dinero real. La antigua suscripción se canceló (creo que revocada en la forma en que Google Play lo entiende). Después de actualizar la suscripción anterior, ya no será visible en los detalles de la aplicación en la aplicación de Google Play. Sólo la nueva.
Aunque no estoy seguro de cómo reconocerlo con la llamada a API de desarrollador de Google Play: cómo reconocer que esta suscripción antigua ya no es válida. El método get en el recurso Purchases.subscriptions devuelve autoRenew como false (lo cual es bueno), pero no es suficiente reconocer que las características de esa suscripción ya no estarán disponibles para el usuario, ya que el mismo sucede cuando el usuario cancela suscripciones y cuando el usuario cancela Las suscripciones las características deben estar disponibles hasta el período de vencimiento.
Por desgracia, la expiración devuelta por la llamada get todavía tiene el mismo valor – por lo que no se puede utilizar eso.
ACTUALIZACIÓN: El método getPurchases en el cliente de Android no devuelve la suscripción anterior después de la actualización. Me pregunto si hay una forma de reconocerlo a través de la llamada de API de desarrollador de Google Play.
- Realm query equalTo resultados en nullpointerexception
- Cómo actualizar la lista de archivos en Android SAF