gocardless_pro 4.3.0 → 4.5.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.
- checksums.yaml +4 -4
- data/README.md +16 -0
- data/lib/gocardless_pro/client.rb +11 -1
- data/lib/gocardless_pro/list_response.rb +2 -2
- data/lib/gocardless_pro/resources/billing_request.rb +7 -8
- data/lib/gocardless_pro/resources/billing_request_with_action.rb +4 -4
- data/lib/gocardless_pro/resources/block.rb +4 -6
- data/lib/gocardless_pro/resources/creditor.rb +6 -4
- data/lib/gocardless_pro/resources/creditor_bank_account.rb +6 -5
- data/lib/gocardless_pro/resources/customer.rb +4 -3
- data/lib/gocardless_pro/resources/customer_bank_account.rb +13 -8
- data/lib/gocardless_pro/resources/customer_notification.rb +3 -4
- data/lib/gocardless_pro/resources/event.rb +13 -2
- data/lib/gocardless_pro/resources/export.rb +2 -0
- data/lib/gocardless_pro/resources/instalment_schedule.rb +0 -1
- data/lib/gocardless_pro/resources/institution.rb +5 -3
- data/lib/gocardless_pro/resources/logo.rb +2 -1
- data/lib/gocardless_pro/resources/mandate.rb +7 -4
- data/lib/gocardless_pro/resources/mandate_import.rb +25 -21
- data/lib/gocardless_pro/resources/mandate_import_entry.rb +13 -16
- data/lib/gocardless_pro/resources/mandate_pdf.rb +3 -3
- data/lib/gocardless_pro/resources/negative_balance_limit.rb +0 -1
- data/lib/gocardless_pro/resources/outbound_payment.rb +12 -5
- data/lib/gocardless_pro/resources/outbound_payment_import.rb +81 -0
- data/lib/gocardless_pro/resources/outbound_payment_import_entry.rb +77 -0
- data/lib/gocardless_pro/resources/payer_authorisation.rb +30 -34
- data/lib/gocardless_pro/resources/payment.rb +11 -6
- data/lib/gocardless_pro/resources/payment_account.rb +2 -1
- data/lib/gocardless_pro/resources/payment_account_transaction.rb +2 -1
- data/lib/gocardless_pro/resources/payout.rb +7 -6
- data/lib/gocardless_pro/resources/payout_item.rb +1 -2
- data/lib/gocardless_pro/resources/redirect_flow.rb +34 -23
- data/lib/gocardless_pro/resources/refund.rb +8 -6
- data/lib/gocardless_pro/resources/scheme_identifier.rb +0 -1
- data/lib/gocardless_pro/resources/subscription.rb +17 -14
- data/lib/gocardless_pro/resources/tax_rate.rb +2 -2
- data/lib/gocardless_pro/resources/verification_detail.rb +10 -6
- data/lib/gocardless_pro/services/balances_service.rb +11 -3
- data/lib/gocardless_pro/services/bank_account_details_service.rb +10 -4
- data/lib/gocardless_pro/services/bank_account_holder_verifications_service.rb +10 -4
- data/lib/gocardless_pro/services/bank_authorisations_service.rb +7 -1
- data/lib/gocardless_pro/services/bank_details_lookups_service.rb +23 -11
- data/lib/gocardless_pro/services/billing_request_flows_service.rb +7 -1
- data/lib/gocardless_pro/services/billing_request_templates_service.rb +10 -3
- data/lib/gocardless_pro/services/billing_request_with_actions_service.rb +7 -1
- data/lib/gocardless_pro/services/billing_requests_service.rb +25 -16
- data/lib/gocardless_pro/services/blocks_service.rb +10 -3
- data/lib/gocardless_pro/services/creditor_bank_accounts_service.rb +10 -3
- data/lib/gocardless_pro/services/creditors_service.rb +10 -3
- data/lib/gocardless_pro/services/currency_exchange_rates_service.rb +10 -3
- data/lib/gocardless_pro/services/customer_bank_accounts_service.rb +20 -10
- data/lib/gocardless_pro/services/customer_notifications_service.rb +7 -2
- data/lib/gocardless_pro/services/customers_service.rb +11 -5
- data/lib/gocardless_pro/services/events_service.rb +15 -3
- data/lib/gocardless_pro/services/exports_service.rb +7 -1
- data/lib/gocardless_pro/services/funds_availabilities_service.rb +7 -1
- data/lib/gocardless_pro/services/instalment_schedules_service.rb +15 -7
- data/lib/gocardless_pro/services/institutions_service.rb +7 -1
- data/lib/gocardless_pro/services/logos_service.rb +9 -3
- data/lib/gocardless_pro/services/mandate_import_entries_service.rb +10 -4
- data/lib/gocardless_pro/services/mandate_imports_service.rb +10 -2
- data/lib/gocardless_pro/services/mandate_pdfs_service.rb +11 -5
- data/lib/gocardless_pro/services/mandates_service.rb +16 -9
- data/lib/gocardless_pro/services/negative_balance_limits_service.rb +10 -3
- data/lib/gocardless_pro/services/outbound_payment_import_entries_service.rb +64 -0
- data/lib/gocardless_pro/services/outbound_payment_imports_service.rb +118 -0
- data/lib/gocardless_pro/services/outbound_payments_service.rb +11 -4
- data/lib/gocardless_pro/services/payer_authorisations_service.rb +11 -8
- data/lib/gocardless_pro/services/payer_themes_service.rb +7 -1
- data/lib/gocardless_pro/services/payment_account_transactions_service.rb +34 -7
- data/lib/gocardless_pro/services/payment_accounts_service.rb +10 -3
- data/lib/gocardless_pro/services/payments_service.rb +22 -14
- data/lib/gocardless_pro/services/payout_items_service.rb +12 -7
- data/lib/gocardless_pro/services/payouts_service.rb +12 -5
- data/lib/gocardless_pro/services/redirect_flows_service.rb +15 -5
- data/lib/gocardless_pro/services/refunds_service.rb +15 -10
- data/lib/gocardless_pro/services/scenario_simulators_service.rb +85 -82
- data/lib/gocardless_pro/services/scheme_identifiers_service.rb +13 -7
- data/lib/gocardless_pro/services/subscriptions_service.rb +48 -38
- data/lib/gocardless_pro/services/tax_rates_service.rb +10 -3
- data/lib/gocardless_pro/services/transferred_mandates_service.rb +7 -1
- data/lib/gocardless_pro/services/verification_details_service.rb +7 -1
- data/lib/gocardless_pro/services/webhooks_service.rb +10 -3
- data/lib/gocardless_pro/version.rb +1 -1
- data/lib/gocardless_pro/webhook.rb +45 -0
- data/lib/gocardless_pro.rb +6 -0
- metadata +15 -15
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
require 'openssl'
|
|
2
2
|
|
|
3
3
|
module GoCardlessPro
|
|
4
|
+
# Represents the result of parsing a webhook, containing both the events
|
|
5
|
+
# and the webhook metadata.
|
|
6
|
+
class WebhookParseResult
|
|
7
|
+
attr_reader :events
|
|
8
|
+
attr_reader :webhook_id
|
|
9
|
+
|
|
10
|
+
def initialize(events, webhook_id)
|
|
11
|
+
@events = events
|
|
12
|
+
@webhook_id = webhook_id
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
4
16
|
class Webhook
|
|
5
17
|
class InvalidSignatureError < StandardError; end
|
|
6
18
|
|
|
@@ -38,6 +50,39 @@ module GoCardlessPro
|
|
|
38
50
|
events.map { |event| Resources::Event.new(event) }
|
|
39
51
|
end
|
|
40
52
|
|
|
53
|
+
# Validates that a webhook was genuinely sent by GoCardless using
|
|
54
|
+
# `.signature_valid?`, and then parses it into a WebhookParseResult containing
|
|
55
|
+
# both the events and the webhook ID from the meta field
|
|
56
|
+
#
|
|
57
|
+
# @option options [String] :request_body the request body
|
|
58
|
+
# @option options [String] :signature_header the signature included in the request,
|
|
59
|
+
# found in the `Webhook-Signature` header
|
|
60
|
+
# @option options [String] :webhook_endpoint_secret the webhook endpoint secret for
|
|
61
|
+
# your webhook endpoint, as configured in your GoCardless Dashboard
|
|
62
|
+
# @return [WebhookParseResult] containing the events and webhook ID
|
|
63
|
+
# @raise [InvalidSignatureError] if the signature header specified does not match
|
|
64
|
+
# the signature computed using the request body and webhook endpoint secret
|
|
65
|
+
# @raise [ArgumentError] if a required keyword argument is not provided or is not
|
|
66
|
+
# of the required type
|
|
67
|
+
def parse_with_meta(options = {})
|
|
68
|
+
validate_options!(options)
|
|
69
|
+
|
|
70
|
+
unless signature_valid?(request_body: options[:request_body],
|
|
71
|
+
signature_header: options[:signature_header],
|
|
72
|
+
webhook_endpoint_secret: options[:webhook_endpoint_secret])
|
|
73
|
+
raise InvalidSignatureError, "This webhook doesn't appear to be a genuine " \
|
|
74
|
+
'webhook from GoCardless, because the signature ' \
|
|
75
|
+
"header doesn't match the signature computed" \
|
|
76
|
+
' with your webhook endpoint secret.'
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
parsed = JSON.parse(options[:request_body])
|
|
80
|
+
events = parsed['events'].map { |event| Resources::Event.new(event) }
|
|
81
|
+
webhook_id = parsed.dig('meta', 'webhook_id')
|
|
82
|
+
|
|
83
|
+
WebhookParseResult.new(events, webhook_id)
|
|
84
|
+
end
|
|
85
|
+
|
|
41
86
|
# Validates that a webhook was genuinely sent by GoCardless by computing its
|
|
42
87
|
# signature using the body and your webhook endpoint secret, and comparing that with
|
|
43
88
|
# the signature included in the `Webhook-Signature` header
|
data/lib/gocardless_pro.rb
CHANGED
|
@@ -123,6 +123,12 @@ require_relative 'gocardless_pro/services/negative_balance_limits_service'
|
|
|
123
123
|
require_relative 'gocardless_pro/resources/outbound_payment'
|
|
124
124
|
require_relative 'gocardless_pro/services/outbound_payments_service'
|
|
125
125
|
|
|
126
|
+
require_relative 'gocardless_pro/resources/outbound_payment_import'
|
|
127
|
+
require_relative 'gocardless_pro/services/outbound_payment_imports_service'
|
|
128
|
+
|
|
129
|
+
require_relative 'gocardless_pro/resources/outbound_payment_import_entry'
|
|
130
|
+
require_relative 'gocardless_pro/services/outbound_payment_import_entries_service'
|
|
131
|
+
|
|
126
132
|
require_relative 'gocardless_pro/resources/payer_authorisation'
|
|
127
133
|
require_relative 'gocardless_pro/services/payer_authorisations_service'
|
|
128
134
|
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gocardless_pro
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- GoCardless
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: faraday
|
|
@@ -50,57 +49,56 @@ dependencies:
|
|
|
50
49
|
requirements:
|
|
51
50
|
- - "~>"
|
|
52
51
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 3.13.
|
|
52
|
+
version: 3.13.2
|
|
54
53
|
type: :development
|
|
55
54
|
prerelease: false
|
|
56
55
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
56
|
requirements:
|
|
58
57
|
- - "~>"
|
|
59
58
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: 3.13.
|
|
59
|
+
version: 3.13.2
|
|
61
60
|
- !ruby/object:Gem::Dependency
|
|
62
61
|
name: webmock
|
|
63
62
|
requirement: !ruby/object:Gem::Requirement
|
|
64
63
|
requirements:
|
|
65
64
|
- - "~>"
|
|
66
65
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: 3.
|
|
66
|
+
version: 3.26.2
|
|
68
67
|
type: :development
|
|
69
68
|
prerelease: false
|
|
70
69
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
70
|
requirements:
|
|
72
71
|
- - "~>"
|
|
73
72
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: 3.
|
|
73
|
+
version: 3.26.2
|
|
75
74
|
- !ruby/object:Gem::Dependency
|
|
76
75
|
name: rubocop
|
|
77
76
|
requirement: !ruby/object:Gem::Requirement
|
|
78
77
|
requirements:
|
|
79
78
|
- - "~>"
|
|
80
79
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: 1.
|
|
80
|
+
version: 1.89.0
|
|
82
81
|
type: :development
|
|
83
82
|
prerelease: false
|
|
84
83
|
version_requirements: !ruby/object:Gem::Requirement
|
|
85
84
|
requirements:
|
|
86
85
|
- - "~>"
|
|
87
86
|
- !ruby/object:Gem::Version
|
|
88
|
-
version: 1.
|
|
87
|
+
version: 1.89.0
|
|
89
88
|
- !ruby/object:Gem::Dependency
|
|
90
89
|
name: yard
|
|
91
90
|
requirement: !ruby/object:Gem::Requirement
|
|
92
91
|
requirements:
|
|
93
92
|
- - "~>"
|
|
94
93
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: 0.9.
|
|
94
|
+
version: 0.9.45
|
|
96
95
|
type: :development
|
|
97
96
|
prerelease: false
|
|
98
97
|
version_requirements: !ruby/object:Gem::Requirement
|
|
99
98
|
requirements:
|
|
100
99
|
- - "~>"
|
|
101
100
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: 0.9.
|
|
103
|
-
description:
|
|
101
|
+
version: 0.9.45
|
|
104
102
|
email:
|
|
105
103
|
- engineering@gocardless.com
|
|
106
104
|
executables: []
|
|
@@ -154,6 +152,8 @@ files:
|
|
|
154
152
|
- lib/gocardless_pro/resources/mandate_pdf.rb
|
|
155
153
|
- lib/gocardless_pro/resources/negative_balance_limit.rb
|
|
156
154
|
- lib/gocardless_pro/resources/outbound_payment.rb
|
|
155
|
+
- lib/gocardless_pro/resources/outbound_payment_import.rb
|
|
156
|
+
- lib/gocardless_pro/resources/outbound_payment_import_entry.rb
|
|
157
157
|
- lib/gocardless_pro/resources/payer_authorisation.rb
|
|
158
158
|
- lib/gocardless_pro/resources/payer_theme.rb
|
|
159
159
|
- lib/gocardless_pro/resources/payment.rb
|
|
@@ -199,6 +199,8 @@ files:
|
|
|
199
199
|
- lib/gocardless_pro/services/mandate_pdfs_service.rb
|
|
200
200
|
- lib/gocardless_pro/services/mandates_service.rb
|
|
201
201
|
- lib/gocardless_pro/services/negative_balance_limits_service.rb
|
|
202
|
+
- lib/gocardless_pro/services/outbound_payment_import_entries_service.rb
|
|
203
|
+
- lib/gocardless_pro/services/outbound_payment_imports_service.rb
|
|
202
204
|
- lib/gocardless_pro/services/outbound_payments_service.rb
|
|
203
205
|
- lib/gocardless_pro/services/payer_authorisations_service.rb
|
|
204
206
|
- lib/gocardless_pro/services/payer_themes_service.rb
|
|
@@ -222,7 +224,6 @@ homepage: https://github.com/gocardless/gocardless-pro-ruby
|
|
|
222
224
|
licenses:
|
|
223
225
|
- MIT
|
|
224
226
|
metadata: {}
|
|
225
|
-
post_install_message:
|
|
226
227
|
rdoc_options: []
|
|
227
228
|
require_paths:
|
|
228
229
|
- lib
|
|
@@ -237,8 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
237
238
|
- !ruby/object:Gem::Version
|
|
238
239
|
version: '0'
|
|
239
240
|
requirements: []
|
|
240
|
-
rubygems_version:
|
|
241
|
-
signing_key:
|
|
241
|
+
rubygems_version: 4.0.16
|
|
242
242
|
specification_version: 4
|
|
243
243
|
summary: A gem for calling the GoCardless API
|
|
244
244
|
test_files: []
|