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. In diesem Abschnitt wird nur ein kleiner Teil der API für die Verwendung der Digital Goods API und der Trusted Web Activity behandelt. 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 kannst du deine bestehenden In-App-Produkte und Abos ansehen. Schritt 1: Gehen Sie zum Abschnitt „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 einfach 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. Du kannst deine Abovorteile 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.

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

Nachdem der Katalog konfiguriert ist, kannst du im nächsten Schritt den Bezahlvorgang über die 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 Nutzern angezeigte Preis mit dem Preis im Store-Eintrag übereinstimmt. Diese Preise manuell zu synchronisieren, ist unmöglich. Daher bietet die Digital Goods API eine Möglichkeit für die Webanwendung, Preise beim zugrunde liegenden Zahlungsanbieter abzufragen:

// 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;
}

Wenn du nachsehen möchtest, ob die Digital Goods API unterstützt wird, prüfe, 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 Google Play Billing zurückgegeben. Andere Anbieter können die Unterstützung für die Digital Goods API implementieren und haben unterschiedliche Kennzeichnungen.

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 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 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. Hier werden alle Käufe zurückgegeben, die dein Kunde in deiner App getätigt hat. Hier kannst du auch alle nicht bestätigten Käufe bestätigen, damit der Nutzer seine Berechtigungen korrekt einlöst.

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