Gebruik Google Play-facturering

Gepubliceerd: 2 december 2020

Naast dat uw app digitale goederen en abonnementen kan verkopen in de Play Store, biedt Google Play Billing tools voor het beheren van uw catalogus, prijzen en abonnementen, nuttige rapporten en een betaalstroom mogelijk gemaakt door de Play Store die al bekend is bij uw gebruikers. Het is een vereiste voor applicaties die in de Play Store zijn gepubliceerd en die digitale goederen verkopen.

De Google Play Billing API heeft zijn eigen terminologie en omvat client- en backend-componenten. Dit gedeelte behandelt slechts een klein deel van de API die specifiek is voor het gebruik van de Digital Goods API en Trusted Web Activity. Zorg ervoor dat u de Google Play Billing-documentatie leest en de concepten ervan begrijpt voordat u deze in een productietoepassing integreert.

De basisstroom

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

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

  1. Klik op Producten in het Play Console-menu. Bekijk uw 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: Bezoek de Producten-interface om nieuwe producten toe te voegen.
  3. Voeg een product-ID, naam, beschrijving en een prijs toe. Maak betekenisvolle en gemakkelijk te onthouden product-ID's, zodat u ze later nodig heeft. ID's kunnen niet meer worden gewijzigd nadat ze zijn gemaakt. 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 proefperioden, introductieprijzen, een respijtperiode en de mogelijkheid om u opnieuw te abonneren.
  5. Klik op Activeren om het product beschikbaar te maken.

Als u wilt, kunt u uw producten toevoegen met de Play Developers API .

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

Haal een productprijs op met de Digital Goods API

Wanneer u Google Play Billing gebruikt, zorg er dan voor dat de prijs die aan gebruikers wordt weergegeven, overeenkomt met de prijs uit de winkelvermelding. Het zou onmogelijk zijn om deze prijzen handmatig gesynchroniseerd te houden, 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 ondersteuning voor de Digital Goods API detecteren door te controleren of getDigitalGoodsService() beschikbaar is voor het window object.

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

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

Start de aankoopstroom

De Payment Request API maakt aankoopstromen op internet mogelijk en wordt ook gebruikt voor de Google Play Billing-integratie. Bekijk dit artikel Hoe de API voor betalingsverzoeken werkt voor meer informatie als u nieuw bent bij de API voor betalingsverzoeken.

Als u de API met Google Play Billing wilt gebruiken, moet u een betaalinstrument toevoegen met een ondersteunde methode genaamd https://play.google.com/billing . Voeg de SKU toe als onderdeel van de gegevens voor het instrument:

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

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

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 uit het 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. Als gevolg hiervan is het aan u om de aankoop te koppelen aan de gebruiker in uw backend en ervoor te zorgen dat deze toegang heeft tot de gekochte items. Wanneer u de aankoop aan een gebruiker koppelt, vergeet dan niet om de aankooptoken op te slaan, omdat u deze mogelijk nodig heeft om te verifiëren of de aankoop is geannuleerd of terugbetaald, of dat een abonnement nog steeds actief is. Bekijk de Real Time Developer Notifications API en de Google Play Developer API, aangezien deze eindpunten bieden voor het afhandelen van deze cases in uw backend.

Controleer op bestaande rechten

Een gebruiker heeft mogelijk een promotiecode ingewisseld of heeft mogelijk een bestaand abonnement op uw product. Om te valideren dat de gebruiker over de juiste rechten beschikt, kunt u de opdracht listPurchases() aanroepen op de digitale goederenservice. Hiermee worden alle aankopen geretourneerd die uw klant in uw app heeft gedaan. Dit is ook de plek waar u eventuele niet-erkende aankopen kunt bevestigen om ervoor te zorgen dat de gebruiker zijn rechten correct inwisselt.

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