gocardless_pro 2.29.0 → 2.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gocardless_pro/client.rb +1 -1
  3. data/lib/gocardless_pro/resources/billing_request.rb +2 -0
  4. data/lib/gocardless_pro/resources/billing_request_flow.rb +4 -0
  5. data/lib/gocardless_pro/resources/block.rb +19 -9
  6. data/lib/gocardless_pro/resources/institution.rb +5 -1
  7. data/lib/gocardless_pro/resources/payer_authorisation.rb +4 -4
  8. data/lib/gocardless_pro/resources/redirect_flow.rb +4 -0
  9. data/lib/gocardless_pro/services/billing_request_flows_service.rb +1 -1
  10. data/lib/gocardless_pro/services/billing_requests_service.rb +40 -2
  11. data/lib/gocardless_pro/services/institutions_service.rb +1 -1
  12. data/lib/gocardless_pro/version.rb +1 -1
  13. data/spec/resources/billing_request_flow_spec.rb +14 -0
  14. data/spec/resources/billing_request_spec.rb +108 -0
  15. data/spec/resources/block_spec.rb +18 -1
  16. data/spec/resources/creditor_bank_account_spec.rb +2 -0
  17. data/spec/resources/customer_bank_account_spec.rb +2 -0
  18. data/spec/resources/customer_notification_spec.rb +2 -0
  19. data/spec/resources/customer_spec.rb +2 -0
  20. data/spec/resources/instalment_schedule_spec.rb +2 -0
  21. data/spec/resources/mandate_import_spec.rb +4 -0
  22. data/spec/resources/mandate_spec.rb +4 -0
  23. data/spec/resources/payer_authorisation_spec.rb +4 -0
  24. data/spec/resources/payment_spec.rb +4 -0
  25. data/spec/resources/redirect_flow_spec.rb +2 -0
  26. data/spec/resources/scenario_simulator_spec.rb +2 -0
  27. data/spec/resources/subscription_spec.rb +6 -0
  28. data/spec/resources/webhook_spec.rb +2 -0
  29. data/spec/services/billing_request_flows_service_spec.rb +14 -0
  30. data/spec/services/billing_requests_service_spec.rb +123 -0
  31. data/spec/services/blocks_service_spec.rb +18 -1
  32. data/spec/services/creditor_bank_accounts_service_spec.rb +2 -0
  33. data/spec/services/customer_bank_accounts_service_spec.rb +2 -0
  34. data/spec/services/customer_notifications_service_spec.rb +2 -0
  35. data/spec/services/customers_service_spec.rb +2 -0
  36. data/spec/services/instalment_schedules_service_spec.rb +2 -0
  37. data/spec/services/mandate_imports_service_spec.rb +4 -0
  38. data/spec/services/mandates_service_spec.rb +4 -0
  39. data/spec/services/payer_authorisations_service_spec.rb +4 -0
  40. data/spec/services/payments_service_spec.rb +4 -0
  41. data/spec/services/redirect_flows_service_spec.rb +2 -0
  42. data/spec/services/scenario_simulators_service_spec.rb +2 -0
  43. data/spec/services/subscriptions_service_spec.rb +6 -0
  44. data/spec/services/webhooks_service_spec.rb +2 -0
  45. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae7ce2e7f276bbb9d36b64093e6be341e1f76325a7ced35710e8276360c2df22
4
- data.tar.gz: 554e6c6c947c94c76d250fafabdc3867b65ca218269ce70395fe5a0079fdb5e5
3
+ metadata.gz: 1591576f071daabb20a04e9e91a7e802be0efed1b3e71910e33c35335589cdf4
4
+ data.tar.gz: 763c87329cc80eba691ae417c58b3344abbc7ffc48fe554be85fedcc24c1e80d
5
5
  SHA512:
