Veröffentlicht: 2. Dezember 2020
Mit Google Play Billing können Sie nicht nur digitale Waren und Abos in Ihrer App im Play Store verkaufen, sondern auch Ihren Katalog, Ihre Preise und Ihre Abos verwalten. Außerdem erhalten Sie nützliche Berichte und einen von Play Store unterstützten Checkout-Ablauf, der Ihren Nutzern bereits vertraut ist. Es ist eine Voraussetzung für Anwendungen, die im Play Store veröffentlicht werden und digitale Waren verkaufen.
Die Google Play Billing API hat eine eigene Terminologie und umfasst Client- und Backend-Komponenten. In diesem Abschnitt wird nur ein kleiner Teil der API behandelt, der für die Verwendung der Digital Goods API und Trusted Web Activity spezifisch ist. Lesen Sie die Google Play Billing-Dokumentation und machen Sie sich mit den Konzepten vertraut, bevor Sie die Google Play Billing Library in eine Produktionsanwendung einbinden.
Der grundlegende Ablauf
Wenn Sie digitale Waren über den Play Store anbieten möchten, konfigurieren Sie Ihren Katalog im Play Store und verknüpfen Sie den Play Store als Zahlungsmethode mit Ihrer PWA.
So gehts:
- Klicken Sie im Play Console-Menü auf Produkte. Vorhandene In‑App-Produkte und ‑Abos ansehen.
- Klicken Sie auf Produkt erstellen, um ein neues Produkt hinzuzufügen.
- Geben Sie eine Produkt-ID, einen Namen, eine Beschreibung und einen Preis ein. Erstellen Sie aussagekräftige und leicht zu merkende Produkt-IDs, da Sie diese später benötigen. IDs können nach dem Erstellen nicht mehr geändert werden.
- Wenn Sie ein Abo erstellen, müssen Sie auch einen Abrechnungszeitraum angeben. Sie können die Vorteile Ihres Abos auflisten und Funktionen wie kostenlose Testzeiträume, Einführungspreise, einen Kulanzzeitraum und eine Option zum erneuten Abonnieren hinzufügen.
- Klicken Sie auf Aktivieren, um das Produkt verfügbar zu machen.
Sie können Ihre Produkte auch mit der Play Developers API hinzufügen.
Nachdem Sie Ihren Katalog konfiguriert haben, müssen Sie als Nächstes den Checkout-Ablauf in der PWA konfigurieren. Verwenden Sie eine Kombination aus der Digital Goods API und der Payment Request API.
Produktpreis mit der Digital Goods API abrufen
Wenn Sie die Google Play-Abrechnung verwenden, muss der Preis, der Nutzern angezeigt wird, mit dem Preis im Store-Eintrag übereinstimmen. Es wäre unmöglich, diese Preise manuell zu synchronisieren. Daher bietet die Digital Goods API eine Möglichkeit für die Webanwendung, den zugrunde liegenden Zahlungsanbieter nach Preisen zu fragen:
// 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;
}
Sie können die Unterstützung für die Digital Goods API erkennen, indem Sie prüfen, ob getDigitalGoodsService()
für das window
-Objekt verfügbar ist.
Rufen Sie dann window.getDigitalGoodsService()
mit der Google Play-Abrechnungskennung als Parameter auf.
Dadurch wird eine Dienstinstanz für die Google Play-Abrechnung zurückgegeben. Andere Anbieter können die Digital Goods API unterstützen und unterschiedliche Kennungen haben.
Rufen Sie schließlich getDetails()
für die Referenz zum Google Play Billing-Objekt auf und übergeben Sie die SKU für den Artikel als Parameter. Die Methode gibt ein Detailobjekt zurück, das sowohl den Preis als auch die Währung für den Artikel enthält, die dem Nutzer angezeigt werden können.
Kaufvorgang starten
Die Payment Request API ermöglicht Kaufvorgänge im Web und wird auch für die Google Play-Abrechnung verwendet. Wenn Sie die Payment Request API noch nicht kennen, können Sie sich diese Seite ansehen, um mehr darüber zu erfahren.
Wenn Sie die API mit Google Play Billing verwenden möchten, müssen Sie ein Zahlungsmittel hinzufügen, das eine unterstützte Methode namens https://play.google.com/billing
hat.
Fügen Sie die Artikelnummer als Teil der Daten für das Instrument hinzu:
const supportedInstruments = [{
supportedMethods: "https://play.google.com/billing",
data: {
sku: sku
}
}];
Erstellen Sie dann wie gewohnt ein PaymentRequest
-Objekt und verwenden Sie die API wie gewohnt.
const request = new PaymentRequest(supportedInstruments, details);
Kauf bestätigen
Verwenden Sie nach Abschluss der Transaktion die Digital Goods API, um die Zahlung zu bestätigen. Das Antwortobjekt von PaymentRequest
enthält ein Token, mit dem Sie die Transaktion bestätigen können:
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');
Die Digital Goods API und die Payment Request API haben keine Informationen zur Identität des Nutzers. Daher müssen Sie den Kauf in Ihrem Backend dem Nutzer zuordnen und dafür sorgen, dass er Zugriff auf die gekauften Artikel hat. Wenn Sie den Kauf einem Nutzer zuordnen, denken Sie daran, das Kauftoken zu speichern. Sie benötigen es möglicherweise, um zu prüfen, ob der Kauf storniert oder erstattet wurde oder ob ein Abo noch aktiv ist. Die Real-time Developer Notifications API und die Google Play Developer API bieten Endpunkte für die Verarbeitung dieser Fälle in Ihrem Backend.
Nach vorhandenen Berechtigungen suchen
Ein Nutzer hat möglicherweise einen Gutscheincode eingelöst oder hat bereits ein Abo für Ihr Produkt. Um zu prüfen, ob der Nutzer die entsprechenden Berechtigungen hat, können Sie den Befehl listPurchases()
für den Dienst für digitale Waren aufrufen. Dadurch werden alle Käufe zurückgegeben, die Ihr Kunde in Ihrer App getätigt hat. Hier können Sie auch alle nicht bestätigten Käufe bestätigen, damit der Nutzer seine Berechtigungen richtig einlösen kann.
const purchases = await itemService.listPurchases();
for (p of purchases) {
if (!p.acknowledged) {
await itemService.acknowledge(p.purchaseToken, 'onetime');
}
}