Reembolso de facturación de Android en la aplicación

Esta es la primera vez que estoy implementando en la aplicación de facturación en la aplicación android y tomé la mayor parte del código directamente de la guía y todo se olvida perfectamente hasta que pensé en el reembolso. El ejemplo de la aplicación ya ha sido reembolsado, pero de una manera extraña! El reembolso se recibe en la aplicación como compra pero con el estado del reembolso que es totalmente comprensible pero la fuente original se parece a esto:

// Count the number of times the product was purchased while (cursor.moveToNext()) { int stateIndex = cursor.getInt(2); PurchaseState state = PurchaseState.valueOf(stateIndex); // Note that a refunded purchase is treated as a purchase. Such // a friendly refund policy is nice for the user. if (state == PurchaseState.PURCHASED || state == PurchaseState.REFUNDED) { quantity += 1; } } // Update the "purchased items" table updatePurchasedItem(productId, quantity); 

Su adición de artículo, incluso si fue devuelto y no tengo idea de por qué es esto? ¿El artículo reembolsado tiene identificación especial o qué estoy faltando? Sólo he probado esto con los productos de prueba, así que no tengo idea.

El método updatePurchasedItem elimina la entrada de la tabla si la cantidad es 0 que parece totalmente correcta, así que cambié mi código por este

  while (cursor.moveToNext()) { int stateIndex = cursor.getInt(2); PurchaseState state = PurchaseState.valueOf(stateIndex); // Note that a refunded purchase is treated as a purchase. Such // a friendly refund policy is nice for the user. if(Consts.DEBUG) Log.v(TAG, state == PurchaseState.PURCHASED ? "purchase" : "refund"); if (state == PurchaseState.PURCHASED) { quantity += 1; } else if(state == PurchaseState.REFUNDED) { quantity = 0; } } // Update the "purchased items" table updatePurchasedItem(productId, quantity); 

Pero dudo que hubiera código incorrecto en la aplicación de ejemplo, así que estoy totalmente inseguro si lo estoy haciendo bien!

¿Cómo debería manejar esto? ¡Por favor, ayúdame!

La tabla de historial tiene una sola entrada por compra. Esto significa que una compra que posteriormente fue devuelta tendrá, después del reembolso, un registro de historial único para el producto con un estatus de "reembolsado".

Al contar compras, un estado "reembolsado" sugiere que el artículo se ha comprado. A continuación, incumbe al desarrollador decidir si el usuario debe tener acceso a los productos reembolsados. (Hay un ejemplo en este sitio de un desarrollador que desea reembolsar las compras hechas por personas que ya han donado dinero y les gustaría permitirles seguir usando el producto).

Si no desea que los reembolsos cuenten, debe cambiar su código para agregar cantidad para una compra, pero no haga nada por un reembolso. (No establezca la cantidad a cero).

En los productos de la aplicación vienen en 3 variedades:

  1. Elemento administrado: Google no permite la compra de dichos productos más de una vez. La cantidad total puede sumar hasta cero o una sola.

  2. Unmanaged item: Los usuarios pueden comprar estos productos muchas veces. La cantidad total puede ser cero o más

  3. Suscripciones: Lo mismo que los elementos gestionados.

  • El retorno de API de Google IAB API3 getSkuDetails () falló 5: Error del programador
  • En la API de facturación de la aplicación v3 INAPP_PURCHASE_DATA es nulo en el paquete cuando onActivityResult se llama
  • En la aplicación de facturación v3 cuando no hay red
  • Cómo corregir - "Esta versión de la aplicación no está configurada para la facturación de mercado"?
  • Cómo convertir una aplicación de Android de un modelo de pago gratuito a un desbloqueo de pagos en la aplicación
  • Android In App BIlling v3 - Período de prueba de suscripción incorrecto
  • Error de Google Play "Error al recuperar información del servidor "
  • Falla en la facturación de la aplicación en la nueva versión de mi aplicación
  • Error de configuración de Sandbox en la aplicación de Android en un ID de Gmail concreto
  • ¿Cómo recuperar el correo electrónico del cliente en la transacción de facturación dentro de la aplicación?
  • Google Play Store está dando créditos adicionales al usuario?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.