6
- metadata.gz: fb5865c593f89c21fe7b1d9ea930c2683286753f9635dcb0e70350ac4fd5af02345a6c472c8b9940484242f6f39cfd05fcdbca0c5a96c3e7cad66f2bf5cf42e6
7
- data.tar.gz: 55605f88d457f5a0e8bb3445b9a796dbe1332a94eb3c1ab86318c4bce49d4ab88fcaf6a27ed67c01e4195f6b73eb40ede88d86f3f5998b09b348eb5e5a7a26d0
6
+ metadata.gz: 7b8552085fb1ec811f6398ed9f52990853a48c4836e8f6092273366dcd0a9e1f27e4399cc8489322a726e94153dd221e1a4cd20b68f72a0c371d4b62984ac0bb
7
+ data.tar.gz: ec4ab730899aad19e7a670b5da2378e651db3bb1e88734e9794967ef33ac764e973b70e7c2a61613065a8284a1cf8afbf6879e8c7eaa13cda53a3176527be200
@@ -198,7 +198,7 @@ module GoCardlessPro
198
198
  'User-Agent' => user_agent.to_s,
199
199
  'Content-Type' => 'application/json',
200
200
  'GoCardless-Client-Library' => 'gocardless-pro-ruby',
201
- 'GoCardless-Client-Version' => '2.29.0',
201
+ 'GoCardless-Client-Version' => '2.30.0',
202
202
  },
203
203
  }
204
204
  end
@@ -24,6 +24,7 @@ module GoCardlessPro
24
24
  class BillingRequest
25
25
  attr_reader :actions
26
26
  attr_reader :created_at
27
+ attr_reader :fallback_enabled
27
28
  attr_reader :id
28
29
  attr_reader :mandate_request
29
30
  attr_reader :metadata
@@ -38,6 +39,7 @@ module GoCardlessPro
38
39
 
39
40
  @actions = object['actions']
40
41
  @created_at = object['created_at']
42
+ @fallback_enabled = object['fallback_enabled']
41
43
  @id = object['id']
42
44
  @links = object['links']
43
45
  @mandate_request = object['mandate_request']
@@ -19,12 +19,14 @@ module GoCardlessPro
19
19
  attr_reader :authorisation_url
20
20
  attr_reader :auto_fulfil
21
21
  attr_reader :created_at
22
+ attr_reader :exit_uri
22
23
  attr_reader :expires_at
23
24
  attr_reader :id
24
25
  attr_reader :lock_bank_account
25
26
  attr_reader :lock_customer_details
26
27
  attr_reader :redirect_uri
27
28
  attr_reader :session_token
29
+ attr_reader :show_redirect_buttons
28
30
 
29
31
  # Initialize a billing_request_flow resource instance
30
32
  # @param object [Hash] an object returned from the API
@@ -34,6 +36,7 @@ module GoCardlessPro
34
36
  @authorisation_url = object['authorisation_url']
35
37
  @auto_fulfil = object['auto_fulfil']
36
38
  @created_at = object['created_at']
39
+ @exit_uri = object['exit_uri']
37
40
  @expires_at = object['expires_at']
38
41
  @id = object['id']
39
42
  @links = object['links']
@@ -41,6 +44,7 @@ module GoCardlessPro
41
44
  @lock_customer_details = object['lock_customer_details']
42
45
  @redirect_uri = object['redirect_uri']
43
46
  @session_token = object['session_token']
47
+ @show_redirect_buttons = object['show_redirect_buttons']
44
48
  @response = response
45
49
  end
46
50
 
@@ -12,17 +12,27 @@ module GoCardlessPro
12
12
  module Resources
13
13
  # Represents an instance of a block resource returned from the API
14
14
 
