Esta es la primera vez que implemento la facturación en la aplicación de Android y tomé la mayor parte del código directamente desde guideline y todo se olvida perfectamente hasta que pensé en la devolución. La aplicación de ejemplo ya ha implementado un reembolso, ¡pero de una manera extraña! El reembolso se recibe en la aplicación como la compra, pero con el estado de la restitución que es totalmente comprensible, pero la fuente original es el siguiente:Reembolso de facturación en la aplicación de Android
// 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 artículo añadiendo incluso si era devuelto y no tengo idea de por qué es esto? ¿El artículo devuelto tiene una identificación especial o lo que me falta? Solo he intentado esto con los productos de prueba, así que no tengo idea.
método updatePurchasedItem elimina la entrada de la mesa si la cantidad es 0, lo que parece totalmente correcto, así que cambió mi código a 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 habría un código incorrecto en el ejemplo de aplicación, así que estoy totalmente seguro si lo estoy haciendo bien!
¿Cómo debo manejar esto? ¡Por favor, ayúdame!
Podría ser solo un error. ¿La variable de cantidad mide las compras totales de un tipo de artículo, o solo todas las compras (incluido el tipo de "reembolso")? No me sorprendería si fuera un error, ya que el ejemplo de suscripción que existe en el sitio para desarrolladores de Android no funciona sin una modificación. – BDFun
La cantidad es por la cantidad de artículos comprados en ese momento (no creo que sea posible comprar más de un artículo a la vez), y por alguna razón está aumentando la cantidad incluso si el artículo fue reembolsado. updatePurchasedItem elimina la entrada si recibe un producto con una cantidad de 0, que se supone que indica un reembolso por lo que sé, ya que no usa los datos de estado en ningún otro lado. Puede consultar el ejemplo aquí http://developer.android.com/guide/google/play/billing/billing_integrate.html#billing-download – Ruuhkis