Class: GoCardlessPro::Resources::Subscription

Inherits:
Object
  • Object
show all
Defined in:
lib/gocardless_pro/resources/subscription.rb

Overview

Subscriptions create [payments](#core-endpoints-payments) according to a schedule.

### Recurrence Rules

The following rules apply when specifying recurrence:

  • The first payment must be charged within 1 year.

  • When neither ‘month` nor `day_of_month` are present, the subscription

will recur from the ‘start_date` based on the `interval_unit`.

  • If ‘month` or `day_of_month` are present, the recurrence rules will be

applied from the ‘start_date`, and the following validations apply:

| interval_unit | month | day_of_month | | :————– | :——————————————— | :————————————– | | yearly | optional (required if ‘day_of_month` provided) | optional (required if `month` provided) | | monthly | invalid | required | | weekly | invalid | invalid |

Examples:

| interval_unit | interval | month | day_of_month | valid?

|

| :————– | :——— | :—— | :————- | :————————————————- | | yearly | 1 | january | -1 | valid

|

| yearly | 1 | march | | invalid - missing ‘day_of_month` | | monthly | 6 | | 12 | valid

|

| monthly | 6 | august | 12 | invalid - ‘month` must be blank | | weekly | 2 | | | valid

|

| weekly | 2 | october | 10 | invalid - ‘month` and `day_of_month` must be blank |

### Rolling dates

When a charge date falls on a non-business day, one of two things will happen:

  • if the recurrence rule specified ‘-1` as the `day_of_month`, the charge

date will be rolled __backwards__ to the previous business day (i.e., the last working day of the month).

  • otherwise the charge date will be rolled __forwards__ to the next

business day.

Defined Under Namespace

Classes: Links

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, response = nil) ⇒ Subscription

Initialize a subscription resource instance

Parameters:

  • object (Hash)

    an object returned from the API



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/gocardless_pro/resources/subscription.rb', line 89

def initialize(object, response = nil)
  @object = object

  @amount = object['amount']
  @app_fee = object['app_fee']
  @created_at = object['created_at']
  @currency = object['currency']
  @day_of_month = object['day_of_month']
  @end_date = object['end_date']
  @id = object['id']
  @interval = object['interval']
  @interval_unit = object['interval_unit']
  @links = object['links']
  @metadata = object['metadata']
  @month = object['month']
  @name = object['name']
  @payment_reference = object['payment_reference']
  @start_date = object['start_date']
  @status = object['status']
  @upcoming_payments = object['upcoming_payments']
  @response = response
end

Instance Attribute Details

#amountObject (readonly)

Returns the value of attribute amount.



70
71
72
# File 'lib/gocardless_pro/resources/subscription.rb', line 70

def amount
  @amount
end

#app_feeObject (readonly)

Returns the value of attribute app_fee.



71
72
73
# File 'lib/gocardless_pro/resources/subscription.rb', line 71

def app_fee
  @app_fee
end

#created_atObject (readonly)

Returns the value of attribute created_at.



72
73
74
# File 'lib/gocardless_pro/resources/subscription.rb', line 72

def created_at
  @created_at
end

#currencyObject (readonly)

Returns the value of attribute currency.



73
74
75
# File 'lib/gocardless_pro/resources/subscription.rb', line 73

def currency
  @currency
end

#day_of_monthObject (readonly)

Returns the value of attribute day_of_month.



74
75
76
# File 'lib/gocardless_pro/resources/subscription.rb', line 74

def day_of_month
  @day_of_month
end

#end_dateObject (readonly)

Returns the value of attribute end_date.



75
76
77
# File 'lib/gocardless_pro/resources/subscription.rb', line 75

def end_date
  @end_date
end

#idObject (readonly)

Returns the value of attribute id.



76
77
78
# File 'lib/gocardless_pro/resources/subscription.rb', line 76

def id
  @id
end

#intervalObject (readonly)

Returns the value of attribute interval.



77
78
79
# File 'lib/gocardless_pro/resources/subscription.rb', line 77

def interval
  @interval
end

#interval_unitObject (readonly)

Returns the value of attribute interval_unit.



78
79
80
# File 'lib/gocardless_pro/resources/subscription.rb', line 78

def interval_unit
  @interval_unit
end

#metadataObject (readonly)

Returns the value of attribute metadata.



79
80
81
# File 'lib/gocardless_pro/resources/subscription.rb', line 79

def 
  @metadata
end

#monthObject (readonly)

Returns the value of attribute month.



80
81
82
# File 'lib/gocardless_pro/resources/subscription.rb', line 80

def month
  @month
end

#nameObject (readonly)

Returns the value of attribute name.



81
82
83
# File 'lib/gocardless_pro/resources/subscription.rb', line 81

def name
  @name
end

#payment_referenceObject (readonly)

Returns the value of attribute payment_reference.



82
83
84
# File 'lib/gocardless_pro/resources/subscription.rb', line 82

def payment_reference
  @payment_reference
end

#start_dateObject (readonly)

Returns the value of attribute start_date.



83
84
85
# File 'lib/gocardless_pro/resources/subscription.rb', line 83

def start_date
  @start_date
end

#statusObject (readonly)

Returns the value of attribute status.



84
85
86
# File 'lib/gocardless_pro/resources/subscription.rb', line 84

def status
  @status
end

#upcoming_paymentsObject (readonly)

Returns the value of attribute upcoming_payments.



85
86
87
# File 'lib/gocardless_pro/resources/subscription.rb', line 85

def upcoming_payments
  @upcoming_payments
end

Instance Method Details

#api_responseObject



112
113
114
# File 'lib/gocardless_pro/resources/subscription.rb', line 112

def api_response
  ApiResponse.new(@response)
end

Return the links that the resource has



117
118
119
# File 'lib/gocardless_pro/resources/subscription.rb', line 117

def links
  @subscription_links ||= Links.new(@links)
end

#to_hObject

Provides the subscription resource as a hash of all its readable attributes



122
123
124
# File 'lib/gocardless_pro/resources/subscription.rb', line 122

def to_h
  @object
end