15
- # A block object is a simple rule, when matched, pushes a newly created
16
- # mandate to a blocked state. These details can be an exact match, like a
17
- # bank account
18
- # or an email, or a more generic match such as an email domain. New block
19
- # types may be added
20
- # over time. Payments and subscriptions can't be created against mandates in
21
- # blocked state.
15
+ # Blocks are created to prevent certain customer details from being used
16
+ # when creating
17
+ # mandates.
18
+ #
19
+ # The details used to create blocks can be exact matches, like a bank
20
+ # account or an email,
21
+ # or a more generic match such as an email domain. New block types may be
22
+ # added over time.
23
+ #
24
+ # A block object is in essence a simple rule that is used to match against
25
+ # details in a
26
+ # newly created mandate. If there is a successful match then the mandate is
27
+ # transitioned
28
+ # to a "blocked" state.
29
+ #
30
+ # Payments and subscriptions cannot be created against a mandate in blocked
31
+ # state.
32
+ #
33
+ # A mandate can never be transitioned out of the blocked state.
22
34
  #
23
35
  # <p class="notice">
24
- # Client libraries have not yet been updated for this API but will be
25
- # released soon.
26
36
  # This API is currently only available for approved integrators - please
27
37
  # <a href="mailto:help@gocardless.com">get in touch</a> if you would like to
28
38
  # use this API.
@@ -13,7 +13,11 @@ module GoCardlessPro
13
13
  # Represents an instance of a institution resource returned from the API
14
14
 
15
15
  # Institutions that are supported when creating [Bank
16
- # Authorisations](#billing-requests-bank-authorisations).
16
+ # Authorisations](#billing-requests-bank-authorisations) for a particular
17
+ # country or purpose.
18
+ #
19
+ # Not all institutions support both Payment Initiation (PIS) and Account
20
+ # Information (AIS) services.
17
21
  class Institution
18
22
  attr_reader :country_code
19
23
  attr_reader :icon_url
@@ -13,12 +13,12 @@ module GoCardlessPro
13
13
  # Represents an instance of a payer_authorisation resource returned from the API
14
14
 
15
15
  # <p class="restricted-notice">
16
- # Payer Authorisations is deprecated in favour of
16
+ # Don't use Payer Authorisations for new integrations.
17
+ # It is deprecated in favour of
17
18
  # <a
18
19
  # href="https://developer.gocardless.com/getting-started/billing-requests/overview/">
19
- # Billing Requests</a>. Please consider using Billing Requests to build
20
- # any
21
- # future integrations.
20
+ # Billing Requests</a>. Use Billing Requests to build any future
21
+ # integrations.
22
22
  # </p>
23
23
  #
24
24
  # Payer Authorisation resource acts as a wrapper for creating customer, bank
@@ -94,6 +94,10 @@ module GoCardlessPro
94
94
  @links = links || {}
95
95
  end
96
96
 
97
+ def billing_request
98
+ @links['billing_request']
99
+ end
100
+
97
101
  def creditor
98
102
  @links['creditor']
99
103
  end
@@ -34,7 +34,7 @@ module GoCardlessPro
34
34
  # integrations that manipulate the flow.
35
35
  # Example URL: /billing_request_flows/:identity/actions/initialise
36
36
  #
37
- # @param identity # Unique identifier, beginning with "BRQ".
37
+ # @param identity # Unique identifier, beginning with "BRF".
38
38
  # @param options [Hash] parameters as a hash, under a params key.
39
39
  def initialise(identity, options = {})
40
40
  path = sub_url('/billing_request_flows/:identity/actions/initialise', 'identity' => identity)
@@ -11,7 +11,7 @@ module GoCardlessPro
11
11
  # Service for making requests to the BillingRequest endpoints
12
12
  class BillingRequestsService < BaseService
13
13
  # Returns a [cursor-paginated](#api-usage-cursor-pagination) list of your
14
- # billing_requests.
14
+ # billing requests.
15
15
  # Example URL: /billing_requests
16
16
  # @param options [Hash] parameters as a hash, under a params key.
17
17
  def list(options = {})
@@ -218,7 +218,7 @@ module GoCardlessPro
218
218
  Resources::BillingRequest.new(unenvelope_body(response.body), response)
