Ładunek programisty

Ładunek dewelopera był w przeszłości wykorzystywany do różnych celów, w tym do zapobiegania oszustwom i przypisywania zakupów do właściwego użytkownika. W wersjach Biblioteki płatności w Google Play 2.2 i nowszych zamierzone przypadki użycia, które wcześniej opierały się na danych przekazywanych przez dewelopera, są teraz w pełni obsługiwane w innych częściach biblioteki.

W związku z tym wycofaliśmy ładunek dewelopera, począwszy od wersji 2.2 Biblioteki płatności w Google Play. Metody powiązane z danymi dodatkowymi dewelopera zostały wycofane w wersji 2.2 i usunięte w wersji 3.0. Pamiętaj, że Twoja aplikacja może nadal pobierać ładunek dewelopera w przypadku zakupów dokonanych przy użyciu poprzednich wersji biblioteki lub AIDL.

Szczegółową listę zmian znajdziesz w informacjach o wersji 2.2 Biblioteki płatności w Google Playinformacjach o wersji 3.0 Biblioteki płatności w Google Play.

Weryfikacja zakupów

Aby mieć pewność, że zakupy są autentyczne, a nie sfałszowane lub odtworzone, Google zaleca używanie tokena zakupu (uzyskanego z metody getPurchaseToken() w obiekcie Purchase) wraz z interfejsami Google Play Developer API do weryfikowania autentyczności zakupów. Więcej informacji znajdziesz w artykule Zwalczanie oszustw i nadużyć.

Atrybucja zakupu

Wiele aplikacji, zwłaszcza gier, musi mieć pewność, że zakup jest prawidłowo przypisany do postaci/awataru w grze lub profilu użytkownika w aplikacji, który zainicjował zakup. Od wersji 2.2 Biblioteki płatności w Google Play Twoja aplikacja może przekazywać do Google zaciemnione identyfikatory konta i profilu podczas uruchamiania okna zakupu oraz otrzymywać je z powrotem podczas pobierania zakupu.

Użyj parametrów setObfuscatedAccountId()setObfuscatedProfileId() w metodzie BillingFlowParams i pobierz je za pomocą metody getAccountIdentifiers() w obiekcie Purchase.

Powiązywanie metadanych z zakupem

Google zaleca przechowywanie metadanych dotyczących zakupu na bezpiecznym serwerze backendu, którym zarządzasz. Te metadane zakupu powinny być powiązane z tokenem zakupu uzyskanym za pomocą metody getPurchaseToken w obiekcie Purchase. Te dane można zachować, przekazując token zakupu i metadane do backendu, gdy po udanym zakupie zostanie wywołana funkcja PurchasesUpdatedListener.

Aby mieć pewność, że metadane są powiązane w przypadku przerw w procesie zakupu, Google zaleca przechowywanie metadanych na serwerze backendu przed wyświetleniem okna zakupu i powiązanie ich z identyfikatorem konta użytkownika, kupowanym numerem SKU i bieżącą sygnaturą czasową.

Jeśli proces zakupu zostanie przerwany przed wywołaniem funkcji PurchasesUpdatedListener, aplikacja wykryje zakup po wznowieniu działania i wywołaniu funkcji BillingClient.queryPurchasesAsync(). Następnie możesz wysłać wartości pobrane z obiektu Purchase za pomocą metod getPurchaseTime(), getSku()getPurchaseToken() na serwer backendu, aby wyszukać metadane, powiązać je z tokenem zakupu i kontynuować przetwarzanie zakupu. Pamiętaj, że sygnatura czasowa, którą pierwotnie zapisano, nie będzie dokładnie odpowiadać wartości z obiektu Purchase getPurchaseTime(), dlatego musisz porównać je w przybliżony sposób. Możesz na przykład sprawdzić, czy wartości mieszczą się w określonym przedziale czasu.