Data di pubblicazione: 2 dicembre 2020
Oltre a consentire alla tua app di vendere prodotti digitali e abbonamenti sul Play Store, Fatturazione Google Play offre strumenti per gestire il tuo catalogo, i prezzi e gli abbonamenti, report utili e un flusso di pagamento basato sul Play Store che è già familiare ai tuoi utenti. È un requisito per le applicazioni pubblicate sul Play Store che vendono prodotti digitali.
L'API Fatturazione Google Play ha una propria terminologia e include componenti client e di backend. Questa sezione tratta solo una piccola parte dell'API specifica per l'utilizzo dell'API Digital Goods e dell'attività web attendibile. Assicurati di leggere la documentazione di Fatturazione Google Play e di comprenderne i concetti prima di integrarla in un' applicazione di produzione.
Il flusso di base
Per fornire prodotti digitali con il Play Store, configura il tuo catalogo sul Play Store e collega il Play Store come metodo di pagamento dalla tua PWA.
Puoi farlo nell'interfaccia del Play Store nel seguente modo:
- Fai clic su Prodotti nel menu di Play Console. Visualizza i prodotti e gli abbonamenti in-app esistenti.
- Fai clic su Crea prodotto per aggiungere un nuovo prodotto.
- Aggiungi un ID prodotto, un nome, una descrizione e un prezzo. Crea ID prodotto significativi e facili da ricordare, che ti serviranno in seguito. Gli ID non possono essere modificati una volta creati.
- Se crei un abbonamento, devi anche specificare un periodo di fatturazione. Puoi elencare i vantaggi dell'abbonamento e aggiungere funzionalità, come prove gratuite, prezzi di lancio, un periodo di tolleranza e un'opzione per l'abbonamento di nuovo.
- Fai clic su Attiva per rendere disponibile il prodotto.
Se preferisci, puoi aggiungere i tuoi prodotti con l'API Google Play Developer.
Una volta configurato il catalogo, il passaggio successivo consiste nel configurare il flusso di pagamento dalla PWA. Utilizza una combinazione dell'API Digital Goods e dell'API Payment Request.
Recuperare il prezzo di un prodotto con l'API Digital Goods
Quando utilizzi la fatturazione di Google Play, assicurati che il prezzo mostrato agli utenti corrisponda al prezzo indicato nella scheda dello Store. Mantenere manualmente sincronizzati questi prezzi sarebbe impossibile, pertanto l'API Digital Goods consente all'applicazione web di eseguire query sul fornitore di servizi di pagamento di base per i prezzi:
// The SKU for the product, as defined in the Play Store interface
async function populatePrice(sku) {
try {
// Check if the Digital Goods API is supported by the browser.
if (window.getDigitalGoodsService) {
// The Digital Goods API can be supported by other Payments provider.
// In this case, we're retrieving the Google Play Billing provider.
const service =
await window.getDigitalGoodsService("https://play.google.com/billing");
// Fetch product details using the `getDetails()` method.
const details = await service.getDetails([sku]);
if (details.length === 0) {
console.log(`Could not get SKU: "${sku}".`);
return false;
}
// The details contain both the price and the currenncy.
item = details[0];
const value = item.price.value;
const currency = item.price.currency;
const formattedPrice = new Intl.NumberFormat(navigator.language, {
style: 'currency', currency: currency }).format(value);
// Display the price to the user.
document.getElementById("price").innerHTML = formattedPrice;
} else {
console.error("Could not get price for SKU \"" + sku + "\".");
}
} catch (error) {
console.log(error);
}
return false;
}
Puoi rilevare il supporto dell'API Digital Goods controllando se getDigitalGoodsService()
è
disponibile per l'oggetto window
.
Quindi, chiama window.getDigitalGoodsService()
con l'identificatore di fatturazione di Google Play come parametro.
Viene restituita un'istanza di servizio per la fatturazione di Google Play e altri fornitori possono implementare il supporto per l'API Digital Goods e avere identificatori diversi.
Infine, richiama getDetails()
sul riferimento all'oggetto Fatturazione Google Play che trasmette lo SKU dell'articolo come parametro. Il metodo restituisce un oggetto details contenente sia il prezzo sia la valuta dell'articolo, che possono essere visualizzati dall'utente.
Avvia il flusso di acquisto
L'API Payment Request consente i flussi di acquisto sul web ed è utilizzata anche per l'integrazione della Fatturazione Google Play. Consulta Come funziona l'API Payment Request per saperne di più se non hai mai utilizzato l'API Payment Request.
Per utilizzare l'API con la fatturazione di Google Play, devi aggiungere uno strumento di pagamento con un metodo supportato denominato https://play.google.com/billing
.
Aggiungi lo SKU come parte dei dati dello strumento:
const supportedInstruments = [{
supportedMethods: "https://play.google.com/billing",
data: {
sku: sku
}
}];
Poi, crea un oggetto PaymentRequest
come di consueto e utilizza l'API come di consueto
const request = new PaymentRequest(supportedInstruments, details);
Conferma l'acquisto
Una volta completata la transazione, utilizza l'API Digital Goods per confermare il pagamento. L'oggetto di risposta di PaymentRequest
contiene un token che puoi utilizzare per confermare la transazione:
const response = await request.show();
const token = response.details.token;
const service = await window.getDigitalGoodsService("https://play.google.com/billing");
await service.acknowledge(token, 'onetime');
L'API Digital Goods e l'API Payment Request non sono a conoscenza dell'identità dell'utente. Di conseguenza, spetta a te associare l'acquisto all'utente nel tuo backend e assicurarti che abbia accesso agli articoli acquistati. Quando associ l'acquisto a un utente, ricordati di salvare il token di acquisto, in quanto potresti averne bisogno per verificare se l'acquisto è stato annullato o rimborsato o se un abbonamento è ancora attivo. Consulta l'API Notifiche sviluppatore in tempo reale e l'API Google Play Developer, in quanto forniscono endpoint per gestire questi casi nel tuo backend.
Verificare la presenza di diritti esistenti
Un utente potrebbe aver utilizzato un codice promozionale o avere un abbonamento esistente al tuo prodotto. Per verificare che l'utente disponga dei diritti appropriati, puoi chiamare il comando listPurchases()
sul servizio di prodotti digitali. Verranno restituiti tutti gli acquisti effettuati dal cliente nella tua app. Qui puoi anche confermare gli acquisti non confermati per assicurarti che l'utente riscatti correttamente i suoi diritti.
const purchases = await itemService.listPurchases();
for (p of purchases) {
if (!p.acknowledged) {
await itemService.acknowledge(p.purchaseToken, 'onetime');
}
}