paddle-sdk icon indicating copy to clipboard operation
paddle-sdk copied to clipboard

Update subscription price

Open Santinell opened this issue 4 years ago • 2 comments

What do you think about adding feature for updating subscription price?

This is how it could be:

 /**
   * Update subscription price
   *
   * @method
   * @param {number} subscriptionID
   * @param {number} price
   * @param {string} currency
   * @param {boolean} immediately
   * @returns {Promise}
   * @fulfill {object} - The result of the operation
   *
   * @example
   * const result = await client.updateSubscriptionPrice(123, 44, 'USD');
   */
  updateSubscriptionPrice (subscriptionID, price, currency, immediately = true) {
    return this._request('/subscription/users/update', {
      body: {
        subscription_id: subscriptionID,
	bill_immediately: immediately,
	prorate: immediately,
      	quantity: 1,
      	recurring_price: price,
      	currency
      }
    });
  }

Santinell avatar Dec 16 '20 06:12 Santinell

Please submit this code as a PR.

avaly avatar Dec 16 '20 07:12 avaly

By the way - we can put extra options to separate object for both methods updateSubscriptionPrice and updateSubscriptionPlan Like this:

  updateSubscriptionPlan (subscriptionID, planID, options = {prorate: false}) {
    // for backward compability:
    if (typeof options === "boolean") {
      options = {prorate: options};
    }
    return this._request('/subscription/users/update', {
      body: {
        subscription_id: subscriptionID,
        plan_id: planID,
        ...options
      }
    });
  }

and

  updateSubscriptionPrice (subscriptionID, price, currency, options) {
    return this._request('/subscription/users/update', {
      body: {
        subscription_id: subscriptionID,
      	recurring_price: price,
      	currency,
	...options
      }
    });
  }

Santinell avatar Dec 16 '20 07:12 Santinell