REST Resource: purchases.subscriptions

Zasób: SubscriptionPurchase

Wycofano: zamiast tego używaj SubscriptionPurchaseV2. Zasób SubscriptionPurchase wskazuje stan zakupu subskrypcji przez użytkownika.

Zapis JSON
{
  "kind": string,
  "startTimeMillis": string,
  "expiryTimeMillis": string,
  "autoResumeTimeMillis": string,
  "autoRenewing": boolean,
  "priceCurrencyCode": string,
  "priceAmountMicros": string,
  "introductoryPriceInfo": {
    object (IntroductoryPriceInfo)
  },
  "countryCode": string,
  "developerPayload": string,
  "paymentState": integer,
  "cancelReason": integer,
  "userCancellationTimeMillis": string,
  "cancelSurveyResult": {
    object (SubscriptionCancelSurveyResult)
  },
  "orderId": string,
  "linkedPurchaseToken": string,
  "purchaseType": integer,
  "priceChange": {
    object (SubscriptionPriceChange)
  },
  "profileName": string,
  "emailAddress": string,
  "givenName": string,
  "familyName": string,
  "profileId": string,
  "acknowledgementState": integer,
  "externalAccountId": string,
  "promotionType": integer,
  "promotionCode": string,
  "obfuscatedExternalAccountId": string,
  "obfuscatedExternalProfileId": string
}
Pola
kind

string

Ten rodzaj reprezentuje obiekt subscriptionPurchase w usłudze androidpublisher.

startTimeMillis

string (int64 format)

Czas przyznania subskrypcji w milisekundach od początku epoki.

expiryTimeMillis

string (int64 format)

Czas wygaśnięcia subskrypcji w milisekundach od początku epoki.

autoResumeTimeMillis

string (int64 format)

Czas, w którym subskrypcja zostanie automatycznie wznowiona (w milisekundach od początku epoki). Występuje tylko wtedy, gdy użytkownik poprosił o wstrzymanie subskrypcji.

autoRenewing

boolean

Czy subskrypcja zostanie automatycznie odnowiona po upływie bieżącego okresu ważności.

priceCurrencyCode

string

Kod waluty ceny subskrypcji w formacie ISO 4217. Jeśli na przykład cena jest podana w funtach brytyjskich, priceCurrencyCode to „GBP”.

priceAmountMicros

string (int64 format)

Cena subskrypcji. W krajach, w których podatek nie jest wliczony w cenę, cena nie zawiera podatku. W krajach, w których podatek jest wliczony w cenę, cena zawiera podatek. Cena jest wyrażona w mikrojednostkach, gdzie 1 000 000 mikrojednostek odpowiada jednej jednostce waluty. Jeśli na przykład cena subskrypcji wynosi 1, 99 PLN, wartość priceAmountMicros to 1990000.

introductoryPriceInfo

object (IntroductoryPriceInfo)

Informacje o cenie początkowej subskrypcji. Ta informacja jest widoczna tylko wtedy, gdy subskrypcja została kupiona w cenie początkowej.

To pole nie wskazuje, czy subskrypcja jest obecnie w okresie obowiązywania ceny dla nowych użytkowników.

countryCode

string

Kod kraju/regionu rozliczenia użytkownika w formacie ISO 3166-1 alfa-2 w momencie przyznania subskrypcji.

developerPayload

string

Ciąg znaków określony przez dewelopera, który zawiera dodatkowe informacje o zamówieniu.

paymentState

integer

Stan płatności subskrypcji. Możliwe wartości: 0. Oczekująca płatność 1. Otrzymano płatność 2. Bezpłatny okres próbny 3. Oczekuje na odroczone przejście na wyższą/niższą wersję

Nie występuje w przypadku anulowanych i wygasłych subskrypcji.

cancelReason

integer

Powód anulowania subskrypcji lub braku automatycznego odnawiania. Możliwe wartości: 0. Użytkownik anulował subskrypcję 1. Subskrypcja została anulowana przez system, np. z powodu problemu z płatnością. Subskrypcja została zastąpiona nową subskrypcją 3. Subskrypcja została anulowana przez dewelopera

userCancellationTimeMillis

string (int64 format)