219
219
  end
220
220
 
221
- # This is needed when you have mandate_request. As a scheme compliance rule we
221
+ # This is needed when you have a mandate request. As a scheme compliance rule we
222
222
  # are required to
223
223
  # allow the payer to crosscheck the details entered by them and confirm it.
224
224
  # Example URL: /billing_requests/:identity/actions/confirm_payer_details
@@ -334,6 +334,44 @@ module GoCardlessPro
334
334
  Resources::BillingRequest.new(unenvelope_body(response.body), response)
335
335
  end
336
336
 
337
+ # Triggers a fallback from the open-banking flow to direct debit. Note, the
338
+ # billing request must have fallback enabled.
339
+ # Example URL: /billing_requests/:identity/actions/fallback
340
+ #
341
+ # @param identity # Unique identifier, beginning with "BRQ".
342
+ # @param options [Hash] parameters as a hash, under a params key.
343
+ def fallback(identity, options = {})
344
+ path = sub_url('/billing_requests/:identity/actions/fallback', 'identity' => identity)
345
+
346
+ params = options.delete(:params) || {}
347
+ options[:params] = {}
348
+ options[:params]['data'] = params
349
+
350
+ options[:retry_failures] = false
351
+
352
+ begin
353
+ response = make_request(:post, path, options)
354
+
355
+ # Response doesn't raise any errors until #body is called
356
+ response.tap(&:body)
357
+ rescue InvalidStateError => e
358
+ if e.idempotent_creation_conflict?
359
+ case @api_service.on_idempotency_conflict
360
+ when :raise
361
+ raise IdempotencyConflict, e.error
362
+ when :fetch
363
+ return get(e.conflicting_resource_id)
364
+ end
365
+ end
366
+
367
+ raise e
368
+ end
369
+
370
+ return if response.body.nil?
371
+
372
+ Resources::BillingRequest.new(unenvelope_body(response.body), response)
373
+ end
374
+
337
375
  private
338
376
 
339
377
  # Unenvelope the response of the body using the service's `envelope_key`
@@ -10,7 +10,7 @@ module GoCardlessPro
10
10
  module Services
11
11
  # Service for making requests to the Institution endpoints
12
12
  class InstitutionsService < BaseService
13
- # Returns a list of all supported institutions.
13
+ # Returns a list of supported institutions.
14
14
  # Example URL: /institutions
15
15
  # @param options [Hash] parameters as a hash, under a params key.
16
16
  def list(options = {})
@@ -4,5 +4,5 @@ end
4
4
 
5
5
  module GoCardlessPro
6
6
  # Current version of the GC gem
7
- VERSION = '2.29.0'.freeze
7
+ VERSION = '2.30.0'.freeze
8
8
  end
@@ -18,6 +18,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
18
18
  'authorisation_url' => 'authorisation_url-input',
19
19
  'auto_fulfil' => 'auto_fulfil-input',
20
20
  'created_at' => 'created_at-input',
21
+ 'exit_uri' => 'exit_uri-input',
21
22
  'expires_at' => 'expires_at-input',
22
23
  'id' => 'id-input',
23
24
  'links' => 'links-input',
@@ -25,6 +26,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
25
26
  'lock_customer_details' => 'lock_customer_details-input',
26
27
  'redirect_uri' => 'redirect_uri-input',
27
28
  'session_token' => 'session_token-input',
29
+ 'show_redirect_buttons' => 'show_redirect_buttons-input',
28
30
  }
29
31
  end
30
32
 
@@ -37,6 +39,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
37
39
  'authorisation_url' => 'authorisation_url-input',
38
40
  'auto_fulfil' => 'auto_fulfil-input',
39
41
  'created_at' => 'created_at-input',
42
+ 'exit_uri' => 'exit_uri-input',
40
43
  'expires_at' => 'expires_at-input',
41
44
  'id' => 'id-input',
