Google Play Billing verwenden

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 Abos verwalten, nützliche Berichte abrufen und den Play Store-Bezahlvorgang nutzen, der Ihren Nutzern bereits vertraut ist. Sie ist für im Play Store veröffentlichte Apps erforderlich, in denen digitale Waren verkauft werden.

Die Google Play Billing API hat eine eigene Terminologie und umfasst Client- und Backend-Komponenten. Dieser Abschnitt deckt nur einen kleinen Teil der API ab, der sich speziell auf die Verwendung der Digital Goods API und Trusted Web Activity bezieht. Lesen Sie die Google Play Billing-Dokumentation und machen Sie sich mit den Konzepten vertraut, bevor Sie die Library in eine Produktionsanwendung einbinden.

Der grundlegende Ablauf

Wenn Sie digitale Waren im Play Store anbieten möchten, konfigurieren Sie Ihren Katalog im Play Store und verknüpfen Sie den Play Store als Zahlungsmethode über Ihre PWA.

So gehts in der Play Store-Oberfläche:

  1. Klicken Sie im Play Console-Menü auf Produkte. Hier finden Sie Ihre vorhandenen In-App-Produkte und -Abos. Schritt 1: Suchen Sie den Bereich „Produkte“.
  2. Klicken Sie auf Produkt erstellen, um ein neues Produkt hinzuzufügen. Schritt 2: Rufen Sie die Seite „Produkte“ auf, um neue Produkte hinzuzufügen.
  3. Fügen Sie eine Produkt-ID, einen Namen, eine Beschreibung und einen Preis hinzu. Erstellen Sie aussagekräftige und leicht zu merkende Produkt-IDs, da Sie sie später benötigen. IDs können nach dem Erstellen nicht mehr geändert werden. Zahlreiche leere Felder für jedes Produkt.
  4. 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.
  5. Klicken Sie auf Aktivieren, um das Produkt verfügbar zu machen.

Alternativ können Sie Ihre Produkte auch mit der Play Developers API hinzufügen.

Nachdem Sie Ihren Katalog konfiguriert haben, müssen Sie als Nächstes den Bezahlvorgang in der PWA konfigurieren. Verwende eine Kombination aus der Digital Goods API und der Payment Request API.

Produktpreis mit der Digital Goods API abrufen

Achten Sie bei der Verwendung der Google Play-Abrechnung darauf, dass der den Nutzern angezeigte Preis mit dem Preis im Store-Eintrag übereinstimmt. 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;
}

Ob die Digital Goods API unterstützt wird, kannst du daran erkennen, ob getDigitalGoodsService() für das window-Objekt verfügbar ist.

Rufe dann window.getDigitalGoodsService() mit der Google Play-Abrechnungs-ID 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 andere IDs haben.

Rufen Sie abschließend getDetails() auf die Referenz zum Google Play Billing-Objekt auf und übergeben Sie die SKU des Artikels 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 kann.

Kaufvorgang starten

Die Payment Request API ermöglicht Kaufvorgänge im Web und wird auch für die Google Play-Abrechnung verwendet. Wenn Sie noch keine Erfahrung mit der Payment Request API haben, sehen Sie sich diesen Artikel an.

Wenn Sie die API mit der Google Play-Abrechnung verwenden möchten, müssen Sie ein Zahlungsmittel mit der unterstützten Methode https://play.google.com/billing hinzufügen. 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

Sobald die Transaktion abgeschlossen ist, bestätige die Zahlung mit der Digital Goods API. Das Antwortobjekt von PaymentRequest enthält ein Token, mit dem du die Transaktion bestätigen kannst:

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 liegt es in deiner Verantwortung, den Kauf dem Nutzer in deinem Backend zuzuordnen und dafür zu sorgen, dass er Zugriff auf die gekauften Artikel hat. Speichern Sie das Kauftoken, wenn Sie den Kauf einem Nutzer zuordnen. 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 Bearbeitung dieser Fälle in Ihrem Backend.

Vorhandene Berechtigungen prüfen

Ein Nutzer hat möglicherweise einen Gutscheincode eingelöst oder ein bestehendes Abo für Ihr Produkt. Um zu prüfen, ob der Nutzer die entsprechenden Berechtigungen hat, kannst du 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 nicht bestätigte Käufe bestätigen, damit der Nutzer seine Berechtigungen korrekt einlösen kann.

const purchases = await itemService.listPurchases();
for (p of purchases) {
  if (!p.acknowledged) {
    await itemService.acknowledge(p.purchaseToken, 'onetime');
  }
}