Cykl życia jednorazowego zakupu

Usługi do jednorazowego zakupu mają prostszy cykl życia niż usługi objęte subskrypcją, ale nadal jest kilka stanów i zdarzeń przejścia, które Twój backend musi prawidłowo obsłużyć.

Rysunek 1. Stany cyklu życia i zdarzenia przejścia w przypadku zakupów jednorazowych.

Nowe jednorazowe zakupy produktów

Gdy użytkownik zakończy proces rozliczeń, Twoja aplikacja może wyświetlić informacje o nowym zakupie na jeden z tych sposobów:

Po otrzymaniu nowego zakupu użyj metody getPurchaseState lub purchases.products.get in Play Developer API, aby określić stan płatności nowego zakupu.

Powiadomienia w czasie rzeczywistym dla deweloperów

Gdy użytkownik kupi lub anuluje zakup produktu jednorazowego, Google Play wysyła wiadomość OneTimeProductNotification. Aby zaktualizować stan zakupu w backendzie, użyj tokena zakupu podanego w obiekcie OneTimeProductNotification do wywołania metody purchases.products.get. Ta metoda podaje najnowszy stan zakupu i wykorzystania danego tokena zakupu.

Transmisje RTDN związane z transakcjami powinny być obsługiwane w bezpiecznym backendzie.

Obsługa ukończonych transakcji

Gdy użytkownik dokona jednorazowego zakupu produktu, Google Play wysyła wiadomość OneTimeProductNotification typu ONE_TIME_PRODUCT_PURCHASED. Po jej otrzymaniu przetwarzaj zakup w sposób opisany w sekcji Przetwarzanie jednorazowych zakupów usług w backendzie.

Obsługa anulowanych transakcji

Gdy jednorazowy zakup produktu zostanie anulowany, Google Play wysyła wiadomość OneTimeProductNotification typu ONE_TIME_PRODUCT_CANCELED, jeśli masz włączone otrzymywanie powiadomień w czasie rzeczywistym dla deweloperów. Może się tak zdarzyć, gdy użytkownik nie dokona płatności w wymaganym terminie albo zakup zostanie cofnięty przez dewelopera lub na prośbę klienta. Gdy serwer backendu otrzyma takie powiadomienie, wywołaj metodę purchases.products.get, aby uzyskać informacje o najnowszym stanie zakupu, a następnie odpowiednio zaktualizuj backend, w tym uprawnienia użytkowników.

Jeśli otrzymasz zwrot środków za jednorazowy zakup produktu w stanie Purchased, powiadomimy Cię o tym za pomocą interfejsu Voided Purchases API.

Przetwarzaj w backendzie jednorazowe zakupy produktów

Musisz przetworzyć zakup bez względu na to, czy wykryjesz nowy zakup przez RTDN w usłudze ONE_TIME_PRODUCT_PURCHASED lub otrzymasz powiadomienie w aplikacji za pomocą PurchasesUpdatedListener lub ręcznie pobierzesz zakupy za pomocą metody onResume() w aplikacji. Dla większego bezpieczeństwa zalecamy obsługę przetwarzania zakupów w backendzie.

Aby przetworzyć nowy jednorazowy zakup, wykonaj te czynności:

  1. Wyślij zapytanie do punktu końcowego purchases.products.get, aby uzyskać najnowszy stan jednorazowego zakupu produktu. Aby wywołać tę metodę w przypadku zakupu, potrzebujesz odpowiedniego elementu purchaseToken w aplikacji lub z RTDN ONE_TIME_PRODUCT_PURCHASED.
  2. Zadzwoń pod numer getPurchaseState() i upewnij się, że stan zakupu to PURCHASED.
  3. Zweryfikuj zakup.
  4. Przyznać użytkownikowi dostęp do treści. Konto użytkownika powiązane z zakupem można zidentyfikować za pomocą pola obfuscatedExternalAccountId w purchases.products.get, jeśli zostało ono skonfigurowane za pomocą setObfuscatedAccountId() podczas dokonywania zakupu.
    1. W przypadku zakupów produktów niezużywających się potwierdź przesłanie treści, wywołując metodę purchases.products.acknowledge. Aby mieć pewność, że zakup nie został wcześniej potwierdzony, sprawdź pole acknowledgementState.
    2. Jeśli produkt jest zużywany, oznacz go jako wykorzystany, wywołując metodę purchases.products.consume, aby użytkownik mógł ponownie kupić produkt, gdy go zużywa. Ta metoda potwierdza również zakup.

W Bibliotece płatności w Play są też dostępne metody potwierdzania zakupów i korzystania z nich, które umożliwiają przetwarzanie zakupów w Twojej aplikacji. Jeśli jednak masz taką implementację, zalecamy obsługę przetwarzania w swoim backendzie.