Module: NOWPayments::API::Subscriptions

Included in:
Client
Defined in:
lib/nowpayments/api/subscriptions.rb

Overview

Subscription and recurring payment endpoints

Instance Method Summary collapse

Instance Method Details

#create_subscription(plan_id:, email:) ⇒ Hash

Create email subscription POST /v1/subscriptions

Parameters:

  • plan_id (String)

    Subscription plan ID

  • email (String)

    Customer email

Returns:

  • (Hash)

    Subscription result



44
45
46
47
48
49
# File 'lib/nowpayments/api/subscriptions.rb', line 44

def create_subscription(plan_id:, email:)
  post("subscriptions", body: {
         plan_id: plan_id,
         email: email
       }).body
end

#create_subscription_plan(plan_data) ⇒ Hash

Create subscription plan POST /v1/subscriptions/plans

Parameters:

  • plan_data (Hash)

    Plan configuration

Returns:

  • (Hash)

    Created plan



18
19
20
# File 'lib/nowpayments/api/subscriptions.rb', line 18

def create_subscription_plan(plan_data)
  post("subscriptions/plans", body: plan_data).body
end

#delete_recurring_payment(subscription_id) ⇒ Hash

Delete recurring payment DELETE /v1/subscriptions/:subscription_id

Parameters:

  • subscription_id (String, Integer)

    Subscription ID

Returns:

  • (Hash)

    Deletion result



80
81
82
# File 'lib/nowpayments/api/subscriptions.rb', line 80

def delete_recurring_payment(subscription_id)
  delete("subscriptions/#{subscription_id}").body
end

#list_recurring_payments(limit: 10, offset: 0, status: nil, subscription_plan_id: nil, is_active: nil) ⇒ Hash

List recurring payments with filters GET /v1/subscriptions

Parameters:

  • limit (Integer) (defaults to: 10)

    Results per page

  • offset (Integer) (defaults to: 0)

    Offset for pagination

  • status (String, nil) (defaults to: nil)

    Filter by status (WAITING_PAY, PAID, PARTIALLY_PAID, EXPIRED)

  • subscription_plan_id (String, Integer, nil) (defaults to: nil)

    Filter by plan ID

  • is_active (Boolean, nil) (defaults to: nil)

    Filter by active status

Returns:

  • (Hash)

    List of recurring payments



59
60
61
62
63
64
65
66
# File 'lib/nowpayments/api/subscriptions.rb', line 59

def list_recurring_payments(limit: 10, offset: 0, status: nil, subscription_plan_id: nil, is_active: nil)
  params = { limit: limit, offset: offset }
  params[:status] = status if status
  params[:subscription_plan_id] = subscription_plan_id if subscription_plan_id
  params[:is_active] = is_active unless is_active.nil?

  get("subscriptions", params: params).body
end

#recurring_payment(subscription_id) ⇒ Hash

Get specific recurring payment GET /v1/subscriptions/:subscription_id

Parameters:

  • subscription_id (String, Integer)

    Subscription ID

Returns:

  • (Hash)

    Recurring payment details



72
73
74
# File 'lib/nowpayments/api/subscriptions.rb', line 72

def recurring_payment(subscription_id)
  get("subscriptions/#{subscription_id}").body
end

#subscription_payments(subscription_id) ⇒ Hash

Get subscription payments GET /v1/subscriptions/:subscription_id/payments

Parameters:

  • subscription_id (String, Integer)

    Subscription ID

Returns:

  • (Hash)

    Subscription payments



88
89
90
# File 'lib/nowpayments/api/subscriptions.rb', line 88

def subscription_payments(subscription_id)
  get("subscriptions/#{subscription_id}/payments").body
end

#subscription_plan(plan_id) ⇒ Hash

Get specific subscription plan GET /v1/subscriptions/plans/:plan_id

Parameters:

  • plan_id (String, Integer)

    Plan ID

Returns:

  • (Hash)

    Plan details



35
36
37
# File 'lib/nowpayments/api/subscriptions.rb', line 35

def subscription_plan(plan_id)
  get("subscriptions/plans/#{plan_id}").body
end

#subscription_plansHash

Get subscription plans GET /v1/subscriptions/plans

Returns:

  • (Hash)

    List of subscription plans



10
11
12
# File 'lib/nowpayments/api/subscriptions.rb', line 10

def subscription_plans
  get("subscriptions/plans").body
end

#update_subscription_plan(plan_id, plan_data) ⇒ Hash

Update subscription plan PATCH /v1/subscriptions/plans/:plan_id

Parameters:

  • plan_id (String, Integer)

    Plan ID

  • plan_data (Hash)

    Updated plan configuration

Returns:

  • (Hash)

    Updated plan details



27
28
29
# File 'lib/nowpayments/api/subscriptions.rb', line 27

def update_subscription_plan(plan_id, plan_data)
  patch("subscriptions/plans/#{plan_id}", body: plan_data).body
end