Cykl życia jednorazowego zakupu

Produkty do jednorazowego zakupu mają prostszy cykl życia niż produkty subskrypcyjne, ale nadal istnieje 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 zakupów jednorazowych.
Rysunek 1. Stany cyklu życia i zdarzenia przejścia w przypadku jednorazowych zakupów.

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 OneTimeProductNotification wiadomość. 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 RTDN. Po otrzymaniu powiadomienia RTDN przetwórz zakup w przedsprzedaży zgodnie z opisem w sekcji Przetwarzanie zakupów produktów kupowanych raz w backendzie.

Powiadomienia RTDN związane z transakcjami należy obsługiwać w bezpiecznym backendzie.

Obsługa zakończonych transakcji

Gdy użytkownik dokona zakupu produktu kupowanego raz, Google Play wyśle wiadomość OneTimeProductNotification z typem ONE_TIME_PRODUCT_PURCHASED. Gdy otrzymasz to powiadomienie RTDN, 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 masz skonfigurowane 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 produkt kupowany 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ą powiadomienia ONE_TIME_PRODUCT_PURCHASED RTDN , 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 purchases.productsv2.getproductpurchasev2 punktu końcowego, aby uzyskać najnowszy stan zakupu produktu kupowanego raz. Aby wywołać tę metodę w przypadku zakupu, potrzebujesz odpowiedniego parametru purchaseToken z aplikacji lub z powiadomienia RTDN ONE_TIME_PRODUCT_PURCHASED.
  2. Wywołaj metodę 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 produktów niepodlegających wykorzystaniu potwierdź dostarczenie treści, wywołując purchases.products.acknowledge metodę. Sprawdź, czy zakup nie został wcześniej potwierdzony, sprawdzając pole acknowledgementState.
    2. Jeśli produkt podlega wykorzystaniu, 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. Ze względów bezpieczeństwa zalecamy jednak obsługę przetwarzania w backendzie, jeśli go masz.