Cykl życia jednorazowego zakupu

Produkty kupowane w ramach jednorazowego zakupu mają prostszy cykl życia niż produkty objęte subskrypcją, ale nadal mają kilka stanów i zdarzeń przejścia, które Twój backend musi obsługiwać prawidłowo.

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

Nowe zakupy produktów kupowanych raz

Gdy użytkownik zakończy proces płatności, Twoja aplikacja może zobaczyć informacje o nowym zakupie w jeden z tych sposobów:

Po otrzymaniu informacji o nowym zakupie użyj metody getPurchaseState lub purchases.productsv2.getproductpurchasev2 in Play Developer API

, aby określić stan płatności za nowy zakup.

Powiadomienia w czasie rzeczywistym dla deweloperów

Gdy użytkownik kupi produkt kupowany raz lub anuluje jego zakup, Google Play wyśle wiadomość OneTimeProductNotification. Aby zaktualizować stan zakupu w backendzie, użyj tokena zakupu podanego w obiekcie OneTimeProductNotification, aby wywołać metodę purchases.productsv2.getproductpurchasev2. Ta metoda podaje najnowszy stan zakupu i wykorzystania na podstawie tokena zakupu.

Gdy przedsprzedaż zostanie zrealizowana, a jej stan zakupu zmieni się na PURCHASED, do klienta zostanie wysłane powiadomienie w czasie rzeczywistym dla deweloperów. Po otrzymaniu powiadomienia w czasie rzeczywistym dla deweloperów przetwórz zakup przedsprzedaży zgodnie z opisem w sekcji Przetwarzanie zakupów produktów kupowanych raz w backendzie.

Powiadomienia w czasie rzeczywistym dla deweloperów związane z transakcjami należy obsługiwać w bezpiecznym backendzie.

Obsługa zakończonych transakcji

Gdy użytkownik zakończy zakup produktu kupowanego raz, Google Play wyśle wiadomość OneTimeProductNotification z typem ONE_TIME_PRODUCT_PURCHASED. Gdy otrzymasz to powiadomienie w czasie rzeczywistym dla deweloperów, przetwórz zakup zgodnie z opisem w sekcji Przetwarzanie zakupów produktów kupowanych raz w backendzie.

Obsługa anulowanych transakcji

Gdy zakup produktu kupowanego raz zostanie anulowany, Google Play wyśle wiadomość OneTimeProductNotification z typem ONE_TIME_PRODUCT_CANCELED, jeśli skonfigurujesz otrzymywanie powiadomień w czasie rzeczywistym dla deweloperów. Może się tak zdarzyć np. wtedy, gdy użytkownik nie dokończy płatności w wymaganym czasie lub gdy zakup zostanie cofnięty przez dewelopera albo na prośbę klienta. Gdy serwer backendu otrzyma to powiadomienie, wywołaj metodę purchases.productsv2.getproductpurchasev2 , aby uzyskać najnowszy stan zakupu, a następnie zaktualizuj backend, w tym uprawnienia użytkownika.

Jeśli zakup produktu kupowanego raz w stanie Purchased zostanie zwrócony, poinformujemy Cię o tym za pomocą interfejsu Voided Purchases API.

Przetwarzanie zakupów produktów kupowanych raz w backendzie

Niezależnie od tego, czy wykryjesz nowy zakup za pomocą ONE_TIME_PRODUCT_PURCHASED powiadomienia w czasie rzeczywistym dla deweloperów czy też dowiesz się o nim w aplikacji za pomocą PurchasesUpdatedListener lub ręcznego pobierania zakupów w metodzie onResume() aplikacji, musisz przetworzyć nowy zakup. Ze względów bezpieczeństwa zalecamy obsługę przetwarzania zakupów w backendzie.

Aby przetworzyć nowy zakup jednorazowy:

  1. Wyślij zapytanie do punktu końcowego purchases.productsv2.getproductpurchasev2 , aby uzyskać najnowszy stan zakupu produktu kupowanego raz. Aby wywołać tę metodę w przypadku zakupu, potrzebujesz odpowiedniego purchaseToken z aplikacji lub powiadomienia w czasie rzeczywistym dla deweloperów ONE_TIME_PRODUCT_PURCHASED.
  2. Wywołaj getPurchaseState() i upewnij się, że stan zakupu to PURCHASED.
  3. Zweryfikuj zakup.
  4. Udostępnij użytkownikowi treści. Konto użytkownika powiązane z zakupem można zidentyfikować za pomocą obfuscatedExternalAccountId pola z purchases.productsv2.getproductpurchasev2, jeśli zostało ono ustawione za pomocą setObfuscatedAccountId() podczas zakupu.
    1. W przypadku zakupu produktu niekonsumpcyjnego potwierdź dostarczenie treści, wywołując purchases.products.acknowledge metodę. Upewnij się, że zakup nie został wcześniej potwierdzony, sprawdzając pole acknowledgementState.
    2. Jeśli produkt jest konsumpcyjny, oznacz go jako wykorzystany, wywołując metodę purchases.products.consume, aby użytkownik mógł go ponownie kupić po wykorzystaniu. Ta metoda potwierdza też zakup.

W Bibliotece płatności w Play dostępne są też metody potwierdzania zakupu i wykorzystania, które umożliwiają przetwarzanie zakupów z aplikacji, ale ze względów bezpieczeństwa zalecamy obsługę przetwarzania w backendzie, jeśli go masz.