- Zasób: SubscriptionPurchaseV2
- SubscriptionState
- PausedStateContext
- CanceledStateContext
- UserInitiatedCancellation
- CancelSurveyResult
- CancelSurveyReason
- SystemInitiatedCancellation
- DeveloperInitiatedCancellation
- ReplacementCancellation
- TestPurchase
- AcknowledgementState
- ExternalAccountIdentifiers
- SubscribeWithGoogleInfo
- SubscriptionPurchaseLineItem
- AutoRenewingPlan
- SubscriptionItemPriceChangeDetails
- PriceChangeMode
- PriceChangeState
- InstallmentPlan
- PendingCancellation
- PriceStepUpConsentDetails
- ConsentState
- PrepaidPlan
- OfferDetails
- DeferredItemReplacement
- DeferredItemRemoval
- SignupPromotion
- OneTimeCode
- VanityCode
- ItemReplacement
- ReplacementMode
- OutOfAppPurchaseContext
- Metody
Zasób: SubscriptionPurchaseV2
Wskazuje stan zakupu subskrypcji przez użytkownika.
| Zapis JSON |
|---|
{ "kind": string, "regionCode": string, "lineItems": [ { object ( |
| Pola | |
|---|---|
kind |
Ten rodzaj reprezentuje obiekt SubscriptionPurchaseV2 w usłudze androidpublisher. |
regionCode |
Kod kraju lub regionu rozliczeniowego użytkownika w formacie ISO 3166-1 alfa-2 w momencie przyznania subskrypcji. |
lineItems[] |
Informacje o produkcie w przypadku zakupu subskrypcji. Wszystkie produkty w ramach tego samego zakupu powinny być objęte abonamentem odnawianym automatycznie lub abonamentem przedpłaconym. |
startTime |
Czas przyznania subskrypcji. Nie jest ustawiony w przypadku subskrypcji oczekujących (subskrypcja została utworzona, ale podczas rejestracji oczekuje na płatność). 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: |
subscriptionState |
Bieżący stan subskrypcji. |
latestOrderId |
Wycofano: zamiast tego użyj lineItems.latest_successful_order_id. Identyfikator ostatniego zamówienia powiązanego z zakupem subskrypcji. W przypadku subskrypcji z automatycznym odnawianiem jest to identyfikator zamówienia rejestracyjnego, jeśli nie zostało jeszcze odnowione, lub identyfikator ostatniego zamówienia cyklicznego (zamówienie zrealizowane, oczekujące lub odrzucone). W przypadku subskrypcji przedpłaconej jest to identyfikator zamówienia powiązany z tokenem zakupu, którego dotyczy zapytanie. |
linkedPurchaseToken |
Token zakupu starej subskrypcji, jeśli jest ona jedną z tych subskrypcji: * ponowna rejestracja anulowanej, ale niewygasłej subskrypcji; * przejście na wyższą lub niższą wersję poprzedniej subskrypcji. * Przekształć abonament przedpłacony w automatycznie odnawianą subskrypcję. * Przekształcanie subskrypcji odnawianej automatycznie w abonament przedpłacony. * Przedłużanie abonamentu przedpłaconego. |
pausedStateContext |
Dodatkowe informacje o wstrzymanych subskrypcjach. Występuje tylko wtedy, gdy subskrypcja ma obecnie stan SUBSCRIPTION_STATE_PAUSED. |
canceledStateContext |
Dodatkowy kontekst dotyczący anulowanych subskrypcji. Występuje tylko wtedy, gdy subskrypcja ma obecnie stan SUBSCRIPTION_STATE_CANCELED lub SUBSCRIPTION_STATE_EXPIRED. |
testPurchase |
Występuje tylko wtedy, gdy zakup subskrypcji jest zakupem testowym. |
acknowledgementState |
Stan potwierdzenia subskrypcji. |
externalAccountIdentifiers |
Identyfikator konta użytkownika w usłudze zewnętrznej. |
subscribeWithGoogleInfo |
Profil użytkownika powiązany z zakupami dokonanymi za pomocą „Subskrybuj w Google”. |
outOfAppPurchaseContext |
Dodatkowy kontekst dotyczący zakupów poza aplikacją. Te informacje są dostępne tylko w przypadku ponownych subskrypcji (zakupów subskrypcji dokonanych po wygaśnięciu poprzedniej subskrypcji tego samego produktu) dokonanych w centrum subskrypcji Google Play. To pole zostanie usunięte po potwierdzeniu subskrypcji. |
SubscriptionState
Potencjalne stany subskrypcji, np. czy jest aktywna czy anulowana. Elementy w ramach zakupu subskrypcji mogą być odnawiane automatycznie lub przedpłacone.
| Wartości w polu enum | |
|---|---|
SUBSCRIPTION_STATE_UNSPECIFIED |
Nieokreślony stan subskrypcji. |
SUBSCRIPTION_STATE_PENDING |
Subskrypcja została utworzona, ale podczas rejestracji oczekuje na płatność. W tym stanie wszystkie produkty oczekują na płatność. |
SUBSCRIPTION_STATE_ACTIVE |
Subskrypcja jest aktywna. – (1) Jeśli subskrypcja jest odnawiana automatycznie, co najmniej 1 produkt ma wartość autoRenewEnabled i nie wygasł. – (2) Jeśli subskrypcja jest abonamentem przedpłaconym, co najmniej 1 produkt nie wygasł. |
SUBSCRIPTION_STATE_PAUSED |
Subskrypcja jest wstrzymana. Ten stan jest dostępny tylko wtedy, gdy subskrypcja jest automatycznie odnawianym abonamentem. W tym stanie wszystkie elementy są wstrzymane. |
SUBSCRIPTION_STATE_IN_GRACE_PERIOD |
Subskrypcja jest w okresie prolongaty. Ten stan jest dostępny tylko wtedy, gdy subskrypcja jest automatycznie odnawianym abonamentem. W tym stanie wszystkie produkty są w okresie prolongaty. |
SUBSCRIPTION_STATE_ON_HOLD |
Subskrypcja jest wstrzymana (zawieszona). Ten stan jest dostępny tylko wtedy, gdy subskrypcja jest automatycznie odnawianym abonamentem. W tym stanie wszystkie produkty są wstrzymane. |
SUBSCRIPTION_STATE_CANCELED |
Subskrypcja została anulowana, ale jeszcze nie wygasła. Ten stan jest dostępny tylko wtedy, gdy subskrypcja jest automatycznie odnawianym abonamentem. Wszystkie elementy mają wartość autoRenewEnabled ustawioną na false. |
SUBSCRIPTION_STATE_EXPIRED |
Subskrypcja wygasła. Wszystkie produkty mają wartość expiryTime w przeszłości. |
SUBSCRIPTION_STATE_PENDING_PURCHASE_CANCELED |
Oczekująca transakcja dotycząca subskrypcji została anulowana. Jeśli ta oczekująca płatność dotyczy istniejącej subskrypcji, użyj parametru linkedPurchaseToken, aby uzyskać jej bieżący stan. |
PausedStateContext
Informacje dotyczące subskrypcji w stanie wstrzymania.
| Zapis JSON |
|---|
{ "autoResumeTime": string } |
| Pola | |
|---|---|
autoResumeTime |
Czas, w którym subskrypcja zostanie automatycznie wznowiona. 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: |
CanceledStateContext
Informacje dotyczące subskrypcji w stanie SUBSCRIPTION_STATE_CANCELED lub SUBSCRIPTION_STATE_EXPIRED.
| Zapis JSON |
|---|
{ // Union field |
| Pola | |
|---|---|
Pole zbiorcze cancellation_reason. Powód anulowania subskrypcji. cancellation_reason może mieć tylko jedną z tych wartości: |
|
userInitiatedCancellation |
Subskrypcja została anulowana przez użytkownika. |
systemInitiatedCancellation |
Subskrypcja została anulowana przez system, np. z powodu problemu z płatnością. |
developerInitiatedCancellation |
Subskrypcja została anulowana przez dewelopera. |
replacementCancellation |
Subskrypcja została zastąpiona nową subskrypcją. |
UserInitiatedCancellation
Informacje dotyczące anulowania subskrypcji przez użytkowników.
| Zapis JSON |
|---|
{
"cancelSurveyResult": {
object ( |
| Pola | |
|---|---|
cancelSurveyResult |
Informacje podane przez użytkownika podczas procesu anulowania subskrypcji (ankieta z pytaniem o powód rezygnacji). |
cancelTime |
Czas, w którym subskrypcja została anulowana przez użytkownika. Po tym czasie użytkownik może nadal mieć dostęp do subskrypcji. Użyj lineItems.expiry_time, aby sprawdzić, czy użytkownik nadal ma dostęp. 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: |
CancelSurveyResult
Wynik ankiety anulowania, gdy subskrypcja została anulowana przez użytkownika.
| Zapis JSON |
|---|
{
"reason": enum ( |
| Pola | |
|---|---|
reason |
Powód wybrany przez użytkownika w ankiecie dotyczącej anulowania. |
reasonUserInput |
Stosowane tylko w przypadku wartości CANCEL_SURVEY_REASON_OTHERS. Jest to własna odpowiedź użytkownika na pytanie w ankiecie. |
CancelSurveyReason
Powód wybrany przez użytkownika w ankiecie dotyczącej anulowania.
| Wartości w polu enum | |
|---|---|
CANCEL_SURVEY_REASON_UNSPECIFIED |
Nieokreślony powód anulowania ankiety. |
CANCEL_SURVEY_REASON_NOT_ENOUGH_USAGE |
Za małe wykorzystanie subskrypcji. |
CANCEL_SURVEY_REASON_TECHNICAL_ISSUES |
problemy techniczne podczas korzystania z aplikacji; |
CANCEL_SURVEY_REASON_COST_RELATED |
Problemy związane z kosztami. |
CANCEL_SURVEY_REASON_FOUND_BETTER_APP |
Użytkownik znalazł lepszą aplikację. |
CANCEL_SURVEY_REASON_OTHERS |
inne powody. |
SystemInitiatedCancellation
Ten typ nie ma pól.
Informacje dotyczące anulowania zainicjowanego przez system Google.
DeveloperInitiatedCancellation
Ten typ nie ma pól.
Informacje dotyczące anulowania zainicjowanego przez deweloperów.
ReplacementCancellation
Ten typ nie ma pól.
Informacje dotyczące anulowania spowodowanego zastąpieniem subskrypcji.
TestPurchase
Ten typ nie ma pól.
Określa, czy zakup subskrypcji jest zakupem testowym.
AcknowledgementState
Możliwe stany potwierdzenia subskrypcji.
| Wartości w polu enum | |
|---|---|
ACKNOWLEDGEMENT_STATE_UNSPECIFIED |
Nieokreślony stan potwierdzenia. |
ACKNOWLEDGEMENT_STATE_PENDING |
Subskrypcja nie została jeszcze potwierdzona. |
ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED |
Subskrypcja została potwierdzona. |
ExternalAccountIdentifiers
Identyfikator konta użytkownika w usłudze zewnętrznej.
| Zapis JSON |
|---|
{ "externalAccountId": string, "obfuscatedExternalAccountId": string, "obfuscatedExternalProfileId": string } |
| Pola | |
|---|---|
externalAccountId |
Identyfikator konta użytkownika w usłudze zewnętrznej. Występuje tylko wtedy, gdy połączenie konta nastąpiło w ramach procesu zakupu subskrypcji. |
obfuscatedExternalAccountId |
Zaciemniona wersja identyfikatora, który jest jednoznacznie powiązany z kontem użytkownika w Twojej aplikacji. Występuje w przypadku tych zakupów: * jeśli połączenie konta nastąpiło w ramach procesu zakupu subskrypcji. * 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. |
SubscribeWithGoogleInfo
Informacje związane z zakupami dokonanymi w ramach „Subskrypcji w Google”.
| Zapis JSON |
|---|
{ "profileId": string, "profileName": string, "emailAddress": string, "givenName": string, "familyName": string } |
| Pola | |
|---|---|
profileId |
Identyfikator profilu Google użytkownika w momencie zakupu subskrypcji. |
profileName |
Nazwa profilu użytkownika w momencie zakupu subskrypcji. |
emailAddress |
Adres e-mail użytkownika w momencie zakupu subskrypcji. |
givenName |
Imię użytkownika w momencie zakupu subskrypcji. |
familyName |
Nazwisko użytkownika w momencie zakupu subskrypcji. |
SubscriptionPurchaseLineItem
Informacje o produkcie w przypadku zakupu subskrypcji.
| Zapis JSON |
|---|
{ "productId": string, "expiryTime": string, "latestSuccessfulOrderId": string, // Union field |
| Pola | |
|---|---|
productId |
Identyfikator zakupionego produktu (np. „monthly001”). |
expiryTime |
Czas, w którym subskrypcja wygasła lub wygaśnie, chyba że dostęp zostanie przedłużony (np. odnowiony). 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: |
latestSuccessfulOrderId |
Identyfikator ostatniego zamówienia powiązanego z tym produktem, które zostało zrealizowane. Nie występuje, jeśli użytkownik nie ma jeszcze tego elementu (np. elementu, który został zastąpiony przez odroczony element). |
Pole zbiorcze plan_type. Typ abonamentu. plan_type może mieć tylko jedną z tych wartości: |
|
autoRenewingPlan |
Produkt jest odnawiany automatycznie. |
prepaidPlan |
Produkt jest przedpłacony. |
offerDetails |
Szczegóły oferty dotyczące tego produktu. |
Pole zbiorcze deferred_item_change. To pole jest widoczne, gdy element ma odroczoną zmianę. Możesz ją usunąć lub zastąpić. deferred_item_change może mieć tylko jedną z tych wartości: |
|
deferredItemReplacement |
Informacje o odroczonej wymianie produktu. |
deferredItemRemoval |
Informacje o odroczonym usuwaniu elementów. |
signupPromotion |
Szczegóły promocji dotyczące tego produktu. Ustawiany tylko wtedy, gdy podczas rejestracji zastosowano promocję. |
itemReplacement |
Szczegóły wymienianego produktu. To pole jest wypełniane tylko wtedy, gdy ten produkt zastąpił inny produkt w poprzedniej subskrypcji, i jest dostępne tylko przez 60 dni od zakupu. |
AutoRenewingPlan
Informacje dotyczące abonamentu odnawianego automatycznie.
| Zapis JSON |
|---|
{ "autoRenewEnabled": boolean, "recurringPrice": { object ( |
| Pola | |
|---|---|
autoRenewEnabled |
Jeśli subskrypcja jest obecnie ustawiona na automatyczne odnawianie, np.użytkownik nie anulował subskrypcji. |
recurringPrice |
Obecna cena cykliczna abonamentu odnawianego automatycznie. Pamiętaj, że cena nie uwzględnia rabatów i nie obejmuje podatków w przypadku cen bez podatku. Jeśli potrzebujesz szczegółów transakcji, zadzwoń do |
priceChangeDetails |
Informacje o ostatniej zmianie ceny produktu od momentu zarejestrowania subskrypcji. |
installmentDetails |
Informacje o zobowiązaniu w ramach planu ratalnego i stanie powiązanym z automatycznie odnawianym abonamentem. |
priceStepUpConsentDetails |
Informacje o najnowszej zgodzie na podwyższenie ceny. |
SubscriptionItemPriceChangeDetails
Informacje o zmianie ceny elementu subskrypcji.
| Zapis JSON |
|---|
{ "newPrice": { object ( |
| Pola | |
|---|---|
newPrice |
Nowa cena cykliczna za subskrypcję. |
priceChangeMode |
Tryb zmiany ceny określa, jak zmienia się cena elementu subskrypcji. |
priceChangeState |
Określ, w jakim stanie jest obecnie zmiana ceny. |
expectedNewPriceChargeTime |
Czas odnowienia, w którym zmiana ceny zacznie obowiązywać użytkownika. Może się to zmienić(w przyszłości) w przypadku przesunięcia czasu odnowienia, np. w wyniku wstrzymania subskrypcji. To pole jest wypełniane tylko wtedy, gdy zmiana ceny nie weszła jeszcze w życie. 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: |
PriceChangeMode
Rodzaj zmiany ceny.
| Wartości w polu enum | |
|---|---|
PRICE_CHANGE_MODE_UNSPECIFIED |
Nieokreślony tryb zmiany ceny. Ta wartość nigdy nie powinna być ustawiona. |
PRICE_DECREASE |
Jeśli cena subskrypcji się zmniejsza. |
PRICE_INCREASE |
Jeśli cena subskrypcji wzrasta i użytkownik musi ją zaakceptować. |
OPT_OUT_PRICE_INCREASE |
Jeśli cena subskrypcji wzrasta w trybie rezygnacji. |
PriceChangeState
Stan zmiany ceny.
| Wartości w polu enum | |
|---|---|
PRICE_CHANGE_STATE_UNSPECIFIED |
Stan zmiany ceny jest nieokreślony. Nie należy używać tej wartości. |
OUTSTANDING |
Oczekiwanie na zgodę użytkownika na zmianę ceny. |
CONFIRMED |
Zmiana ceny jest potwierdzona dla użytkownika. |
APPLIED |
Zmiana ceny została zastosowana, tzn. użytkownik zaczął płacić nową cenę. |
CANCELED |
Zmiana ceny została anulowana. |
InstallmentPlan
Informacje o planie ratalnym.
| Zapis JSON |
|---|
{
"initialCommittedPaymentsCount": integer,
"subsequentCommittedPaymentsCount": integer,
"remainingCommittedPaymentsCount": integer,
"pendingCancellation": {
object ( |
| Pola | |
|---|---|
initialCommittedPaymentsCount |
Łączna liczba płatności, do których użytkownik zobowiązał się na początku. |
subsequentCommittedPaymentsCount |
Łączna liczba płatności, do których użytkownik będzie zobowiązany po każdym okresie zobowiązania. Puste pole oznacza, że po początkowym okresie zobowiązania abonament ratalny zostanie przekształcony w zwykłą subskrypcję z automatycznym odnawianiem. |
remainingCommittedPaymentsCount |
Łączna liczba pozostałych płatności w ramach zobowiązania, które należy uiścić w tym cyklu odnowienia. |
pendingCancellation |
Jeśli ten abonament jest obecny, oczekuje na anulowanie. Anulowanie nastąpi dopiero po dokonaniu przez użytkownika wszystkich płatności. |
PendingCancellation
Ten typ nie ma pól.
Wskazuje, czy w przypadku wirtualnego planu ratalnego oczekuje się anulowania. Anulowanie nastąpi dopiero po dokonaniu przez użytkownika wszystkich płatności.
PriceStepUpConsentDetails
Informacje dotyczące podwyższenia ceny, które wymagają zgody użytkownika.
| Zapis JSON |
|---|
{ "state": enum ( |
| Pola | |
|---|---|
state |
Tylko dane wyjściowe. Stan zgody na podwyższenie ceny. |
consentDeadlineTime |
Termin, do którego użytkownik musi wyrazić zgodę. Jeśli do tego czasu nie wyrazisz zgody, subskrypcja zostanie anulowana. 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: |
newPrice |
nowa cena, która wymaga zgody użytkownika; |
ConsentState
Stan zgody na podwyższenie ceny.
| Wartości w polu enum | |
|---|---|
CONSENT_STATE_UNSPECIFIED |
Nieokreślony stan zgody użytkownika. |
PENDING |
użytkownik nie wyraził jeszcze zgody. |
CONFIRMED |
Użytkownik wyraził zgodę, a nowa cena czeka na wejście w życie. |
COMPLETED |
Użytkownik wyraził zgodę, a nowa cena zaczęła obowiązywać. |
PrepaidPlan
Informacje dotyczące abonamentu przedpłaconego.
| Zapis JSON |
|---|
{ "allowExtendAfterTime": string } |
| Pola | |
|---|---|
allowExtendAfterTime |
Jeśli jest dostępny, jest to czas, po którym można doładować abonament przedpłacony. Nie będzie widoczny w przypadku wygasłych abonamentów przedpłaconych. 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: |
OfferDetails
Informacje o szczegółach oferty dotyczące elementu zamówienia.
| Zapis JSON |
|---|
{ "offerTags": [ string ], "basePlanId": string, "offerId": string } |
| Pola | |
|---|---|
offerTags[] |
Najnowsze tagi oferty powiązane z ofertą. Zawiera tagi odziedziczone z abonamentu podstawowego. |
basePlanId |
Identyfikator abonamentu podstawowego. Występuje we wszystkich abonamentach podstawowych i ofertach. |
offerId |
Identyfikator oferty. Występuje tylko w przypadku ofert z rabatem. |
DeferredItemReplacement
Informacje dotyczące odroczonej wymiany produktu.
| Zapis JSON |
|---|
{ "productId": string } |
| Pola | |
|---|---|
productId |
Identyfikator produktu, który zastąpi dotychczasowy identyfikator produktu. |
DeferredItemRemoval
Ten typ nie ma pól.
Informacje dotyczące odroczonej wymiany produktu.
SignupPromotion
Promocja zastosowana do tego produktu w momencie zakupu.
| Zapis JSON |
|---|
{ // Union field |
| Pola | |
|---|---|
Pole zbiorcze promotion_type. Typ promocji zastosowanej do produktu. promotion_type może mieć tylko jedną z tych wartości: |
|
oneTimeCode |
Zastosowano kod jednorazowy. |
vanityCode |
Zastosowano kod niestandardowy. |
OneTimeCode
Ten typ nie ma pól.
jednorazowy kod promocyjny,
VanityCode
Wielokrotny, zdefiniowany kod promocyjny.
| Zapis JSON |
|---|
{ "promotionCode": string } |
| Pola | |
|---|---|
promotionCode |
Kod promocyjny. |
ItemReplacement
Szczegóły elementu zamówienia subskrypcji, który jest zastępowany.
| Zapis JSON |
|---|
{
"productId": string,
"replacementMode": enum ( |
| Pola | |
|---|---|
productId |
Identyfikator produktu objętego subskrypcją, który jest zastępowany. |
replacementMode |
Tryb wymiany zastosowany podczas zakupu. |
basePlanId |
Identyfikator abonamentu podstawowego zastępowanego elementu zamówienia subskrypcji. |
offerId |
Identyfikator oferty zastępowanego elementu zamówienia subskrypcji (w stosownych przypadkach). |
ReplacementMode
Tryb zastępowania subskrypcji.
| Wartości w polu enum | |
|---|---|
REPLACEMENT_MODE_UNSPECIFIED |
Nieokreślony tryb zastępowania. |
WITH_TIME_PRORATION |
Nowy abonament zostanie przeliczony proporcjonalnie, a środki zostaną przeniesione ze starego abonamentu. |
CHARGE_PRORATED_PRICE |
Użytkownik zostanie obciążony proporcjonalną ceną za nowy pakiet. |
WITHOUT_PRORATION |
Nowy abonament zastąpi stary bez proporcjonalnego rozliczania czasu. |
CHARGE_FULL_PRICE |
Od użytkownika zostanie pobrana pełna cena nowego abonamentu. |
DEFERRED |
Stary abonament zostanie anulowany, a nowy zacznie obowiązywać po wygaśnięciu starego. |
KEEP_EXISTING |
Po wymianie abonament pozostanie bez zmian. |
OutOfAppPurchaseContext
Informacje dotyczące zakupu poza aplikacją.
| Zapis JSON |
|---|
{
"expiredExternalAccountIdentifiers": {
object ( |
| Pola | |
|---|---|
expiredExternalAccountIdentifiers |
Identyfikator konta użytkownika z ostatniej wygasłej subskrypcji tego kodu SKU. |
expiredPurchaseToken |
Token zakupu ostatniej wygasłej subskrypcji. Ten token zakupu może być używany tylko do identyfikowania użytkownika, jeśli w Twojej bazie danych jest przechowywane połączenie między tokenem zakupu a użytkownikiem. Nie można go użyć do wywołania interfejsu Google Developer API, jeśli od daty wygaśnięcia minęło więcej niż 60 dni. |
Metody |
|
|---|---|
|
Anulowanie zakupu subskrypcji przez użytkownika. |
|
Pobieranie metadanych subskrypcji |
|
Unieważnij zakup subskrypcji użytkownika. |
Kody błędów
Operacje na tym zasobie zwracają te kody błędów HTTP:
| Kod błędu | Przyczyna | Opis | Rozdzielczość |
|---|---|---|---|
400 / 410 |
subscriptionExpired |
Subskrypcja wygasła i nie można wykonać żądanej operacji. | Sprawdź czas wygaśnięcia subskrypcji. Tej operacji nie można wykonać w przypadku wygasłych subskrypcji. |
400 |
subscriptionInvalidArgument |
W żądaniu subskrypcji podano nieprawidłowy argument. | Zapoznaj się z dokumentacją interfejsu API i upewnij się, że wszystkie wymagane pola są wypełnione i prawidłowo sformatowane. |
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 parametrach na podstawie dokumentacji API. |
400 |
prepaidSubscriptionNotSupported |
Żądana operacja nie jest obsługiwana w przypadku subskrypcji przedpłaconych. | Sprawdź, czy operacja dotyczy danego typu subskrypcji. Ten błąd dotyczy konkretnych metod, takich jak Cancel, Defer, Refund czy Revoke. |
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. |
410 |
purchaseTokenNoLongerValid |
Token zakupu jest trwale nieprawidłowy, ponieważ powiązane z nim konto użytkownika zostało usunięte lub rekord zakupu już nie istnieje. | Zaprzestań używania tego tokena zakupu. |
410 |
subscriptionNoLongerAvailable |
Nie można już wysłać zapytania o zakup subskrypcji, ponieważ wygasła ona zbyt dawno. | Ten błąd oznacza, że subskrypcja wygasła ponad 60 dni temu. Nie należy już wysyłać zapytań dotyczących tych subskrypcji. |
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. |