Questa è la prima volta che eseguo la fatturazione in-app nell'app per Android e ho preso la maggior parte del codice direttamente da guideline e tutto si dimentica perfettamente finché ho pensato al rimborso. L'app di esempio ha già implementato il rimborso, ma in un modo strano! Il rimborso viene ricevuto su app come acquisto, ma con lo stato di rimborso, che è del tutto comprensibile, ma la fonte originale è simile al seguente:Rimborso fattura in-app 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);
sua voce aggiungendo anche se è stato rimborsato e ho avuto idea del perché è questo? L'articolo rimborsato ha un ID speciale o cosa mi manca? L'ho provato solo con i prodotti di test quindi non ne ho idea.
metodo updatePurchasedItem rimuove voce dalla tabella se la quantità è 0 che sembra del tutto giusto, così ho cambiato il mio codice a questo
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);
ma dubito ci sarebbe codice errato nell'esempio app, quindi sono totalmente sicuro se lo sto facendo bene!
Come devo gestirlo? Mi aiuti per favore!
Potrebbe essere solo un bug. La variabile quantitativa misura gli acquisti totali di un tipo di articolo o solo tutti gli acquisti (incluso il tipo di "rimborso")? Non sarei sorpreso se si trattasse di un bug, in quanto l'esempio di sottoscrizione che esiste sul sito degli sviluppatori Android non funziona senza un tweak. – BDFun
La quantità è per la quantità di articoli acquistati in quel momento (non penso sia persino possibile acquistare più di un articolo in una sola volta), e per qualche motivo l'aumento della quantità anche se l'articolo è stato rimborsato. updatePurchasedItem rimuove la voce se riceve un prodotto con quantità pari a 0, che dovrebbe indicare un rimborso per quanto ne so, dal momento che non usa i dati di stato da nessun'altra parte. Puoi controllare l'esempio qui http://developer.android.com/guide/google/play/billing/billing_integrate.html#billing-download – Ruuhkis