Zasób: ProductPurchase
Zasób ProductPurchase wskazuje stan zakupu produktu w aplikacji przez użytkownika.
| Zapis JSON |
|---|
{ "kind": string, "purchaseTimeMillis": string, "purchaseState": integer, "consumptionState": integer, "developerPayload": string, "orderId": string, "purchaseType": integer, "acknowledgementState": integer, "purchaseToken": string, "productId": string, "quantity": integer, "obfuscatedExternalAccountId": string, "obfuscatedExternalProfileId": string, "regionCode": string, "refundableQuantity": integer } |
| Pola | |
|---|---|
kind |
Ten rodzaj reprezentuje obiekt inappPurchase w usłudze androidpublisher. |
purchaseTimeMillis |
Czas zakupu produktu w milisekundach od początku epoki (1 stycznia 1970 r.). |
purchaseState |
Stan zakupu zamówienia. Możliwe wartości: 0. Kupiono 1. Anulowano 2. Oczekuje |
consumptionState |
Stan wykorzystania produktu w aplikacji. Możliwe wartości: 0. Jeszcze nie zużyto 1. Skonsumowano |
developerPayload |
Ciąg znaków określony przez dewelopera, który zawiera dodatkowe informacje o zamówieniu. |
orderId |
Identyfikator zamówienia powiązany z zakupem produktu w aplikacji. |
purchaseType |
Rodzaj zakupu produktu w aplikacji. To pole jest ustawiane tylko wtedy, gdy zakup nie został dokonany przy użyciu standardowego procesu rozliczeń w aplikacji. Możliwe wartości: 0. Test (czyli zakupiona na koncie testowania licencji) 1. Promocyjna (czyli kupiona przy użyciu kodu promocyjnego). Nie obejmuje zakupów w ramach programu Play Points. 2. Nagrodzone (czyli uzyskane za obejrzenie reklamy wideo zamiast za płatność) |
acknowledgementState |
Stan potwierdzenia produktu w aplikacji. Możliwe wartości: 0. Niepotwierdzone 1. Potwierdzono |
purchaseToken |
Token zakupu wygenerowany w celu identyfikacji tego zakupu. Może nie być obecna. |
productId |
Kod SKU produktu w aplikacji. Może nie być obecna. |
quantity |
Liczba powiązana z zakupem produktu w aplikacji. Jeśli nie jest obecna, ilość wynosi 1. |
obfuscatedExternalAccountId |
Zaciemniona wersja identyfikatora, który jest jednoznacznie powiązany z kontem użytkownika w Twojej aplikacji. Występuje tylko wtedy, gdy został określony za pomocą https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid podczas dokonywania zakupu. |
obfuscatedExternalProfileId |
Zaciemniona wersja identyfikatora, który jest jednoznacznie powiązany z profilem użytkownika w Twojej aplikacji. Występuje tylko wtedy, gdy podczas zakupu został określony za pomocą parametru https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid. |
regionCode |
Kod regionu rozliczeniowego użytkownika w formacie ISO 3166-1 alfa-2 w momencie przyznania produktu. |
refundableQuantity |
Liczba produktów kwalifikujących się do zwrotu, czyli liczba produktów, za które nie zwrócono jeszcze środków. Wartość odzwierciedla częściowe zwroty środków za zamówienia z większą liczbą produktów i pełne zwroty środków. |
Metody |
|
|---|---|
|
Potwierdza zakup produktu w aplikacji. |
|
Zrealizuj zakup produktu w aplikacji. |
|
Sprawdza stan zakupu i wykorzystania produktu w aplikacji. |
Kody błędów
Operacje na tym zasobie zwracają te kody błędów HTTP:
| Kod błędu | Przyczyna | Opis | Rozdzielczość |
|---|---|---|---|
400 |
invalidPurchaseState |
Zakup nie jest w prawidłowym stanie, aby wykonać żądaną operację. Możesz na przykład próbować potwierdzić zakup, który został już wykorzystany, lub anulować subskrypcję, która nie jest aktywna. | Przed podjęciem próby wykonania operacji sprawdź bieżący stan zasobu za pomocą odpowiedniego interfejsu Get API. Upewnij się, że zasób jest w odpowiednim stanie do wykonania działania. |
400 |
invalidValue |
W żądaniu podano nieprawidłową wartość. Często jest zwracany w przypadku nieprawidłowego lub nieprawidłowo sformatowanego tokena zakupu. | Popraw nieprawidłową wartość pola w treści żądania lub w parametrach na podstawie dokumentacji API. |
400 |
productNotOwnedByUser |
Podany token zakupu jest prawidłowy, ale użytkownik nie jest obecnie właścicielem produktu. Może się tak zdarzyć, jeśli zakup został zwrócony, anulowany lub wygasł przed potwierdzeniem. | Przed podjęciem próby wykonania operacji sprawdź bieżący stan zasobu za pomocą odpowiedniego interfejsu Get API. Upewnij się, że zasób jest w odpowiednim stanie do wykonania działania. |
400 |
purchaseTokenMismatch |
Podany token zakupu nie pasuje do zakupu, nazwy pakietu, identyfikatora subskrypcji ani identyfikatora produktu. | Sprawdź, czy wszystkie szczegóły w prośbie są prawidłowe i zgodne ze sobą. |
400 |
required |
W żądaniu brakuje wymaganego pola lub parametru. | Zapoznaj się z dokumentacją interfejsu API, aby upewnić się, że uwzględniono wszystkie obowiązkowe pola i parametry. |
400 |
unsupportedIabType |
Ta operacja nie jest obsługiwana w przypadku danego typu płatności w aplikacji. | Sprawdź, czy metoda interfejsu API jest zgodna z typem zarządzanego elementu. |
403 |
userInsufficientPermission |
Użytkownik nie ma wystarczających uprawnień do wykonania żądanej operacji. | Sprawdź, czy uwierzytelniony użytkownik ma niezbędne uprawnienia w Konsoli Google Play. Więcej informacji znajdziesz w artykule Korzystanie z konta usługi. |
404 |
notFound |
Nie znaleziono żądanego zasobu. | Sprawdź, czy identyfikatory (np. token zakupu, nazwa pakietu, identyfikator produktu, identyfikator subskrypcji) są prawidłowe. |
409 |
concurrentUpdate |
Podjęto próbę zaktualizowania obiektu, który jest aktualizowany równolegle. | Ponów próbę wysłania żądania ze wzrastającym czasem do ponowienia. Unikaj jednoczesnego modyfikowania tego samego zasobu. |
5xx |
Generic error |
Ogólny błąd serwera Google Play. | Ponów żądanie. Jeśli problem nie ustąpi, skontaktuj się z menedżerem konta Google Play lub prześlij prośbę o pomoc. Sprawdź Panel stanu Google Play, aby dowiedzieć się, czy występują znane awarie. |