2012-07-11 5 views
6

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!

+0

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

+0

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

risposta

5

La tabella di cronologia ha una singola voce per acquisto. Ciò significa che un acquisto che è stato successivamente rimborsato avrà, dopo il rimborso, un singolo record storico per il prodotto con lo stato "rimborsato".

Durante il conteggio degli acquisti, lo stato "Rimborsato" indica che l'articolo è stato acquistato. Spetta allo sviluppatore decidere se l'utente deve avere accesso ai prodotti rimborsati. (C'è un esempio su questo sito di uno sviluppatore che vuole rimborsare gli acquisti effettuati da persone che hanno già donato soldi e vorrebbe consentire loro di continuare a utilizzare il prodotto).

Se non si desidera contare i rimborsi, è necessario modificare il codice per aggiungere quantità per un acquisto, ma non fare nulla per un rimborso. (Non impostare la quantità su zero).

Nei prodotti di app sono disponibili in 3 varietà:

  1. voce Gestito: Google non consente ad acquistare tali prodotti più di una volta. La quantità totale può aggiungere fino a zero o una sola.

  2. Articolo non gestito: gli utenti possono acquistare tali prodotti molte volte. La quantità totale può essere zero o più

  3. Sottoscrizioni: lo stesso degli articoli gestiti.

+0

Grazie per la risposta chiara! – Ruuhkis