42
45
  'links' => 'links-input',
@@ -44,6 +47,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
44
47
  'lock_customer_details' => 'lock_customer_details-input',
45
48
  'redirect_uri' => 'redirect_uri-input',
46
49
  'session_token' => 'session_token-input',
50
+ 'show_redirect_buttons' => 'show_redirect_buttons-input',
47
51
  },
48
52
  }
49
53
  ).
@@ -56,6 +60,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
56
60
  'authorisation_url' => 'authorisation_url-input',
57
61
  'auto_fulfil' => 'auto_fulfil-input',
58
62
  'created_at' => 'created_at-input',
63
+ 'exit_uri' => 'exit_uri-input',
59
64
  'expires_at' => 'expires_at-input',
60
65
  'id' => 'id-input',
61
66
  'links' => 'links-input',
@@ -63,6 +68,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
63
68
  'lock_customer_details' => 'lock_customer_details-input',
64
69
  'redirect_uri' => 'redirect_uri-input',
65
70
  'session_token' => 'session_token-input',
71
+ 'show_redirect_buttons' => 'show_redirect_buttons-input',
66
72
  },
67
73
 
68
74
  }.to_json,
@@ -108,6 +114,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
108
114
  'authorisation_url' => 'authorisation_url-input',
109
115
  'auto_fulfil' => 'auto_fulfil-input',
110
116
  'created_at' => 'created_at-input',
117
+ 'exit_uri' => 'exit_uri-input',
111
118
  'expires_at' => 'expires_at-input',
112
119
  'id' => 'id-input',
113
120
  'links' => 'links-input',
@@ -115,6 +122,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
115
122
  'lock_customer_details' => 'lock_customer_details-input',
116
123
  'redirect_uri' => 'redirect_uri-input',
117
124
  'session_token' => 'session_token-input',
125
+ 'show_redirect_buttons' => 'show_redirect_buttons-input',
118
126
  }
119
127
  end
120
128
 
@@ -156,12 +164,14 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
156
164
  # /billing_request_flows/%v/actions/initialise
157
165
  stub_url = '/billing_request_flows/:identity/actions/initialise'.gsub(':identity', resource_id)
158
166
  stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
167
+
159
168
  body: {
160
169
  'billing_request_flows' => {
161
170
 
162
171
  'authorisation_url' => 'authorisation_url-input',
163
172
  'auto_fulfil' => 'auto_fulfil-input',
164
173
  'created_at' => 'created_at-input',
174
+ 'exit_uri' => 'exit_uri-input',
165
175
  'expires_at' => 'expires_at-input',
166
176
  'id' => 'id-input',
167
177
  'links' => 'links-input',
@@ -169,8 +179,10 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
169
179
  'lock_customer_details' => 'lock_customer_details-input',
170
180
  'redirect_uri' => 'redirect_uri-input',
171
181
  'session_token' => 'session_token-input',
182
+ 'show_redirect_buttons' => 'show_redirect_buttons-input',
172
183
  },
173
184
  }.to_json,
185
+
174
186
  headers: response_headers
175
187
  )
176
188
  end
@@ -202,6 +214,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
202
214
  'authorisation_url' => 'authorisation_url-input',
203
215
  'auto_fulfil' => 'auto_fulfil-input',
204
216
  'created_at' => 'created_at-input',
217
+ 'exit_uri' => 'exit_uri-input',
205
218
  'expires_at' => 'expires_at-input',
206
219
  'id' => 'id-input',
207
220
  'links' => 'links-input',
@@ -209,6 +222,7 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
209
222
  'lock_customer_details' => 'lock_customer_details-input',
210
223
  'redirect_uri' => 'redirect_uri-input',
211
224
  'session_token' => 'session_token-input',
225
+ 'show_redirect_buttons' => 'show_redirect_buttons-input',
212
226
  },
213
227
  }.to_json,
214
228
  headers: response_headers