Użyj Płatności w Google Play

Data publikacji: 2 grudnia 2020 r.

Oprócz umożliwienia w aplikacji sprzedaży produktów cyfrowych i subskrypcji w Sklepie Play Płatności w Google Play zapewniają narzędzia do zarządzania katalogiem, cenami i subskrypcjami, przydatnymi raportami oraz procesem płatności opartym na Sklepie Play. Jest to wymagane w przypadku aplikacji opublikowanych w Sklepie Play, które sprzedają produkty cyfrowe.

Interfejs Google Play Billing API ma własną terminologię oraz komponenty klienta i backendu. Ta sekcja obejmuje tylko niewielką część interfejsu API, która dotyczy korzystania z interfejsu Digital Goods API i zaufanej aktywności w internecie. Zanim zintegrujesz tę usługę z wersją produkcyjną aplikacji, przeczytaj dokumentację płatności w Google Play i zapoznaj się z jej koncepcją.

Podstawowy schemat

Aby udostępniać produkty cyfrowe w Sklepie Play, skonfiguruj swój katalog w Sklepie Play i połącz Sklep Play jako formę płatności z PWA.

Możesz to zrobić w interfejsie Sklepu Play w ten sposób:

  1. W menu Konsoli Play kliknij Produkty. Wyświetl aktualne subskrypcje i produkty w aplikacji. Krok 1. Znajdź sekcję Produkty.
  2. Kliknij Utwórz produkt, aby dodać nowy produkt. Krok 2. Otwórz interfejs Produkty, aby dodać nowe produkty.
  3. Dodaj identyfikator produktu, nazwę, opis i cenę. Utwórz znaczące i łatwe do zapamiętania identyfikatory produktów, ponieważ będą Ci one potrzebne później. Identyfikatorów nie można zmienić po utworzeniu.Wiele pustych pól w przypadku każdego produktu.
  4. Jeśli tworzysz subskrypcję, musisz też określić okres rozliczeniowy. Możesz wymienić korzyści związane z subskrypcją i dodać funkcje takie jak bezpłatne okresy próbne, ceny promocyjne, okres prolongaty i opcję ponownej subskrypcji.
  5. Kliknij Aktywuj, aby udostępnić usługę.

Możesz też dodać produkty za pomocą interfejsu Play Developer API.

Po skonfigurowaniu katalogu następnym krokiem jest skonfigurowanie procesu płatności w PWA. Użyj kombinacji interfejsów Digital Goods API i Payment Request API.

Pobieranie ceny produktu za pomocą interfejsu Digital Goods API

Jeśli korzystasz z Płatności w Google Play, sprawdź, czy cena wyświetlana użytkownikom jest zgodna z ceną w informacjach o aplikacji. Ręczne utrzymywanie zgodności tych cen byłoby niemożliwe, dlatego interfejs API cyfrowych towarów umożliwia aplikacji internetowej wysyłanie zapytań o ceny do dostawcy płatności:

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

Możesz wykryć obsługę interfejsu Digital Goods API, sprawdzając, czy w obiekcie window dostępna jest właściwość getDigitalGoodsService().

Następnie wywołaj window.getDigitalGoodsService(), podając jako parametr identyfikator płatności Google Play. Spowoduje to zwrócenie instancji usługi w przypadku Płatności w Google Play, a inni dostawcy mogą wdrożyć obsługę interfejsu Digital Goods API i mieć różne identyfikatory.

Na koniec wywołaj metodę getDetails() obiektu Płatności Google Play, przekazując jako parametr kod SKU produktu. Ta metoda zwraca obiekt szczegółu zawierający zarówno cenę, jak i walutę elementu, który może się wyświetlić użytkownikowi.

Rozpoczęcie procesu zakupu

Payment Request API pozwala na zakupy w internecie i jest używany do integracji z płatnościami w Google Play. Zapoznaj się z artykułem Jak działa interfejs Payment Request API, aby dowiedzieć się więcej, jeśli dopiero zaczynasz korzystać z Payment Request API.

Aby używać interfejsu API z Płatnościami w Google Play, musisz dodać instrument płatniczy z obsługiwaną formą o nazwie https://play.google.com/billing. Dodaj kod SKU jako część danych instrumentu:

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

Następnie utwórz obiekt PaymentRequest w zwykły sposób i użyj interfejsu API w zwykły sposób.

const request = new PaymentRequest(supportedInstruments, details);

Potwierdź zakup

Po zakończeniu transakcji użyj interfejsu Digital Goods API, aby potwierdzić płatność. Obiekt odpowiedzi z PaymentRequest zawiera token, którego możesz użyć do potwierdzenia transakcji:

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

Interfejs Digital Goods API i Payment Request API nie mają wiedzy o tożsamości użytkownika. W efekcie musisz powiązać zakup z użytkownikiem na zapleczu i zadbać o to, aby miał dostęp do zakupionych produktów. Podczas kojarzenia zakupu z użytkownikiem pamiętaj, aby zapisać token zakupu. Możesz go później wykorzystać do sprawdzenia, czy zakup został anulowany lub zwrócony, czy też subskrypcja jest nadal aktywna. Zapoznaj się z interfejsami Real Time Developer Notifications APIGoogle Play Developer API, ponieważ zawierają one punkty końcowe do obsługi takich przypadków na poziomie backendu.

Sprawdź, czy masz już uprawnienia

Użytkownik mógł wykorzystać kod promocyjny lub mieć już subskrypcję Twojego produktu. Aby sprawdzić, czy użytkownik ma odpowiednie uprawnienia, możesz wywołać w usłudze produktów cyfrowych polecenie listPurchases(). Zwraca to wszystkie zakupy dokonane przez klienta w Twojej aplikacji. Jest to też miejsce, w którym można potwierdzić wszystkie niezatwierdzone zakupy, aby mieć pewność, że użytkownik prawidłowo wykorzysta swoje uprawnienia.

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