Użyj Płatności w Google Play

Data publikacji: 2 grudnia 2020 r.

Oprócz umożliwienia sprzedaży produktów cyfrowych i subskrypcji w aplikacji w Sklepie Play płatności w Google Play zapewniają też narzędzia do zarządzania katalogiem, cenami i subskrypcjami, przydatne raporty oraz proces płatności w Sklepie Play, który jest już znany użytkownikom. Jest to wymagane w przypadku aplikacji opublikowanych w Sklepie Play, które sprzedają produkty cyfrowe.

Interfejs API Płatności w Google Play ma własną terminologię i obsługuje komponenty klienta i back-endu. Ta sekcja obejmuje tylko niewielką część interfejsu API, która dotyczy korzystania z interfejsu API cyfrowych towarów 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ć treści cyfrowe w Sklepie Play, skonfiguruj katalog w Sklepie Play i połącz Sklep Play jako formę płatności w Twojej aplikacji internetowej.

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

  1. W menu Konsoli Play kliknij Produkty. Wyświetlanie dotychczasowych produktów w aplikacji i subskrypcji. Krok 1. Znajdź sekcję Produkty.
  2. Aby dodać nowy produkt, kliknij Utwórz 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. Po utworzeniu identyfikatorów nie można ich zmienić. 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 należy skonfigurować proces 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, upewnij się, że 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;
}

Obsługę interfejsu Digital Goods API możesz wykryć, sprawdzając, czy obiekt getDigitalGoodsService() jest dostępny w obiekcie window.

Następnie wywołaj window.getDigitalGoodsService(), podając jako parametr identyfikator płatności Google Play. Zwraca to instancję usługi Rozliczenia w Google Play. Inni dostawcy mogą implementować obsługę interfejsu API cyfrowych towarów i mieć inne identyfikatory.

Na koniec wywołaj metodę getDetails() obiektu Płatności Google Play, przekazując jako parametr kod SKU produktu. Metoda zwraca obiekt szczegółów zawierający cenę i walutę produktu, które można wyświetlić użytkownikowi.

Rozpoczęcie procesu zakupu

Interfejs Payment Request API umożliwia przepływy zakupów w internecie i jest też używany do integracji z systemem płatności Google Play. Jeśli nie znasz jeszcze interfejsu Payment Request API, zapoznaj się z artykułem Jak działa interfejs Payment Request API.

Aby korzystać z interfejsu API w ramach płatności Google Play, musisz dodać instrument płatniczy, który ma obsługiwaną metodę 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');

Interfejsy Digital Goods API i Payment Request API nie mają informacji o tożsamości użytkownika. W związku z tym 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, ponieważ może być on potrzebny 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, które zawierają punkty końcowe do obsługi takich sytuacji w Twoim backendzie.

Sprawdzanie, 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ć polecenie listPurchases() w usłudze cyfrowych towarów. 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');
  }
}