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.

  • If ‘day_of_month` and `start_date` are not provided `start_date` will be

the [mandate](#core-endpoints-mandates)‘s `next_possible_charge_date` and the subscription will then recur based on the `interval` & `interval_unit`

  • If ‘month` or `day_of_month` are present the following validations

apply:

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

Examples:

| interval_unit | __interval__ | __month__ | day_of_month | valid?

|

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

|

| monthly | 6 | | | valid

|

| monthly | 6 | | 12 | valid

|

| weekly | 2 | | | valid

|

| yearly | 1 | march | | invalid - missing ‘day_of_month` | | yearly | 1 | | 2 | invalid - missing `month` | | monthly | 6 | august | 12 | invalid - `month` must be blank | | 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



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/gocardless_pro/resources/subscription.rb', line 97

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

  @amount = object['amount']
  @app_fee = object['app_fee']
  @count = object['count']
  @created_at = object['created_at']
  @currency = object['currency']
  @day_of_month = object['day_of_month']
  @earliest_charge_date_after_resume = object['earliest_charge_date_after_resume']
  @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']
  @retry_if_possible = object['retry_if_possible']
  @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.



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

def amount
  @amount
end

#app_feeObject (readonly)

Returns the value of attribute app_fee.



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

def app_fee
  @app_fee
end

#countObject (readonly)

Returns the value of attribute count.



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

def count
  @count
end

#created_atObject (readonly)

Returns the value of attribute created_at.



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

def created_at
  @created_at
end

#currencyObject (readonly)

Returns the value of attribute currency.



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

def currency
  @currency
end

#day_of_monthObject (readonly)

Returns the value of attribute day_of_month.



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

def day_of_month
  @day_of_month
end

#earliest_charge_date_after_resumeObject (readonly)

Returns the value of attribute earliest_charge_date_after_resume.



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

def earliest_charge_date_after_resume
  @earliest_charge_date_after_resume
end

#end_dateObject (readonly)

Returns the value of attribute end_date.



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

def end_date
  @end_date
end

#idObject (readonly)

Returns the value of attribute id.



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

def id
  @id
end

#intervalObject (readonly)

Returns the value of attribute interval.



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

def interval
  @interval
end

#interval_unitObject (readonly)

Returns the value of attribute interval_unit.



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

def interval_unit
  @interval_unit
end

#metadataObject (readonly)

Returns the value of attribute metadata.



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

def 
  @metadata
end

#monthObject (readonly)

Returns the value of attribute month.



87
88
89
# File 'lib/gocardless_pro/resources/subscription.rb', line 87

def month
  @month
end

#nameObject (readonly)

Returns the value of attribute name.



88
89
90
# File 'lib/gocardless_pro/resources/subscription.rb', line 88

def name
  @name
end

#payment_referenceObject (readonly)

Returns the value of attribute payment_reference.



89
90
91
# File 'lib/gocardless_pro/resources/subscription.rb', line 89

def payment_reference
  @payment_reference
end

#retry_if_possibleObject (readonly)

Returns the value of attribute retry_if_possible.



90
91
92
# File 'lib/gocardless_pro/resources/subscription.rb', line 90

def retry_if_possible
  @retry_if_possible
end

#start_dateObject (readonly)

Returns the value of attribute start_date.



91
92
93
# File 'lib/gocardless_pro/resources/subscription.rb', line 91

def start_date
  @start_date
end

#statusObject (readonly)

Returns the value of attribute status.



92
93
94
# File 'lib/gocardless_pro/resources/subscription.rb', line 92

def status
  @status
end

#upcoming_paymentsObject (readonly)

Returns the value of attribute upcoming_payments.



93
94
95
# File 'lib/gocardless_pro/resources/subscription.rb', line 93

def upcoming_payments
  @upcoming_payments
end

Instance Method Details

#api_responseObject



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

def api_response
  ApiResponse.new(@response)
end

Return the links that the resource has



128
129
130
# File 'lib/gocardless_pro/resources/subscription.rb', line 128

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

#to_hObject

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



133
134
135
# File 'lib/gocardless_pro/resources/subscription.rb', line 133

def to_h
  @object
end