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.
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:
- Skonfiguruj
Real-time developer notificationsi włącz opcjęGet all notifications for subscriptions and one-time products, aby otrzymywać aktualizacje stanu zakupów. - Zaimplementuj interfejs
PurchasesUpdatedListenerzBillingClient, aby automatycznie otrzymywać aktualizacje zakupów. - Wywołaj
BillingClient.queryPurchasesAsync()metodę.
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:
- Wyślij zapytanie do
purchases.productsv2.getproductpurchasev2punktu końcowego, aby uzyskać najnowszy stan zakupu produktu kupowanego raz. Aby wywołać tę metodę w przypadku zakupu, potrzebujesz odpowiedniego parametrupurchaseTokenz aplikacji lub z powiadomienia RTDNONE_TIME_PRODUCT_PURCHASED. - Wywołaj metodę
getPurchaseState()i upewnij się, że stan zakupu toPURCHASED. - Zweryfikuj zakup.
- Udostępnij użytkownikowi treści. Konto użytkownika powiązane z
zakupem można zidentyfikować za pomocą
obfuscatedExternalAccountIdpola zpurchases.productsv2.getproductpurchasev2, jeśli zostało ono ustawione za pomocąsetObfuscatedAccountId()podczas zakupu.- W przypadku zakupu produktów niepodlegających wykorzystaniu potwierdź dostarczenie
treści, wywołując
purchases.products.acknowledgemetodę. Sprawdź, czy zakup nie został wcześniej potwierdzony, sprawdzając poleacknowledgementState. - 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 przypadku zakupu produktów niepodlegających wykorzystaniu potwierdź dostarczenie
treści, wywołując
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.