Czas anulowania subskrypcji przez użytkownika (w milisekundach od początku epoki). Występuje tylko wtedy, gdy cancelReason ma wartość 0.

cancelSurveyResult

object (SubscriptionCancelSurveyResult)

Informacje podane przez użytkownika podczas procesu anulowania subskrypcji (ankieta z pytaniem o powód rezygnacji).

orderId

string

Identyfikator ostatniego zamówienia cyklicznego powiązanego z zakupem subskrypcji. Jeśli subskrypcja została anulowana z powodu odrzucenia płatności, będzie to identyfikator zamówienia, w którym odrzucono płatność.

linkedPurchaseToken

string

Token zakupu pierwotnego zakupu, jeśli ta subskrypcja jest jedną z tych opcji: 0. Ponowna rejestracja anulowanej, ale nie wygasłej subskrypcji 1. Przechodzenie z poprzedniej subskrypcji na wyższą lub niższą wersję

Załóżmy na przykład, że użytkownik zarejestrował się i otrzymałeś token zakupu X, a potem anulował subskrypcję i ponownie się zarejestrował (zanim subskrypcja wygasła) i otrzymałeś token zakupu Y, a na koniec uaktualnił subskrypcję i otrzymałeś token zakupu Z. Jeśli wywołasz ten interfejs API z tokenem zakupu Z, to pole będzie miało wartość Y. Jeśli wywołasz ten interfejs API z tokenem zakupu Y, to pole zostanie ustawione na X. Jeśli wywołasz ten interfejs API z tokenem zakupu X, to pole nie zostanie ustawione.

purchaseType

integer

Typ zakupu subskrypcji. 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)

priceChange

object (SubscriptionPriceChange)

najnowsze dostępne informacje o zmianie ceny; Ten element jest widoczny tylko wtedy, gdy wkrótce nastąpi zmiana ceny subskrypcji, która nie została jeszcze zastosowana.

Gdy subskrypcja zostanie odnowiona z nową ceną lub anulowana, nie będą zwracane żadne informacje o zmianie ceny.

profileName

string

Nazwa profilu użytkownika w momencie zakupu subskrypcji. Występuje tylko w przypadku zakupów dokonanych za pomocą „Subskrybuj z Google”.

emailAddress

string

Adres e-mail użytkownika, który został podany podczas zakupu subskrypcji. Występuje tylko w przypadku zakupów dokonanych za pomocą „Subskrybuj z Google”.

givenName

string

Imię użytkownika w momencie zakupu subskrypcji. Występuje tylko w przypadku zakupów dokonanych za pomocą „Subskrybuj z Google”.

familyName

string

Nazwisko użytkownika w momencie zakupu subskrypcji. Występuje tylko w przypadku zakupów dokonanych za pomocą „Subskrybuj z Google”.

profileId

string

Identyfikator profilu Google użytkownika w momencie zakupu subskrypcji. Występuje tylko w przypadku zakupów dokonanych za pomocą „Subskrybuj z Google”.

acknowledgementState

integer

Stan potwierdzenia produktu objętego subskrypcją. Możliwe wartości: 0. Niepotwierdzone 1. Potwierdzono

externalAccountId

string

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.

promotionType

integer

Typ promocji zastosowanej w przypadku tego zakupu. To pole jest ustawiane tylko wtedy, gdy w momencie zakupu subskrypcji zastosowano promocję. Możliwe wartości: 0. Kod jednorazowy 1. Kod Vanity

promotionCode

string

Kod promocyjny zastosowany przy tym zakupie. To pole jest ustawiane tylko wtedy, gdy w momencie zakupu subskrypcji zastosowano promocję z kodem niestandardowym.

obfuscatedExternalAccountId

string

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ł on określony za pomocą metody https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid podczas dokonywania zakupu.

obfuscatedExternalProfileId

string

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.

IntroductoryPriceInfo

Zawiera informacje o cenie początkowej subskrypcji.

Zapis JSON
{
  "introductoryPriceCurrencyCode": string,
  "introductoryPriceAmountMicros": string,
  "introductoryPricePeriod": string,
  "introductoryPriceCycles": integer
}
Pola
introductoryPriceCurrencyCode

