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.

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:

  1. Se le pedirá al cuadro de diálogo "Cambiar suscripción" que proporcione mi "Plan actual" y el "Plan nuevo" -> Haga clic en "Continuar"
  2. Se detallan los detalles del plan. Haga clic en -> 'Suscribir' -> 'Confirmar'
  3. La transacción se ha realizado correctamente y los datos de compra se devuelven a la aplicación.
  4. Recibir correo electrónico reclamando la suscripción se actualizó con detalles:
    • Plan Anterior: 3 – Meses: Cancelado
    • Nuevo Plan: 6 Meses: Activo Inmediatamente
  5. 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
  6. 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.

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.

  • Personalizar los detalles adquiridos de Android en la aplicación
  • No se puede crear IMarketBillingService.aidl para la compra de inApp
  • Protección de la Libertad
  • Android en la aplicación de facturación: Error consumiendo sku android.test.purchased (respuesta: 5: Developer Error)
  • ¿Puedo validar completamente las renovaciones de suscripción en la aplicación de Google Play por el servidor?
  • Seguridad de facturación InApp y invocación de métodos remotos
  • LibGdx Gdx-Pay extensión obtener el precio del artículo
  • Políticas de compra integradas en Google Play / App Store
  • Facturación en aplicaciones de Android y servicio bindService
  • Android In App BIlling v3 no funciona Nexus 7
  • MService.consumePurchase (3, packageName, purchaseToken) devuelve siempre RESULT_DEVELOPER_ERROR = 5 - argumentos no válidos proporcionados a la API
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.