Dieser Leitfaden richtet sich an Web-Apps, die als vertrauenswürdige Web-Aktivität verpackt sind. Informationen zu Android-Apps, die in Kotlin oder Java geschrieben wurden, finden Sie in der Dokumentation zu Google Play Billing.
Apps bei Google Play, in denen digitale Waren oder Abos verkauft werden, müssen Google Play Billing verwenden. In einer vertrauenswürdigen Web-Aktivität erfolgt die Integration über die folgenden Web-APIs, die ab Chrome 101 unter Android und ChromeOS verfügbar sind:
- Digital Goods API:Ruft Produktdetails und die Käufe des Nutzers ab.
- Payment Request API: Startet den Kaufvorgang.
Voraussetzungen
Für die Einrichtung von Google Play Billing benötigen Sie Folgendes:
- Ein Google Play-Entwicklerkonto und ein Google Payments-Händlerkonto, die miteinander verknüpft sind.
- Einen Google Play Store-Eintrag mit einem Release im öffentlichen, geschlossenen oder internen Test-Track.
- Die Produkte und Abos Ihrer App, die in der Play Console konfiguriert wurden.
- Ein Projekt für vertrauenswürdige Web-Aktivitäten mit einer funktionierenden Digital Asset Links-Konfiguration.
Berechnen Sie Nutzern für das Herunterladen Ihrer App aus dem Google Play Store kein Entgelt. Ihre PWA ist weiterhin im Web verfügbar, sodass ein kostenpflichtiger Download den Zugriff nicht einschränkt. Verkaufe stattdessen Funktionen oder Inhalte über In-App-Käufe oder Abos.
Google Play Billing in Ihrem Android-Projekt aktivieren
Wenn Sie Ihre App mit Bubblewrap erstellen, aktivieren Sie das Feature playBilling in twa-manifest.json im Stammverzeichnis Ihres Projekts:
"features": {
"playBilling": {
"enabled": true
}
}
Führen Sie dann bubblewrap update gefolgt von bubblewrap build aus und laden Sie das neue Android-Paket in den Google Play Store hoch.
Wenn Sie Ihre App in Android Studio erstellen, fügen Sie die Android Browser Helper Play Billing Library hinzu. Informationen zu den erforderlichen Änderungen an DelegationService und AndroidManifest.xml finden Sie in der twa-play-billing-Demo.
Unterstützung für Google Play Billing prüfen
Rufen Sie getDigitalGoodsService() mit der Google Play Store-ID https://play.google.com/billing auf. Wenn die Methode fehlt oder der Aufruf fehlschlägt, verwende einen anderen Zahlungsablauf:
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.
}
}
Produktdetails anzeigen
Verwende getDetails(), um den Titel, die Beschreibung und den Preis für deine Produkt-IDs abzurufen, damit die angezeigten Preise mit denen im Google Play Store übereinstimmen:
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);
}
Die API für digitale Waren kann Ihre Produkt-IDs nicht auflisten. Wenn Sie sie über Ihr Backend abfragen möchten, verwenden Sie die Google Play Developer API.
Etwas kaufen
Erstellen Sie ein PaymentRequest mit https://play.google.com/billing als Zahlungsmethode und der Produkt-ID als sku in data. Google Play Billing verwendet den Preis aus der Play Console. Daher ist total erforderlich, wird aber ignoriert.
Nachdem show() aufgelöst wurde, sende das Kaufftoken an dein Backend, um den Kauf zu bestätigen und zu bestätigen. Wenn Sie einen Kauf nicht innerhalb von drei Tagen bestätigen, erstattet Google Play dem Nutzer den Kaufpreis und widerruft den Kauf.
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.
}
}
Käufe eines Nutzers prüfen
Mit listPurchases() kannst du Artikel finden, die dem Nutzer gehören, z. B. aktive Abos, nicht genutzte Käufe oder eingelöste Gutscheincodes. Prüfen Sie jeden Kauf in Ihrem Backend und bestätigen Sie alle noch nicht bestätigten Käufe:
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.
}
Integration testen
So testen Sie Ihre App auf einem Android-Gerät, bevor Sie sie im Google Play Store veröffentlichen:
- Android 9 oder höher mit aktivierten Entwickleroptionen
- Rufen Sie in Chrome
chrome://flagsauf und aktivieren Sie#enable-debug-for-store-billing. - Stellen Sie Ihre Website über HTTPS bereit. Die Digital Goods API ist nicht über HTTP verfügbar.
Wenn Ihre App aus dem Google Play Store installiert wird, benötigen Sie das Flag nicht. Informationen zum Testen mit Testkonten und Testprodukten finden Sie unter Einbindung der Google Play Billing Library testen.
Nächste Schritte
- Käufe im Backend mit einer Google Play Developer API-Clientbibliothek bestätigen
- Informationen zum Verkauf von Abos
- Richten Sie Entwicklerbenachrichtigungen in Echtzeit ein, um Änderungen an Abos zu verfolgen.