Gebruik Google Play-facturering

Gepubliceerd: 2 december 2020

Naast het toestaan ​​dat je app digitale producten en abonnementen verkoopt in de Play Store, biedt Google Play Billing tools voor het beheren van je catalogus, prijzen en abonnementen, handige rapporten en een betaalproces dat wordt aangestuurd door de Play Store en dat al bekend is bij je gebruikers. Dit is een vereiste voor apps die in de Play Store worden gepubliceerd en digitale producten verkopen.

De Google Play Billing API heeft een eigen terminologie en omvat client- en backendcomponenten. Deze sectie behandelt slechts een klein deel van de API dat specifiek is voor het gebruik van de Digital Goods API en Trusted Web Activity. Lees de documentatie van Google Play Billing en begrijp de concepten voordat u deze in een productietoepassing integreert.

De basisstroom

Om digitale goederen via de Play Store aan te bieden, configureert u uw catalogus in de Play Store en verbindt u de Play Store als betaalmethode via uw PWA.

U kunt dit als volgt doen in de Play Store-interface:

  1. Klik op Producten in het Play Console-menu. Bekijk je bestaande in-app-producten en abonnementen. Stap 1: Zoek het gedeelte Producten.
  2. Klik op Product maken om een ​​nieuw product toe te voegen. Stap 2: Ga naar de interface Producten om nieuwe producten toe te voegen.
  3. Voeg een product-ID, naam, beschrijving en prijs toe. Maak zinvolle en gemakkelijk te onthouden product-ID's aan, zodat u ze later nog nodig hebt. Eenmaal aangemaakte ID's kunnen niet meer worden gewijzigd. Talrijke lege velden voor elk product.
  4. Als u een abonnement aanmaakt, moet u ook een factureringsperiode opgeven. U kunt uw abonnementsvoordelen vermelden en functies toevoegen, zoals gratis proefperiodes, introductieprijzen, een respijtperiode en een optie om uw abonnement te verlengen.
  5. Klik op Activeren om het product beschikbaar te maken.

Als u dat liever wilt, kunt u uw producten toevoegen via de Play Developers API .

Zodra uw catalogus is geconfigureerd, is de volgende stap het configureren van de afrekenstroom vanuit de PWA. Gebruik hiervoor een combinatie van de Digital Goods API en de Payment Request API .

Haal een productprijs op met de Digital Goods API

Zorg er bij het gebruik van Google Play Billing voor dat de prijs die aan gebruikers wordt weergegeven, overeenkomt met de prijs in de winkelvermelding. Het handmatig synchroniseren van deze prijzen is onmogelijk, dus de Digital Goods API biedt de webapplicatie een manier om de onderliggende betalingsprovider om prijzen te vragen:

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

U kunt controleren of de Digital Goods API wordt ondersteund door te controleren of getDigitalGoodsService() beschikbaar is op het window .

Roep vervolgens window.getDigitalGoodsService() aan met de Google Play Billing-ID als parameter. Dit retourneert een service-instance voor Google Play Billing. Andere leveranciers kunnen ondersteuning voor de Digital Goods API implementeren en andere ID's gebruiken.

Roep ten slotte getDetails() aan op de verwijzing naar het Google Play Billing-object en geef de SKU voor het item als parameter door. De methode retourneert een detailobject met zowel de prijs als de valuta voor het item, dat aan de gebruiker kan worden weergegeven.

Start het aankoopproces

De Payment Request API maakt online aankopen mogelijk en wordt ook gebruikt voor de integratie van Google Play Billing. Lees ' Hoe de Payment Request API werkt' voor meer informatie als u nog niet bekend bent met de Payment Request API.

Om de API met Google Play Billing te gebruiken, moet u een betaalmethode toevoegen met een ondersteunde methode: https://play.google.com/billing . Voeg de SKU toe als onderdeel van de gegevens voor de methode:

const supportedInstruments = [{
  supportedMethods: "https://play.google.com/billing",
  data: {
    sku: sku
  }
}];

Bouw vervolgens een PaymentRequest object zoals gebruikelijk en gebruik de API zoals gebruikelijk

const request = new PaymentRequest(supportedInstruments, details);

Erken de aankoop

Zodra de transactie is voltooid, gebruikt u de Digital Goods API om de betaling te bevestigen. Het responsobject van de PaymentRequest bevat een token waarmee u de transactie kunt bevestigen:

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');

De Digital Goods API en de Payment Request API hebben geen kennis over de identiteit van de gebruiker. Daarom is het aan jou om de aankoop aan de gebruiker te koppelen in je backend en ervoor te zorgen dat deze toegang heeft tot de gekochte items. Vergeet niet om de aankooptoken op te slaan wanneer je de aankoop aan een gebruiker koppelt, omdat je deze mogelijk nodig hebt om te controleren of de aankoop is geannuleerd of terugbetaald, of of een abonnement nog actief is. Bekijk de Real Time Developer Notifications API en de Google Play Developer API , deze bieden eindpunten voor het afhandelen van dergelijke gevallen in je backend.

Controleer bestaande rechten

Een gebruiker heeft mogelijk een promotiecode ingewisseld of een bestaand abonnement op uw product. Om te valideren dat de gebruiker de juiste rechten heeft, kunt u de opdracht listPurchases() aanroepen op de digitale goederenservice. Dit retourneert alle aankopen die uw klant in uw app heeft gedaan. Dit is ook de plek om niet-bevestigde aankopen te bevestigen, zodat de gebruiker zijn of haar rechten correct inwisselt.

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