- Zasób: ProductPurchaseV2
- PurchaseStateContext
- PurchaseState
- TestPurchaseContext
- FopType
- ProductLineItem
- ProductOfferDetails
- RentOfferDetails
- ConsumptionState
- AcknowledgementState
- Metody
Zasób: ProductPurchaseV2
Zasób ProductPurchaseV2 wskazuje stan zakupu produktu w aplikacji przez użytkownika.
| Zapis JSON |
|---|
{ "productLineItem": [ { object ( |
| Pola | |
|---|---|
productLineItem[] |
Zawiera informacje na poziomie produktu dla obiektu ProductPurchaseV2. |
kind |
Ten rodzaj reprezentuje obiekt ProductPurchaseV2 w usłudze androidpublisher. |
purchaseStateContext |
Informacje o stanie zakupu. |
testPurchaseContext |
Informacje dotyczące zakupów testowych. Będzie ona ustawiana tylko w przypadku zakupów testowych. |
orderId |
Identyfikator zamówienia powiązany z zakupem produktu w aplikacji. Nie można ustawić, jeśli z zakupem nie jest powiązane żadne zamówienie. |
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. |
purchaseCompletionTime |
Czas, w którym zakup został sfinalizowany, czyli gdy stan zakupu zmienił się na PURCHASED. To pole nie będzie widoczne, dopóki płatność nie zostanie zrealizowana. Jeśli na przykład użytkownik zainicjował oczekującą transakcję (https://developer.android.com/google/play/billing/integrate#pending), to pole nie zostanie wypełnione, dopóki użytkownik nie wykona kroków wymaganych do sfinalizowania transakcji. Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
acknowledgementState |
Tylko dane wyjściowe. Stan potwierdzenia zakupu. |
PurchaseStateContext
Kontekst dotyczący stanu zakupu.
| Zapis JSON |
|---|
{
"purchaseState": enum ( |
| Pola | |
|---|---|
purchaseState |
Tylko dane wyjściowe. Stan zakupu. |
PurchaseState
Możliwe stany zakupu.
| Wartości w polu enum | |
|---|---|
PURCHASE_STATE_UNSPECIFIED |
Stan zakupu jest nieokreślony. Ta wartość nigdy nie powinna być ustawiona. |
PURCHASED |
Zakup został sfinalizowany. |
CANCELLED |
Zamówienie anulowane. |
PENDING |
Zakup jest w stanie oczekiwania i nie został jeszcze sfinalizowany. Więcej informacji o obsłudze oczekujących zakupów znajdziesz na stronie https://developer.android.com/google/play/billing/integrate#pending. |
TestPurchaseContext
Kontekst zakupu testowego.
| Zapis JSON |
|---|
{
"fopType": enum ( |
| Pola | |
|---|---|
fopType |
Typ formy płatności w przypadku zakupu testowego. |
FopType
Możliwe typy FOP.
| Wartości w polu enum | |
|---|---|
FOP_TYPE_UNSPECIFIED |
Nieokreślony typ FOP. Ta wartość nigdy nie powinna być ustawiona. |
TEST |
Zakup został dokonany za pomocą karty testowej. |
ProductLineItem
Zawiera informacje na poziomie produktu dla obiektu ProductPurchaseV2.
| Zapis JSON |
|---|
{
"productId": string,
"productOfferDetails": {
object ( |
| Pola | |
|---|---|
productId |
Identyfikator zakupionego produktu (np. „monthly001”). |
productOfferDetails |
Szczegóły oferty dotyczące tego produktu. |
ProductOfferDetails
Informacje o szczegółach oferty dotyczące elementu zamówienia.
| Zapis JSON |
|---|
{ "offerTags": [ string ], "offerId": string, "purchaseOptionId": string, "rentOfferDetails": { object ( |
| Pola | |
|---|---|
offerTags[] |
Najnowsze tagi oferty powiązane z ofertą. Zawiera tagi odziedziczone z opcji zakupu. |
offerId |
Identyfikator oferty. Występuje tylko w przypadku ofert. |
purchaseOptionId |
Identyfikator opcji zakupu. |
rentOfferDetails |
Szczegóły oferty dotyczące ofert wynajmu. Będzie to ustawiane tylko w przypadku elementów zamówienia dotyczących wypożyczeń. |
offerToken |
Token oferty za transakcję użyty do zakupu tego elementu zamówienia. |
quantity |
Liczba powiązana z zakupem produktu w aplikacji. |
refundableQuantity |
Liczba produktów kwalifikujących się do zwrotu, czyli liczba produktów, za które nie zwrócono jeszcze środków. Wartość ta uwzględnia częściowe zwroty środków za zamówienia z większą liczbą produktów i pełne zwroty środków. |
consumptionState |
Tylko dane wyjściowe. Stan wykorzystania zakupu. |
RentOfferDetails
Ten typ nie ma pól.
Informacje o szczegółach oferty związane z elementem zamówienia dotyczącym wynajmu.
ConsumptionState
Możliwe stany wykorzystania.
| Wartości w polu enum | |
|---|---|
CONSUMPTION_STATE_UNSPECIFIED |
Stan wykorzystania jest nieokreślony. Ta wartość nigdy nie powinna być ustawiona. |
CONSUMPTION_STATE_YET_TO_BE_CONSUMED |
Nie zostały jeszcze wykorzystane. |
CONSUMPTION_STATE_CONSUMED |
Został już wykorzystany. |
AcknowledgementState
Stan potwierdzenia produktu kupowanego raz.
| Wartości w polu enum | |
|---|---|
ACKNOWLEDGEMENT_STATE_UNSPECIFIED |
Nieokreślony stan potwierdzenia. |
ACKNOWLEDGEMENT_STATE_PENDING |
Zakup nie został jeszcze potwierdzony. |
ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED |
Zakup został zatwierdzony. |
Metody |
|
|---|---|
|
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. |