# Google Play Developer API . purchases . subscriptions

## Instance Methods

Cancels a user's subscription purchase. The subscription remains valid until its expiration time.

Defers a user's subscription purchase until a specified future expiration time.

Checks whether a user's subscription purchase is valid and returns its expiry time.

Refunds a user's subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.

Refunds and immediately revokes a user's subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.

### Method Details

`cancel(packageName, subscriptionId, token)`

    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)

`defer(packageName, subscriptionId, token, body)`

    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 for the subscription in milliseconds since Epoch. The given time must be after 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.
      }

`get(packageName, subscriptionId, token)`

    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.
        "expiryTimeMillis": "A String", # Time at which the subscription will expire, in milliseconds since Epoch.
        "kind": "androidpublisher#subscriptionPurchase", # This kind represents a subscriptionPurchase object in the androidpublisher service.
        "autoRenewing": True or False, # Whether the subscription will automatically be renewed when it reaches its current expiry time.
        "startTimeMillis": "A String", # Time at which the subscription was granted, in milliseconds since Epoch.
      }

`refund(packageName, subscriptionId, token)`

    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)

`revoke(packageName, subscriptionId, token)`

    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)