<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="androidpublisher_v2.html">Google Play Developer API</a> . <a href="androidpublisher_v2.purchases.html">purchases</a> . <a href="androidpublisher_v2.purchases.subscriptions.html">subscriptions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(packageName, subscriptionId, token)</a></code></p>
<p class="firstline">Cancels a user's subscription purchase. The subscription remains valid until its expiration time.</p>
<p class="toc_element">
  <code><a href="#defer">defer(packageName, subscriptionId, token, body)</a></code></p>
<p class="firstline">Defers a user's subscription purchase until a specified future expiration time.</p>
<p class="toc_element">
  <code><a href="#get">get(packageName, subscriptionId, token)</a></code></p>
<p class="firstline">Checks whether a user's subscription purchase is valid and returns its expiry time.</p>
<p class="toc_element">
  <code><a href="#refund">refund(packageName, subscriptionId, token)</a></code></p>
<p class="firstline">Refunds a user's subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.</p>
<p class="toc_element">
  <code><a href="#revoke">revoke(packageName, subscriptionId, token)</a></code></p>
<p class="firstline">Refunds and immediately revokes a user's subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(packageName, subscriptionId, token)</code>
  <pre>Cancels a user's subscription purchase. The subscription remains valid until its expiration time.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, 'com.some.thing'). (required)
  subscriptionId: string, The purchased subscription ID (for example, 'monthly001'). (required)
  token: string, The token provided to the user's device when the subscription was purchased. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="defer">defer(packageName, subscriptionId, token, body)</code>
  <pre>Defers a user's subscription purchase until a specified future expiration time.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, 'com.some.thing'). (required)
  subscriptionId: string, The purchased subscription ID (for example, 'monthly001'). (required)
  token: string, The token provided to the user's device when the subscription was purchased. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "deferralInfo": { # A SubscriptionDeferralInfo contains the data needed to defer a subscription purchase to a future expiry time. # The information about the new desired expiry time for the subscription.
      "expectedExpiryTimeMillis": "A String", # The expected expiry time for the subscription. If the current expiry time for the subscription is not the value specified here, the deferral will not occur.
      "desiredExpiryTimeMillis": "A String", # The desired next expiry time to assign to the subscription, in milliseconds since the Epoch. The given time must be later/greater than the current expiry time for the subscription.
    },
  }


