Produkty kupowane jednorazowo mają prostszy cykl życia niż produkty z subskrypcją, ale nadal istnieje kilka stanów i zdarzeń przejściowych, które backend musi obsługiwać prawidłowo.
Nowe zakupy produktów kupowanych raz
Gdy użytkownik zakończy proces płatności, Twoja aplikacja może uzyskać informacje o nowym zakupie w jeden z tych sposobów:
- Skonfiguruj
Real-time developer notifications
i włączGet all notifications for subscriptions and one-time products
, aby otrzymywać informacje o stanie zakupów. - Aby automatycznie otrzymywać informacje o zakupach, użyj interfejsu
PurchasesUpdatedListener
zBillingClient
. - Wywołaj metodę
BillingClient.queryPurchasesAsync()
.
Po otrzymaniu nowego zakupu użyj metody getPurchaseState
lub purchases.products.get 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 lub anuluje zakup produktu kupowanego raz, Google Play wyśle wiadomośćOneTimeProductNotification
. Aby zaktualizować stan zakupu na zapleczu, użyj tokenu zakupu udostępnionego w obiekcie OneTimeProductNotification
do wywołania metody purchases.products.get
. Ta metoda umożliwia uzyskanie najnowszego stanu zakupu i konsumpcji na podstawie tokena zakupu.
Gdy zamówienie w przedsprzedaży zostanie zrealizowane i jego stan zmieni się na ZAKUPIONE, do Twojego klienta zostanie wysłany RTDN. Po otrzymaniu RTDN przetwórz zamówienie w przedsprzedaży zgodnie z opisem w artykule Przetwarzanie jednorazowych zakupów produktów na zapleczu.
Dane RTDN związane z transakcją należy obsługiwać w bezpiecznym backendzie.
Obsługa ukończonych transakcji
Gdy użytkownik kupi produkt jednorazowy, Google Play wyśle wiadomość OneTimeProductNotification
typu ONE_TIME_PRODUCT_PURCHASED
.
Gdy otrzymasz to powiadomienie RTDN, przetwórz zakup zgodnie z opisem w artykule Przetwarzanie jednorazowych zakupów produktów na zapleczu.
Obsługa anulowanych transakcji
Gdy anulujesz zakup produktu jednorazowego, Google Play wyśle wiadomość OneTimeProductNotification
typu ONE_TIME_PRODUCT_CANCELED
, jeśli masz włączone powiadomienia od dewelopera w czasie rzeczywistym.
Może się tak zdarzyć, jeśli użytkownik nie dokona płatności w wymaganym terminie lub jeśli deweloper lub klient anuluje zakup. Gdy serwer zaplecza otrzyma to powiadomienie, wywołaj metodę purchases.products.get
, aby uzyskać najnowszy stan zakupu, a następnie zaktualizuj odpowiednio zaplecze, w tym uprawnienia użytkowników.
Jeśli zakup produktu jednorazowego w stanie Purchased
zostanie zwrócony, otrzymasz o tym powiadomienie za pomocą interfejsu API anulowanych zakupów.
Przetwarzanie jednorazowych zakupów produktów na zapleczu
Niezależnie od tego, czy wykryto nowy zakup za pomocą ONE_TIME_PRODUCT_PURCHASED
powiadomienia w czasie rzeczywistym, czy też powiadomiono Cię o nim w aplikacji za pomocą PurchasesUpdatedListener
lub ręcznego pobierania zakupów za pomocą metody onResume()
aplikacji, musisz przetworzyć nowy zakup. Ze względów bezpieczeństwa zalecamy przetwarzanie zakupów na zapleczu.
Aby przetworzyć nowy zakup jednorazowy:
- Wyszukaj punkt końcowy
purchases.products.get
, aby uzyskać najnowszy stan jednorazowego zakupu produktu. Aby wywołać tę metodę w celu dokonania zakupu, musisz mieć odpowiednią wartośćpurchaseToken
z aplikacji lub zONE_TIME_PRODUCT_PURCHASED
RTDN. - Zadzwoń pod numer
getPurchaseState()
i upewnij się, że stan zakupu toPURCHASED
. - Zweryfikuj zakup.
- Przyznaj użytkownikowi dostęp do treści. Konto użytkownika powiązane z zakupem można zidentyfikować za pomocą pola
obfuscatedExternalAccountId
wpurchases.products.get
, jeśli zostało ono ustawione za pomocą polasetObfuscatedAccountId()
podczas dokonywania zakupu.- W przypadku zakupu produktów niekonsumpcyjnych potwierdź dostarczenie treści, wywołując metodę
purchases.products.acknowledge
. Sprawdź, czy zakup nie został wcześniej zatwierdzony, sprawdzając poleacknowledgementState
. - Jeśli produkt jest konsumpcyjny, oznacz go jako zużyty, wywołując metodę
purchases.products.consume
, aby użytkownik mógł go ponownie kupić po zużyciu. Ta metoda również potwierdza zakup.
- W przypadku zakupu produktów niekonsumpcyjnych potwierdź dostarczenie treści, wywołując metodę
W Bibliotece rozliczeniowej Google Play dostępne są też metody potwierdzania i przetwarzania zakupów, które umożliwiają przetwarzanie zakupów w aplikacji, ale ze względów bezpieczeństwa zalecamy przetwarzanie na zapleczu.