2013-05-29 15 views
6

Sto lavorando a un'applicazione che utilizza la fatturazione in-app di Google Play V3 per vendere un articolo valido per un determinato periodo di tempo. Dopo che un utente effettua un acquisto, invio i dati di acquisto al nostro server e lo consumo immediatamente, in caso di esito positivo. Il server concede quindi l'accesso al servizio extra per questo particolare utente fino alla fine del periodo. Nota: non sto utilizzando gli abbonamenti in-app.Consumare acquisti annullati su fatturazione in-app di Google Play

Sto testando gli acquisti con utenti di test in modalità sandbox in cui il pagamento non viene effettuato. Molti di loro hanno successo e questo flusso funziona bene. Tuttavia, a volte, i miei acquisti vengono annullati immediatamente da Google. Nella storia l'ordine nel mio account Google Checkout, vedo la linea: ". Per la tua sicurezza, Google ha annullato questo ordine La transazione era considerato fraudolento"

.

Anche se questo accade, vedo che ricevo un "purchaseState": 0 nei dati di acquisto, indicando un successo. Inoltre, il tentativo di consumare questo prodotto si traduce anche in un successo (chiamando IInAppBillingService.consumePurchase(version, package, token) restituisce 0). Interrogare il mio inventario in un secondo momento indica che non ho acquisti (e quindi nessun rimborso/annullamento) e sono in grado di acquistare nuovamente lo stesso oggetto. Questo è lo stesso comportamento dello stato normale, non codificato.

  1. Google annulla spesso gli ordini allo stesso modo, al di fuori della sandbox di prova?
  2. Gli articoli che sono stati correttamente acquistati e consumati possono ancora essere annullati (ad esempio, il rimborso del denaro) per ragioni al di fuori del controllo dello sviluppatore?
  3. È possibile conoscere le cancellazioni per prodotti già consumati?

risposta

1

Ha Google spesso annullare gli ordini nello stesso modo, al di fuori del test sandbox?

Google ha un sistema di rilevamento delle frodi che aiuta a identificare il pagamento inaffidabile. Ad esempio se qualcuno usa una carta di credito rubata o la stessa carta di credito viene utilizzata da più account, ecc. In questo caso la transazione di pagamento si interromperà anche prima che inizi (prima che un fornitore di servizi di pagamento venga contattato) con il messaggio nella tua domanda. A maggio, questo sistema di rilevamento delle frodi non era in grado di rilevare in modo affidabile i conti dei test, ecco perché è possibile vedere questo messaggio. Al giorno d'oggi è leggermente migliore. Nella vita reale ciò accade molto raramente.

Can elementi che sono stati acquistati e consumati ancora annullato (vale a dire il denaro rimborsato) per motivi al di fuori del controllo della sviluppatore con successo?

Questa è una domanda complicata, perché ciò che viene annullato non è un articolo, ma piuttosto una transazione di pagamento associata a questo articolo. In teoria, una transazione può essere annullata anche più avanti nel tempo, ma ci deve essere una buona ragione per farlo. Lo stesso esempio con una carta di credito rubata può essere valido qui. Nella vita reale non l'ho mai visto prima.

È possibile conoscere le cancellazioni per prodotti che hanno già consumato lo ?

Anche se non l'ho mai provato personalmente, non credo che un prodotto consumato possa essere cancellato. Come ho detto, una transazione di pagamento associata potrebbe essere annullata, ma non un prodotto consumato. È perché un prodotto consumato può essere nuovamente venduto e non esiste ancora alcuna connessione a un pagamento. Se il prodotto non viene consumato, se verrà messo in stato annullato, se una transazione di pagamento assegnata viene annullata.

Spero che questo aiuti.

+0

Se si tiene traccia degli articoli acquistati sul server, l'ID ordine dell'acquisto è anche l'ID della transazione di pagamento. Spetta a te implementare un qualche tipo di verifica anche se l'articolo è già stato consumato. – tomrozb

0

Sto configurando lo stesso tipo di applicazione.
L'utente può acquistare un articolo, verrà tracciato sul mio server e, infine, consumato, in modo che l'utente possa acquistare nuovamente lo stesso articolo.

Sto tenendo traccia di tutte le informazioni sull'acquisto e ho tentato di annullare un ordine già consumato. Posso confermarti che lo stato dell'ordine cambierà (dopo 10 minuti in più o in meno, riceverai anche l'email relativa alla cancellazione).

chiamata a questo URL del PurchaseAPI con il productId e purchaseToken restituirà le informazioni di acquisto:

https://www.googleapis.com/androidpublisher/v2/applications/<app.package.name>/purchases/products/<productId>/tokens/<purchaseToken>?access_token=<myToken> 

La prima volta che si ottiene una risposta simile:

{ 
    "kind": "androidpublisher#productPurchase", 
    "purchaseTimeMillis": "1458047931024", 
    "purchaseState": 0, 
    "consumptionState": 1, 
    "developerPayload": "mypurchasetoken" 
} 

e dopo la cancellazione del purchaseState sta per cambiare:

{ 
    "kind": "androidpublisher#productPurchase", 
    "purchaseTimeMillis": "1458047931024", 
    "purchaseState": 1, 
    "consumptionState": 1, 
    "developerPayload": "mypurchasetoken" 
} 

Questo è lo stesso OTTIENI che faccio la prima volta per la verifica del prodotto.
Probabilmente è consigliabile impostare un controllo periodico dello stato degli articoli acquistati e, in caso di cancellazione, aggiornare l'acquisto sul server.

Problemi correlati