Returns:
  An object of the form:

    {
    "newExpiryTimeMillis": "A String", # The new expiry time for the subscription in milliseconds since the Epoch.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(packageName, subscriptionId, token)</code>
  <pre>Checks whether a user's subscription purchase is valid and returns its expiry time.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, 'com.some.thing'). (required)
  subscriptionId: string, The purchased subscription ID (for example, 'monthly001'). (required)
  token: string, The token provided to the user's device when the subscription was purchased. (required)

Returns:
  An object of the form:

    { # A SubscriptionPurchase resource indicates the status of a user's subscription purchase.
    "orderId": "A String", # The order id of the latest recurring order associated with the purchase of the subscription.
    "kind": "androidpublisher#subscriptionPurchase", # This kind represents a subscriptionPurchase object in the androidpublisher service.
    "userCancellationTimeMillis": "A String", # The time at which the subscription was canceled by the user, in milliseconds since the epoch. Only present if cancelReason is 0.
    "countryCode": "A String", # ISO 3166-1 alpha-2 billing country/region code of the user at the time the subscription was granted.
    "developerPayload": "A String", # A developer-specified string that contains supplemental information about an order.
    "priceChange": { # Contains the price change information for a subscription that can be used to control the user journey for the price change in the app. This can be in the form of seeking confirmation from the user or tailoring the experience for a successful conversion. # The latest price change information available. This is present only when there is an upcoming price change for the subscription yet to be applied.
        #
        # Once the subscription renews with the new price or the subscription is canceled, no price change information will be returned.
      "state": 42, # The current state of the price change. Possible values are:
          # - Outstanding: State for a pending price change waiting for the user to agree. In this state, you can optionally seek confirmation from the user using the In-App API.
          # - Accepted: State for an accepted price change that the subscription will renew with unless it's canceled. The price change takes effect on a future date when the subscription renews. Note that the change might not occur when the subscription is renewed next.
      "newPrice": { # The new price the subscription will renew with if the price change is accepted by the user.
        "currency": "A String", # 3 letter Currency code, as defined by ISO 4217.
        "priceMicros": "A String", # The price in millionths of the currency base unit represented as a string.
      },
    },
    "familyName": "A String", # The family name of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.
    "autoRenewing": True or False, # Whether the subscription will automatically be renewed when it reaches its current expiry time.
    "paymentState": 42, # The payment state of the subscription. Possible values are:
        # - Payment pending
        # - Payment received
        # - Free trial
        # - Pending deferred upgrade/downgrade
    "startTimeMillis": "A String", # Time at which the subscription was granted, in milliseconds since the Epoch.
    "purchaseType": 42, # The type of purchase of the subscription. This field is only set if this purchase was not made using the standard in-app billing flow. Possible values are:
        # - Test (i.e. purchased from a license testing account)
    "priceCurrencyCode": "A String", # ISO 4217 currency code for the subscription price. For example, if the price is specified in British pounds sterling, price_currency_code is "GBP".
    "emailAddress": "A String", # The email address of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.
    "cancelSurveyResult": { # Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey). # Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey).
      "cancelSurveyReason": 42, # The cancellation reason the user chose in the survey. Possible values are:
          # - Other
          # - I don't use this service enough
          # - Technical issues
          # - Cost-related reasons
          # - I found a better app
      "userInputCancelReason": "A String", # The customized input cancel reason from the user. Only present when cancelReason is 0.
    },
    "cancelReason": 42, # The reason why a subscription was canceled or is not auto-renewing. Possible values are:
        # - User canceled the subscription
        # - Subscription was canceled by the system, for example because of a billing problem
        # - Subscription was replaced with a new subscription
        # - Subscription was canceled by the developer
    "profileId": "A String", # The Google profile id of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.
    "profileName": "A String", # The profile name of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.
    "expiryTimeMillis": "A String", # Time at which the subscription will expire, in milliseconds since the Epoch.
    "linkedPurchaseToken": "A String", # The purchase token of the originating purchase if this subscription is one of the following:
        # - Re-signup of a canceled but non-lapsed subscription
        # - Upgrade/downgrade from a previous subscription  For example, suppose a user originally signs up and you receive purchase token X, then the user cancels and goes through the resignup flow (before their subscription lapses) and you receive purchase token Y, and finally the user upgrades their subscription and you receive purchase token Z. If you call this API with purchase token Z, this field will be set to Y. If you call this API with purchase token Y, this field will be set to X. If you call this API with purchase token X, this field will not be set.
    "givenName": "A String", # The given name of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.
    "priceAmountMicros": "A String", # Price of the subscription, not including tax. Price is expressed in micro-units, where 1,000,000 micro-units represents one unit of the currency. For example, if the subscription price is €1.99, price_amount_micros is 1990000.
  }</pre>
</div>

<div class="method">
    <code class="details" id="refund">refund(packageName, subscriptionId, token)</code>
  <pre>Refunds a user's subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, 'com.some.thing'). (required)
  subscriptionId: string, The purchased subscription ID (for example, 'monthly001'). (required)
  token: string, The token provided to the user's device when the subscription was purchased. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="revoke">revoke(packageName, subscriptionId, token)</code>
  <pre>Refunds and immediately revokes a user's subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, 'com.some.thing'). (required)
  subscriptionId: string, The purchased subscription ID (for example, 'monthly001'). (required)
  token: string, The token provided to the user's device when the subscription was purchased. (required)
</pre>
</div>

</body></html>