Questa guida è rivolta alle app web pacchettizzate come Attività web attendibile. Per le app per Android scritte in Kotlin o Java, consulta la documentazione di Fatturazione Google Play.
Le app su Google Play che vendono prodotti digitali o abbonamenti devono utilizzare la Fatturazione Google Play. In un'Attività web attendibile, l'integrazione avviene utilizzando le seguenti API web, disponibili in Chrome 101 e versioni successive su Android e ChromeOS:
- API Prodotti Digitali: recupera i dettagli del prodotto e gli acquisti dell'utente.
- API Payment Request: avvia il flusso di acquisto.
Requisiti
Per configurare Fatturazione Google Play, devi disporre di quanto segue:
- Un account sviluppatore Google Play e un account commerciante Google Payments collegati tra loro.
- Una scheda del Play Store con una release nel canale pubblico, di test chiuso o di test interno.
- I prodotti e gli abbonamenti della tua app configurati in Play Console.
- Un progetto di Attività web attendibile con una configurazione di Digital Asset Links funzionante.
Non addebitare il download della tua app dal Play Store. La tua PWA è ancora disponibile sul web, quindi un download a pagamento non limita l'accesso. Invece, vendi funzionalità o contenuti con acquisti in-app o abbonamenti.
Attiva Fatturazione Play nel tuo progetto Android
Se crei la tua app con Bubblewrap, attiva la funzionalità playBilling in
twa-manifest.json nella directory principale del progetto:
"features": {
"playBilling": {
"enabled": true
}
}
Quindi esegui bubblewrap update seguito da bubblewrap build e carica il nuovo pacchetto Android sul Play Store.
Se crei la tua app in Android Studio, aggiungi la
libreria Android Browser Helper Play Billing. Per le modifiche richieste a DelegationService e AndroidManifest.xml, consulta la demo di twa-play-billing.
Verifica il supporto di Fatturazione Google Play
Chiama getDigitalGoodsService() con l'identificatore del Play Store,
https://play.google.com/billing. Se il metodo non è presente o la chiamata non va a buon fine,
utilizza un altro flusso di pagamento:
if ('getDigitalGoodsService' in window) {
try {
const service =
await window.getDigitalGoodsService('https://play.google.com/billing');
// Google Play Billing is available.
} catch (error) {
// Google Play Billing isn't available. Use another payment flow.
}
}
Mostrare i dettagli del prodotto
Utilizza getDetails() per recuperare il titolo, la descrizione e il prezzo degli ID prodotto, in modo che i prezzi visualizzati corrispondano a quelli del Play Store:
const details = await service.getDetails(['shiny_sword', 'gem']);
for (const item of details) {
const localizedPrice = new Intl.NumberFormat(
navigator.language,
{style: 'currency', currency: item.price.currency}
).format(item.price.value);
renderProductDetails(
item.itemId, item.title, localizedPrice, item.description);
}
L'API Digital Goods non può elencare gli ID prodotto. Per eseguire query dal tuo backend, utilizza l'API Google Play Developer.
Effettuare un acquisto
Crea un PaymentRequest con https://play.google.com/billing come metodo di pagamento e l'ID prodotto come sku in data. La Fatturazione Google Play utilizza il prezzo di Play Console, pertanto total è obbligatorio, ma viene ignorato.
Dopo la risoluzione di show(), invia il token di acquisto al tuo backend per verificare e confermare l'acquisto. Se non confermi un acquisto entro tre giorni, Google Play rimborsa l'utente e revoca l'acquisto.
async function makePurchase(service, sku) {
const paymentMethods = [{
supportedMethods: 'https://play.google.com/billing',
data: {sku},
}];
// Required by the Payment Request API, but ignored by Google Play Billing.
const paymentDetails = {
total: {label: 'Total', amount: {currency: 'USD', value: '0'}},
};
const request = new PaymentRequest(paymentMethods, paymentDetails);
try {
const response = await request.show();
const {purchaseToken} = response.details;
if (await acknowledgePurchaseOnBackend(purchaseToken, sku)) {
// Optional: consume the purchase so the user can buy the item again.
await service.consume(purchaseToken);
await response.complete('success');
} else {
await response.complete('fail');
}
} catch (error) {
// An AbortError usually means the user canceled the purchase.
}
}
Controlla gli acquisti di un utente
Utilizza listPurchases() per trovare gli articoli di proprietà dell'utente, ad esempio abbonamenti attivi, acquisti non utilizzati o codici promozionali utilizzati. Verifica ogni acquisto sul tuo backend e conferma quelli che non hai ancora confermato:
const purchases = await service.listPurchases();
for (const p of purchases) {
await verifyOrAcknowledgePurchaseOnBackend(p.purchaseToken, p.itemId);
// Update the UI with items the user is entitled to.
}
Verifica la tua integrazione
Per eseguire il test su un dispositivo Android prima della pubblicazione sul Play Store, segui questi passaggi:
- Utilizzare Android 9 o versioni successive con le opzioni sviluppatore attivate.
- In Chrome, vai a
chrome://flagse attiva#enable-debug-for-store-billing. - Pubblica il tuo sito tramite HTTPS. L'API Digital Goods non è disponibile tramite HTTP.
Quando l'app viene installata dal Play Store, il flag non è necessario. Per eseguire i test con account di prova e prodotti di prova, consulta la sezione Testa l'integrazione di Libreria Fatturazione Google Play.
Passaggi successivi
- Verifica gli acquisti sul tuo backend con una libreria client dell'API Google Play Developer.
- Scopri come vendere abbonamenti.
- Configura le notifiche in tempo reale per lo sviluppatore per monitorare le modifiche agli abbonamenti.