Cykl życia jednorazowego zakupu

Produkty kupowane jednorazowo mają prostszy cykl życia niż produkty subskrypcyjne, ale nadal istnieje kilka stanów i zdarzeń przejścia, które backend musi obsługiwać prawidłowo.

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

Nowe zakupy produktów kupowanych raz

Po zakończeniu procesu płatności użytkownik może zobaczyć informacje o nowym zakupie w aplikacji na jeden z tych sposobów:

Po otrzymaniu nowego zakupu użyj metody getPurchaseState lub purchases.productsv2.getproductpurchasev2 in Play Developer API.

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

Powiadomienia w czasie rzeczywistym dla deweloperów

Gdy użytkownik kupi lub anuluje zakup produktu kupowanego raz, Google Play wysyła wiadomość OneTimeProductNotification. Aby zaktualizować stan zakupu na serwerze backendu, użyj tokena zakupu podanego w obiekcie OneTimeProductNotification, aby wywołać metodę purchases.productsv2.getproductpurchasev2. Ta metoda zwraca najnowszy stan zakupu i konsumpcji na podstawie tokena zakupu.

Gdy zamówienie w przedsprzedaży zostanie zrealizowane, a jego stan zakupu zmieni się na ZAKUPIONO, do klienta zostanie wysłany RTDN. Po otrzymaniu RTDN przetwórz zakup w przedsprzedaży zgodnie z opisem w artykule Przetwarzanie jednorazowych zakupów produktów w systemie backend.

Z powiązanymi z transakcjami powiadomieniami RTDN należy postępować w bezpiecznym backendzie.

Obsługa ukończonych transakcji

Gdy użytkownik dokona zakupu produktu jednorazowego, Google Play wyśle wiadomośćOneTimeProductNotification o typie ONE_TIME_PRODUCT_PURCHASED. Gdy otrzymasz to powiadomienie RTDN, przetwórz zakup zgodnie z opisem w sekcji Przetwarzanie jednorazowych zakupów produktów na serwerze backendu.

Obsługa anulowanych transakcji

Gdy zakup produktu kupowanego raz zostanie anulowany, Google Play wyśle wiadomość z typem ONE_TIME_PRODUCT_CANCELED, jeśli masz skonfigurowane otrzymywanie powiadomień dla deweloperów w czasie rzeczywistym.OneTimeProductNotification Może się to zdarzyć np. wtedy, gdy użytkownik nie dokończy płatności w wymaganym czasie lub gdy zakup zostanie anulowany 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 odpowiednio zaktualizuj backend, w tym uprawnienia użytkownika.

Jeśli zakup produktu kupowanego raz w stanie Purchased zostanie zwrócony, otrzymasz powiadomienie za pomocą interfejsu Voided Purchases API.

Przetwarzanie jednorazowych zakupów produktów na backendzie

Niezależnie od tego, czy wykryjesz nowy zakup za pomocą ONE_TIME_PRODUCT_PURCHASED RTDN czy dowiesz się o nim w aplikacji za pomocą PurchasesUpdatedListener lub ręcznego pobierania zakupów w metodzie onResume() aplikacji, musisz przetworzyć nowy zakup. Zalecamy przetwarzanie zakupów na serwerze backendu, aby zwiększyć bezpieczeństwo.

Aby przetworzyć nowy zakup jednorazowy:

  1. Wyślij zapytanie do punktu końcowego purchases.productsv2.getproductpurchasev2 , aby uzyskać najnowszy stan jednorazowego zakupu produktu. Aby wywołać tę metodę w przypadku zakupu, musisz mieć odpowiedni purchaseToken z aplikacji lub z ONE_TIME_PRODUCT_PURCHASED RTDN.
  2. Zadzwoń pod numer getPurchaseState() i upewnij się, że stan zakupu to PURCHASED.
  3. Zweryfikuj zakup.
  4. Przyznaj użytkownikowi dostęp do treści. Konto użytkownika powiązane z zakupem można zidentyfikować za pomocą pola obfuscatedExternalAccountIdpurchases.productsv2.getproductpurchasev2, jeśli zostało ono ustawione za pomocą setObfuscatedAccountId() podczas dokonywania zakupu.
    1. W przypadku zakupu produktu niekonsumpcyjnego potwierdź dostarczenie treści, wywołując metodę purchases.products.acknowledge. Sprawdź, czy zakup nie został wcześniej zatwierdzony, sprawdzając pole acknowledgementState.
    2. Jeśli produkt jest zużywalny, oznacz go jako zużyty, wywołując metodę purchases.products.consume, aby użytkownik mógł kupić go ponownie po zużyciu. Ta metoda również potwierdza zakup.

W Bibliotece płatności w Google Play dostępne są też metody potwierdzania zakupu i wykorzystania, które umożliwiają przetwarzanie zakupów w aplikacji. Zalecamy jednak, aby w celu zwiększenia bezpieczeństwa implementacji przetwarzać zakupy na serwerze backendu, jeśli go masz.