string

Kod waluty ceny subskrypcji wprowadzającej w formacie ISO 4217. Jeśli na przykład cena jest podana w funtach brytyjskich, priceCurrencyCode to „GBP”.

introductoryPriceAmountMicros

string (int64 format)

Cena początkowa subskrypcji bez podatku. Waluta jest taka sama jak priceCurrencyCode. Cena jest wyrażona w mikrojednostkach, gdzie 1 000 000 mikrojednostek odpowiada jednej jednostce waluty. Jeśli na przykład cena subskrypcji wynosi 1, 99 PLN, wartość priceAmountMicros to 1990000.

introductoryPricePeriod

string

Okres obowiązywania ceny początkowej podany w formacie ISO 8601. Typowe wartości to m.in. „P1W” (1 tydzień), „P1M” (1 miesiąc), „P3M” (3 miesiące), „P6M” (6 miesięcy) i „P1Y” (1 rok).

introductoryPriceCycles

integer

Liczba okresów rozliczeniowych, w których obowiązuje cena początkowa.

SubscriptionCancelSurveyResult

Informacje podane przez użytkownika podczas procesu anulowania subskrypcji (ankieta z pytaniem o powód rezygnacji).

Zapis JSON
{
  "cancelSurveyReason": integer,
  "userInputCancelReason": string
}
Pola
cancelSurveyReason

integer

Powód anulowania wybrany przez użytkownika w ankiecie. Możliwe wartości: 0. Inne 1. Nie używam tej usługi zbyt często. Problemy techniczne 3. Chodzi o koszty. Udało mi się znaleźć lepszą aplikację

userInputCancelReason

string

Dostosowany powód anulowania podany przez użytkownika. Występuje tylko wtedy, gdy cancelReason ma wartość 0.

SubscriptionPriceChange

Zawiera informacje o zmianie ceny subskrypcji, które można wykorzystać do kontrolowania ścieżki użytkownika w aplikacji w przypadku zmiany ceny. Może to być prośba o potwierdzenie od użytkownika lub dostosowanie działania aplikacji w celu zwiększenia skuteczności konwersji.

Zapis JSON
{
  "newPrice": {
    object (Price)
  },
  "state": integer
}
Pola
newPrice

object (Price)

Nowa cena, po której subskrypcja zostanie odnowiona, jeśli użytkownik zaakceptuje zmianę ceny.

state

integer

Bieżący stan zmiany ceny. Możliwe wartości: 0. Oczekuje: stan oczekującej zmiany ceny, która czeka na akceptację użytkownika. W tym stanie możesz opcjonalnie poprosić użytkownika o potwierdzenie za pomocą interfejsu API w aplikacji. 1. Zaakceptowano: stan zaakceptowanej zmiany ceny, która spowoduje odnowienie subskrypcji, chyba że zostanie ona anulowana. Zmiana ceny zacznie obowiązywać w przyszłości, gdy subskrypcja zostanie odnowiona. Pamiętaj, że zmiana może nie nastąpić przy kolejnym odnowieniu subskrypcji.

Metody

acknowledge

Potwierdza zakup subskrypcji.

cancel
(deprecated)

Wycofano: zamiast tego użyj purchases.subscriptionsv2.cancel.

defer
(deprecated)

Wycofano: zamiast tego użyj purchases.subscriptionsv2.defer.

get
(deprecated)

Wycofano: zamiast tego użyj purchases.subscriptionsv2.get.

refund
(deprecated)

Wycofano: zamiast niej używaj orders.refund.

revoke
(deprecated)

Wycofano: zamiast tego użyj purchases.subscriptionsv2.revoke.

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ą API i sprawdź, czy 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 nieważnego tokena zakupu. Popraw nieprawidłową wartość pola w treści żądania lub w 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 Rozliczeń w aplikacji. Upewnij się, że metoda interfejsu API jest zgodna z typem zarządzanego produktu.
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ównocześnie. 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. Zakończ używanie tego tokena zakupu.
410 subscriptionNoLongerAvailable Zakup subskrypcji nie jest już dostępny do zapytania, ponieważ wygasł 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 będzie nadal występował, 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.