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.
- Redireccionar usuario a la página de suscripción en la tienda de reproducción
- ¿El purchaseToken sigue siendo el mismo cuando se renueva una suscripción con Android In-App Billing V3?
- ID de pedido de Google Play actualizado a un nuevo formato
- Ejecutar código en el subproceso principal / UI en Cocos2dx
- Cómo crear una compra en la aplicación para actualizar la versión gratuita a la versión de pago de Android
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!
- Facturación en la aplicación de Android, compras múltiples del mismo artículo
- Android InApp Billing v3 - prueba con varios dispositivos
- Compra exitosa pero no se encuentra la clase cuando se desmarca: com.google.android.finsky.billing.lightpurchase.PurchaseParams
- Android inventory.getSkuDetails () devolviendo null
- En la facturación de aplicaciones v3 Artículos no consumibles de Android
- ¿Las cuentas de prueba requieren una tarjeta de crédito real para comprar a través de Facturación en la aplicación?
- En la aplicación de facturación V3
- Padding Error cuando base64decoding firma de google después de la compra en la aplicación
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:
-
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.
-
Unmanaged item: Los usuarios pueden comprar estos productos muchas veces. La cantidad total puede ser cero o más
-
Suscripciones: Lo mismo que los elementos gestionados.
- ¿Cómo funciona llamando a Snackbar.make () de un hilo no-UI?
- Android: determinar por qué no se pudo enviar SMS