gocardless_pro 2.3.0 → 2.4.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/lib/gocardless_pro.rb +3 -0
- data/lib/gocardless_pro/client.rb +6 -1
- data/lib/gocardless_pro/resources/bank_details_lookup.rb +1 -1
- data/lib/gocardless_pro/resources/creditor.rb +3 -4
- data/lib/gocardless_pro/resources/creditor_bank_account.rb +5 -6
- data/lib/gocardless_pro/resources/customer.rb +0 -1
- data/lib/gocardless_pro/resources/customer_bank_account.rb +5 -6
- data/lib/gocardless_pro/resources/mandate.rb +2 -3
- data/lib/gocardless_pro/resources/payment.rb +2 -3
- data/lib/gocardless_pro/resources/payout_item.rb +81 -0
- data/lib/gocardless_pro/resources/redirect_flow.rb +16 -21
- data/lib/gocardless_pro/resources/refund.rb +3 -3
- data/lib/gocardless_pro/resources/subscription.rb +34 -50
- data/lib/gocardless_pro/services/bank_details_lookups_service.rb +14 -10
- data/lib/gocardless_pro/services/creditor_bank_accounts_service.rb +4 -4
- data/lib/gocardless_pro/services/customer_bank_accounts_service.rb +6 -10
- data/lib/gocardless_pro/services/mandate_pdfs_service.rb +3 -4
- data/lib/gocardless_pro/services/mandates_service.rb +2 -3
- data/lib/gocardless_pro/services/payments_service.rb +5 -8
- data/lib/gocardless_pro/services/payout_items_service.rb +68 -0
- data/lib/gocardless_pro/services/redirect_flows_service.rb +5 -6
- data/lib/gocardless_pro/services/refunds_service.rb +8 -11
- data/lib/gocardless_pro/services/subscriptions_service.rb +18 -2
- data/lib/gocardless_pro/version.rb +1 -1
- data/spec/resources/payout_item_spec.rb +96 -0
- data/spec/services/payout_items_service_spec.rb +212 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb3944b3517a68c3d3a825fdd00ebd3e9951c130
|
4
|
+
data.tar.gz: 24cab2d00dc28ceda2fdaa2d9e0c10d71c57ab09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e6c180d2bf3d244a3f99c8f767852e7af34626aa09721a79a7c087e62cf1fdfef58efb3e5bef3f55b1077c140bbb1395f8917ec999e57dcfe95ce72994cac71
|
7
|
+
data.tar.gz: 3111e978bff8ffc020f35696f02ed12d418ca43bf1b38b87c9271cc1e0eb74071f73228bf65c4b48b5ccb44e51ebd9cd944c99352e715b4301d08fd898ef241d
|
data/lib/gocardless_pro.rb
CHANGED
@@ -67,6 +67,9 @@ require_relative 'gocardless_pro/services/payments_service'
|
|
67
67
|
require_relative 'gocardless_pro/resources/payout'
|
68
68
|
require_relative 'gocardless_pro/services/payouts_service'
|
69
69
|
|
70
|
+
require_relative 'gocardless_pro/resources/payout_item'
|
71
|
+
require_relative 'gocardless_pro/services/payout_items_service'
|
72
|
+
|
70
73
|
require_relative 'gocardless_pro/resources/redirect_flow'
|
71
74
|
require_relative 'gocardless_pro/services/redirect_flows_service'
|
72
75
|
|
@@ -53,6 +53,11 @@ module GoCardlessPro
|
|
53
53
|
@payouts ||= Services::PayoutsService.new(@api_service)
|
54
54
|
end
|
55
55
|
|
56
|
+
# Access to the service for payout_item to make API calls
|
57
|
+
def payout_items
|
58
|
+
@payout_items ||= Services::PayoutItemsService.new(@api_service)
|
59
|
+
end
|
60
|
+
|
56
61
|
# Access to the service for redirect_flow to make API calls
|
57
62
|
def redirect_flows
|
58
63
|
@redirect_flows ||= Services::RedirectFlowsService.new(@api_service)
|
@@ -118,7 +123,7 @@ module GoCardlessPro
|
|
118
123
|
'User-Agent' => user_agent.to_s,
|
119
124
|
'Content-Type' => 'application/json',
|
120
125
|
'GoCardless-Client-Library' => 'gocardless-pro-ruby',
|
121
|
-
'GoCardless-Client-Version' => '2.
|
126
|
+
'GoCardless-Client-Version' => '2.4.0',
|
122
127
|
},
|
123
128
|
}
|
124
129
|
end
|
@@ -12,7 +12,7 @@ module GoCardlessPro
|
|
12
12
|
module Resources
|
13
13
|
# Represents an instance of a bank_details_lookup resource returned from the API
|
14
14
|
|
15
|
-
# Look up the name and reachability of a bank.
|
15
|
+
# Look up the name and reachability of a bank account.
|
16
16
|
class BankDetailsLookup
|
17
17
|
attr_reader :available_debit_schemes
|
18
18
|
attr_reader :bank_name
|
@@ -17,10 +17,9 @@ module GoCardlessPro
|
|
17
17
|
# organisation will have a single "creditor", but the API also supports
|
18
18
|
# collecting payments on behalf of others.
|
19
19
|
#
|
20
|
-
# Please get in touch
|
21
|
-
#
|
22
|
-
#
|
23
|
-
# organisation.
|
20
|
+
# Please get in touch if you wish to use this endpoint. Currently, for Anti
|
21
|
+
# Money Laundering reasons, any creditors you add must be directly related
|
22
|
+
# to your organisation.
|
24
23
|
class Creditor
|
25
24
|
attr_reader :address_line1
|
26
25
|
attr_reader :address_line2
|
@@ -16,12 +16,11 @@ module GoCardlessPro
|
|
16
16
|
# [creditor](#core-endpoints-creditors). These are the bank accounts which
|
17
17
|
# your [payouts](#core-endpoints-payouts) will be sent to.
|
18
18
|
#
|
19
|
-
# Note
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
# error response.
|
19
|
+
# Note that creditor bank accounts must be unique, and so you will encounter
|
20
|
+
# a `bank_account_exists` error if you try to create a duplicate bank
|
21
|
+
# account. You may wish to handle this by updating the existing record
|
22
|
+
# instead, the ID of which will be provided as
|
23
|
+
# `links[creditor_bank_account]` in the error response.
|
25
24
|
class CreditorBankAccount
|
26
25
|
attr_reader :account_holder_name
|
27
26
|
attr_reader :account_number_ending
|
@@ -17,7 +17,6 @@ module GoCardlessPro
|
|
17
17
|
# accounts](#core-endpoints-customer-bank-accounts), which in turn can have
|
18
18
|
# several Direct Debit [mandates](#core-endpoints-mandates).
|
19
19
|
#
|
20
|
-
#
|
21
20
|
# Note: the `swedish_identity_number` field may only be supplied for Swedish
|
22
21
|
# customers, and must be supplied if you intend to set up an Autogiro
|
23
22
|
# mandate with the customer.
|
@@ -17,12 +17,11 @@ module GoCardlessPro
|
|
17
17
|
# [customer](#core-endpoints-customers), and may be linked to several Direct
|
18
18
|
# Debit [mandates](#core-endpoints-mandates).
|
19
19
|
#
|
20
|
-
# Note that
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
# error response.
|
20
|
+
# Note that customer bank accounts must be unique, and so you will encounter
|
21
|
+
# a `bank_account_exists` error if you try to create a duplicate bank
|
22
|
+
# account. You may wish to handle this by updating the existing record
|
23
|
+
# instead, the ID of which will be provided as
|
24
|
+
# `links[customer_bank_account]` in the error response.
|
26
25
|
class CustomerBankAccount
|
27
26
|
attr_reader :account_holder_name
|
28
27
|
attr_reader :account_number_ending
|
@@ -15,9 +15,8 @@ module GoCardlessPro
|
|
15
15
|
# Mandates represent the Direct Debit mandate with a
|
16
16
|
# [customer](#core-endpoints-customers).
|
17
17
|
#
|
18
|
-
# GoCardless will notify
|
19
|
-
#
|
20
|
-
# changes.
|
18
|
+
# GoCardless will notify you via a [webhook](#appendix-webhooks) whenever
|
19
|
+
# the status of a mandate changes.
|
21
20
|
class Mandate
|
22
21
|
attr_reader :created_at
|
23
22
|
attr_reader :id
|
@@ -17,9 +17,8 @@ module GoCardlessPro
|
|
17
17
|
# [creditor](#core-endpoints-creditors), taken against a Direct Debit
|
18
18
|
# [mandate](#core-endpoints-mandates).
|
19
19
|
#
|
20
|
-
# GoCardless will notify
|
21
|
-
#
|
22
|
-
# changes.
|
20
|
+
# GoCardless will notify you via a [webhook](#appendix-webhooks) whenever
|
21
|
+
# the state of a payment changes.
|
23
22
|
class Payment
|
24
23
|
attr_reader :amount
|
25
24
|
attr_reader :amount_refunded
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
#
|
4
|
+
# This client is automatically generated from a template and JSON schema definition.
|
5
|
+
# See https://github.com/gocardless/gocardless-pro-ruby#contributing before editing.
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'uri'
|
9
|
+
|
10
|
+
module GoCardlessPro
|
11
|
+
# A module containing classes for each of the resources in the GC Api
|
12
|
+
module Resources
|
13
|
+
# Represents an instance of a payout_item resource returned from the API
|
14
|
+
|
15
|
+
# When we collect a payment on your behalf, we add the money you've
|
16
|
+
# collected to your
|
17
|
+
# GoCardless balance, minus any fees paid. Periodically (usually every
|
18
|
+
# working day),
|
19
|
+
# we take any positive balance in your GoCardless account, and pay it out to
|
20
|
+
# your
|
21
|
+
# nominated bank account.
|
22
|
+
#
|
23
|
+
# Other actions in your GoCardless account can also affect your balance. For
|
24
|
+
# example,
|
25
|
+
# if a customer charges back a payment, we'll deduct the payment's amount
|
26
|
+
# from your
|
27
|
+
# balance, but add any fees you paid for that payment back to your balance.
|
28
|
+
#
|
29
|
+
# The Payout Items API allows you to view, on a per-payout basis, the credit
|
30
|
+
# and debit
|
31
|
+
# items that make up that payout's amount.
|
32
|
+
#
|
33
|
+
# <p class="beta-notice"><strong>Beta</strong>: The Payout Items API is in
|
34
|
+
# beta, and is
|
35
|
+
# subject to <a href="#overview-backwards-compatibility">backwards
|
36
|
+
# incompatible changes</a>
|
37
|
+
# with 30 days notice. Before making any breaking changes, we will contact
|
38
|
+
# all integrators
|
39
|
+
# who have used the API.</p>
|
40
|
+
#
|
41
|
+
class PayoutItem
|
42
|
+
attr_reader :amount
|
43
|
+
attr_reader :type
|
44
|
+
|
45
|
+
# Initialize a payout_item resource instance
|
46
|
+
# @param object [Hash] an object returned from the API
|
47
|
+
def initialize(object, response = nil)
|
48
|
+
@object = object
|
49
|
+
|
50
|
+
@amount = object['amount']
|
51
|
+
@links = object['links']
|
52
|
+
@type = object['type']
|
53
|
+
@response = response
|
54
|
+
end
|
55
|
+
|
56
|
+
def api_response
|
57
|
+
ApiResponse.new(@response)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Return the links that the resource has
|
61
|
+
def links
|
62
|
+
@payout_item_links ||= Links.new(@links)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Provides the payout_item resource as a hash of all its readable attributes
|
66
|
+
def to_h
|
67
|
+
@object
|
68
|
+
end
|
69
|
+
|
70
|
+
class Links
|
71
|
+
def initialize(links)
|
72
|
+
@links = links || {}
|
73
|
+
end
|
74
|
+
|
75
|
+
def payment
|
76
|
+
@links['payment']
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -20,35 +20,30 @@ module GoCardlessPro
|
|
20
20
|
#
|
21
21
|
# The overall flow is:
|
22
22
|
#
|
23
|
-
# 1. You
|
24
|
-
#
|
25
|
-
# customer, and redirect them to the returned redirect url, e.g.
|
23
|
+
# 1. You [create](#redirect-flows-create-a-redirect-flow) a redirect flow
|
24
|
+
# for your customer, and redirect them to the returned redirect url, e.g.
|
26
25
|
# `https://pay.gocardless.com/flow/RE123`.
|
27
26
|
#
|
28
|
-
# 2. Your customer
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
# querystring.
|
27
|
+
# 2. Your customer supplies their name, email, address, and bank account
|
28
|
+
# details, and submits the form. This securely stores their details, and
|
29
|
+
# redirects them back to your `success_redirect_url` with
|
30
|
+
# `redirect_flow_id=RE123` in the querystring.
|
33
31
|
#
|
34
|
-
# 3. You
|
35
|
-
# [
|
36
|
-
#
|
37
|
-
# account](#core-endpoints-customer-bank-accounts), and
|
32
|
+
# 3. You [complete](#redirect-flows-complete-a-redirect-flow) the redirect
|
33
|
+
# flow, which creates a [customer](#core-endpoints-customers), [customer
|
34
|
+
# bank account](#core-endpoints-customer-bank-accounts), and
|
38
35
|
# [mandate](#core-endpoints-mandates), and returns the ID of the mandate.
|
39
36
|
# You may wish to create a [subscription](#core-endpoints-subscriptions) or
|
40
37
|
# [payment](#core-endpoints-payments) at this point.
|
41
38
|
#
|
42
|
-
# Once you
|
43
|
-
#
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
47
|
-
# attribute of the redirect flow.
|
39
|
+
# Once you have [completed](#redirect-flows-complete-a-redirect-flow) the
|
40
|
+
# redirect flow via the API, you should display a confirmation page to your
|
41
|
+
# customer, confirming that their Direct Debit has been set up. You can
|
42
|
+
# build your own page, or redirect to the one we provide in the
|
43
|
+
# `confirmation_url` attribute of the redirect flow.
|
48
44
|
#
|
49
|
-
# Redirect flows expire 30
|
50
|
-
#
|
51
|
-
# redirect flow.
|
45
|
+
# Redirect flows expire 30 minutes after they are first created. You cannot
|
46
|
+
# complete an expired redirect flow.
|
52
47
|
class RedirectFlow
|
53
48
|
attr_reader :confirmation_url
|
54
49
|
attr_reader :created_at
|
@@ -16,9 +16,9 @@ module GoCardlessPro
|
|
16
16
|
# [payment](#core-endpoints-payments) back to the
|
17
17
|
# [customer](#core-endpoints-customers).
|
18
18
|
#
|
19
|
-
# GoCardless will notify
|
20
|
-
#
|
21
|
-
#
|
19
|
+
# GoCardless will notify you via a [webhook](#appendix-webhooks) whenever a
|
20
|
+
# refund is created, and will update the `amount_refunded` property of the
|
21
|
+
# payment.
|
22
22
|
class Refund
|
23
23
|
attr_reader :amount
|
24
24
|
attr_reader :created_at
|
@@ -17,70 +17,54 @@ module GoCardlessPro
|
|
17
17
|
#
|
18
18
|
# ### Recurrence Rules
|
19
19
|
#
|
20
|
-
# The following
|
21
|
-
# rules apply when specifying recurrence:
|
20
|
+
# The following rules apply when specifying recurrence:
|
22
21
|
#
|
23
|
-
# - The first payment
|
24
|
-
#
|
25
|
-
#
|
26
|
-
# `day_of_month` are present, the
|
27
|
-
# `start_date
|
28
|
-
# - If `month` or
|
29
|
-
# `day_of_month` are present, the recurrence rules will be applied from the
|
30
|
-
# `start_date`, and the following validations apply:
|
22
|
+
# - The first payment must be charged within 1 year.
|
23
|
+
# - When neither `month` nor `day_of_month` are present, the subscription
|
24
|
+
# will recur from the `start_date` based on the `interval_unit`.
|
25
|
+
# - If `month` or `day_of_month` are present, the recurrence rules will be
|
26
|
+
# applied from the `start_date`, and the following validations apply:
|
31
27
|
#
|
32
|
-
# |
|
33
|
-
# interval_unit | month |
|
28
|
+
# | interval_unit | month |
|
34
29
|
# day_of_month |
|
35
|
-
# | :-------------- |
|
36
|
-
# :--------------------------------------------- |
|
30
|
+
# | :-------------- | :--------------------------------------------- |
|
37
31
|
# :-------------------------------------- |
|
38
|
-
# | yearly |
|
39
|
-
# optional (required if `
|
40
|
-
#
|
41
|
-
# |
|
42
|
-
#
|
43
|
-
# |
|
44
|
-
# weekly | invalid | invalid
|
45
|
-
# |
|
32
|
+
# | yearly | optional (required if `day_of_month` provided) |
|
33
|
+
# optional (required if `month` provided) |
|
34
|
+
# | monthly | invalid |
|
35
|
+
# required |
|
36
|
+
# | weekly | invalid |
|
37
|
+
# invalid |
|
46
38
|
#
|
47
39
|
# Examples:
|
48
40
|
#
|
49
|
-
# |
|
50
|
-
#
|
51
|
-
#
|
52
|
-
# | :-------------- | :--------- |
|
53
|
-
# :------ | :------------- |
|
41
|
+
# | interval_unit | interval | month | day_of_month | valid?
|
42
|
+
# |
|
43
|
+
# | :-------------- | :--------- | :------ | :------------- |
|
54
44
|
# :------------------------------------------------- |
|
55
|
-
# | yearly
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
61
|
-
# monthly | 6 |
|
62
|
-
#
|
63
|
-
# |
|
64
|
-
#
|
65
|
-
#
|
66
|
-
#
|
67
|
-
# valid |
|
68
|
-
# | weekly
|
69
|
-
# | 2 | october | 10 | invalid - `month` and
|
70
|
-
# `day_of_month` must be blank |
|
45
|
+
# | yearly | 1 | january | -1 | valid
|
46
|
+
# |
|
47
|
+
# | yearly | 1 | march | | invalid -
|
48
|
+
# missing `day_of_month` |
|
49
|
+
# | monthly | 6 | | 12 | valid
|
50
|
+
# |
|
51
|
+
# | monthly | 6 | august | 12 | invalid -
|
52
|
+
# `month` must be blank |
|
53
|
+
# | weekly | 2 | | | valid
|
54
|
+
# |
|
55
|
+
# | weekly | 2 | october | 10 | invalid -
|
56
|
+
# `month` and `day_of_month` must be blank |
|
71
57
|
#
|
72
58
|
# ### Rolling dates
|
73
59
|
#
|
74
|
-
#
|
75
60
|
# When a charge date falls on a non-business day, one of two things will
|
76
61
|
# happen:
|
77
62
|
#
|
78
|
-
# - if the recurrence rule specified `-1` as the
|
79
|
-
#
|
80
|
-
#
|
81
|
-
# -
|
82
|
-
#
|
83
|
-
# day.
|
63
|
+
# - if the recurrence rule specified `-1` as the `day_of_month`, the charge
|
64
|
+
# date will be rolled __backwards__ to the previous business day (i.e., the
|
65
|
+
# last working day of the month).
|
66
|
+
# - otherwise the charge date will be rolled __forwards__ to the next
|
67
|
+
# business day.
|
84
68
|
#
|
85
69
|
class Subscription
|
86
70
|
attr_reader :amount
|
@@ -11,19 +11,23 @@ module GoCardlessPro
|
|
11
11
|
module Services
|
12
12
|
# Service for making requests to the BankDetailsLookup endpoints
|
13
13
|
class BankDetailsLookupsService < BaseService
|
14
|
-
# Performs a bank details lookup.
|
15
|
-
#
|
16
|
-
# As part of the lookup a modulus check and
|
14
|
+
# Performs a bank details lookup. As part of the lookup, a modulus check and
|
17
15
|
# reachability check are performed.
|
18
16
|
#
|
19
|
-
#
|
20
|
-
#
|
17
|
+
# If your request returns an [error](#api-usage-errors) or the
|
18
|
+
# `available_debit_schemes`
|
19
|
+
# attribute is an empty array, you will not be able to collect payments from the
|
20
|
+
# specified bank account. GoCardless may be able to collect payments from an
|
21
|
+
# account
|
22
|
+
# even if no `bic` is returned.
|
23
|
+
#
|
24
|
+
# Bank account details may be supplied using [local
|
25
|
+
# details](#appendix-local-bank-details) or an IBAN.
|
21
26
|
#
|
22
|
-
# _Note:_
|
23
|
-
#
|
24
|
-
# for
|
25
|
-
#
|
26
|
-
# get in touch.
|
27
|
+
# _Note:_ Usage of this endpoint is monitored. If your organisation relies on
|
28
|
+
# GoCardless for
|
29
|
+
# modulus or reachability checking but not for payment collection, please get in
|
30
|
+
# touch.
|
27
31
|
# Example URL: /bank_details_lookups
|
28
32
|
# @param options [Hash] parameters as a hash, under a params key.
|
29
33
|
def create(options = {})
|
@@ -88,11 +88,11 @@ module GoCardlessPro
|
|
88
88
|
# Immediately disables the bank account, no money can be paid out to a disabled
|
89
89
|
# account.
|
90
90
|
#
|
91
|
-
# This will return a `disable_failed` error if the bank account
|
92
|
-
#
|
91
|
+
# This will return a `disable_failed` error if the bank account has already been
|
92
|
+
# disabled.
|
93
93
|
#
|
94
|
-
# A disabled bank account can be re-enabled by
|
95
|
-
#
|
94
|
+
# A disabled bank account can be re-enabled by creating a new bank account
|
95
|
+
# resource with the same details.
|
96
96
|
# Example URL: /creditor_bank_accounts/:identity/actions/disable
|
97
97
|
#
|
98
98
|
# @param identity # Unique identifier, beginning with "BA".
|
@@ -13,17 +13,14 @@ module GoCardlessPro
|
|
13
13
|
class CustomerBankAccountsService < BaseService
|
14
14
|
# Creates a new customer bank account object.
|
15
15
|
#
|
16
|
-
# There are three different
|
17
|
-
# ways to supply bank account details:
|
16
|
+
# There are three different ways to supply bank account details:
|
18
17
|
#
|
19
|
-
# - [Local
|
20
|
-
# details](#appendix-local-bank-details)
|
18
|
+
# - [Local details](#appendix-local-bank-details)
|
21
19
|
#
|
22
20
|
# - IBAN
|
23
21
|
#
|
24
|
-
# - [Customer Bank
|
25
|
-
#
|
26
|
-
#
|
22
|
+
# - [Customer Bank Account
|
23
|
+
# Tokens](#javascript-flow-create-a-customer-bank-account-token)
|
27
24
|
#
|
28
25
|
# For more information on the different fields required in each country, see
|
29
26
|
# [local bank details](#appendix-local-bank-details).
|
@@ -124,12 +121,11 @@ module GoCardlessPro
|
|
124
121
|
|
125
122
|
# Immediately cancels all associated mandates and cancellable payments.
|
126
123
|
#
|
127
|
-
#
|
128
124
|
# This will return a `disable_failed` error if the bank account has already been
|
129
125
|
# disabled.
|
130
126
|
#
|
131
|
-
# A disabled bank account can be re-enabled by creating a new
|
132
|
-
#
|
127
|
+
# A disabled bank account can be re-enabled by creating a new bank account
|
128
|
+
# resource with the same details.
|
133
129
|
# Example URL: /customer_bank_accounts/:identity/actions/disable
|
134
130
|
#
|
135
131
|
# @param identity # Unique identifier, beginning with "BA".
|
@@ -13,10 +13,9 @@ module GoCardlessPro
|
|
13
13
|
class MandatePdfsService < BaseService
|
14
14
|
# Generates a PDF mandate and returns its temporary URL.
|
15
15
|
#
|
16
|
-
# Customer and bank
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
16
|
+
# Customer and bank account details can be left blank (for a blank mandate),
|
17
|
+
# provided manually, or inferred from the ID of an existing
|
18
|
+
# [mandate](#core-endpoints-mandates).
|
20
19
|
#
|
21
20
|
# To generate a PDF mandate in a foreign language, set your `Accept-Language`
|
22
21
|
# header to the relevant [ISO
|
@@ -110,8 +110,8 @@ module GoCardlessPro
|
|
110
110
|
# metadata supplied to this endpoint will be stored on the mandate cancellation
|
111
111
|
# event it causes.
|
112
112
|
#
|
113
|
-
# This will fail with a `cancellation_failed` error if the
|
114
|
-
#
|
113
|
+
# This will fail with a `cancellation_failed` error if the mandate is already
|
114
|
+
# cancelled.
|
115
115
|
# Example URL: /mandates/:identity/actions/cancel
|
116
116
|
#
|
117
117
|
# @param identity # Unique identifier, beginning with "MD".
|
@@ -148,7 +148,6 @@ module GoCardlessPro
|
|
148
148
|
# `failed` webhook up to two working days later. Any metadata supplied to this
|
149
149
|
# endpoint will be stored on the `resubmission_requested` event it causes.
|
150
150
|
#
|
151
|
-
#
|
152
151
|
# This will fail with a `mandate_not_inactive` error if the mandate is already
|
153
152
|
# being submitted, or is active.
|
154
153
|
#
|
@@ -13,8 +13,7 @@ module GoCardlessPro
|
|
13
13
|
class PaymentsService < BaseService
|
14
14
|
# <a name="mandate_is_inactive"></a>Creates a new payment object.
|
15
15
|
#
|
16
|
-
# This
|
17
|
-
# fails with a `mandate_is_inactive` error if the linked
|
16
|
+
# This fails with a `mandate_is_inactive` error if the linked
|
18
17
|
# [mandate](#core-endpoints-mandates) is cancelled or has failed. Payments can
|
19
18
|
# be created against mandates with status of: `pending_customer_approval`,
|
20
19
|
# `pending_submission`, `submitted`, and `active`.
|
@@ -116,8 +115,8 @@ module GoCardlessPro
|
|
116
115
|
# metadata supplied to this endpoint will be stored on the payment cancellation
|
117
116
|
# event it causes.
|
118
117
|
#
|
119
|
-
# This will fail with a `cancellation_failed` error unless
|
120
|
-
#
|
118
|
+
# This will fail with a `cancellation_failed` error unless the payment's status
|
119
|
+
# is `pending_submission`.
|
121
120
|
# Example URL: /payments/:identity/actions/cancel
|
122
121
|
#
|
123
122
|
# @param identity # Unique identifier, beginning with "PM".
|
@@ -154,11 +153,9 @@ module GoCardlessPro
|
|
154
153
|
# event. Any metadata supplied to this endpoint will be stored against the
|
155
154
|
# payment submission event it causes.
|
156
155
|
#
|
157
|
-
# This will return a `retry_failed`
|
158
|
-
# error if the payment has not failed.
|
156
|
+
# This will return a `retry_failed` error if the payment has not failed.
|
159
157
|
#
|
160
|
-
# Payments can be retried up to 3
|
161
|
-
# times.
|
158
|
+
# Payments can be retried up to 3 times.
|
162
159
|
# Example URL: /payments/:identity/actions/retry
|
163
160
|
#
|
164
161
|
# @param identity # Unique identifier, beginning with "PM".
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require_relative './base_service'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
# encoding: utf-8
|
5
|
+
#
|
6
|
+
# This client is automatically generated from a template and JSON schema definition.
|
7
|
+
# See https://github.com/gocardless/gocardless-pro-ruby#contributing before editing.
|
8
|
+
#
|
9
|
+
|
10
|
+
module GoCardlessPro
|
11
|
+
module Services
|
12
|
+
# Service for making requests to the PayoutItem endpoints
|
13
|
+
class PayoutItemsService < BaseService
|
14
|
+
# Returns a [cursor-paginated](#api-usage-cursor-pagination) list of items in
|
15
|
+
# the payout.
|
16
|
+
#
|
17
|
+
# Example URL: /payout_items
|
18
|
+
# @param options [Hash] parameters as a hash, under a params key.
|
19
|
+
def list(options = {})
|
20
|
+
path = '/payout_items'
|
21
|
+
|
22
|
+
options[:retry_failures] = true
|
23
|
+
|
24
|
+
response = make_request(:get, path, options)
|
25
|
+
|
26
|
+
ListResponse.new(
|
27
|
+
response: response,
|
28
|
+
unenveloped_body: unenvelope_body(response.body),
|
29
|
+
resource_class: Resources::PayoutItem
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Get a lazily enumerated list of all the items returned. This is simmilar to the `list` method but will paginate for you automatically.
|
34
|
+
#
|
35
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
36
|
+
# Otherwise they will be the body of the request.
|
37
|
+
def all(options = {})
|
38
|
+
Paginator.new(
|
39
|
+
service: self,
|
40
|
+
options: options
|
41
|
+
).enumerator
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
# Unenvelope the response of the body using the service's `envelope_key`
|
47
|
+
#
|
48
|
+
# @param body [Hash]
|
49
|
+
def unenvelope_body(body)
|
50
|
+
body[envelope_key] || body['data']
|
51
|
+
end
|
52
|
+
|
53
|
+
# return the key which API responses will envelope data under
|
54
|
+
def envelope_key
|
55
|
+
'payout_items'
|
56
|
+
end
|
57
|
+
|
58
|
+
# take a URL with placeholder params and substitute them out for the actual value
|
59
|
+
# @param url [String] the URL with placeholders in
|
60
|
+
# @param param_map [Hash] a hash of placeholders and their actual values (which will be escaped)
|
61
|
+
def sub_url(url, param_map)
|
62
|
+
param_map.reduce(url) do |new_url, (param, value)|
|
63
|
+
new_url.gsub(":#{param}", URI.escape(value))
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -62,12 +62,11 @@ module GoCardlessPro
|
|
62
62
|
# [mandate](#core-endpoints-mandates) using the details supplied by your
|
63
63
|
# customer and returns the ID of the created mandate.
|
64
64
|
#
|
65
|
-
# This will return a
|
66
|
-
#
|
67
|
-
#
|
68
|
-
#
|
69
|
-
#
|
70
|
-
# flow was created.
|
65
|
+
# This will return a `redirect_flow_incomplete` error if your customer has not
|
66
|
+
# yet been redirected back to your site, and a `redirect_flow_already_completed`
|
67
|
+
# error if your integration has already completed this flow. It will return a
|
68
|
+
# `bad_request` error if the `session_token` differs to the one supplied when
|
69
|
+
# the redirect flow was created.
|
71
70
|
# Example URL: /redirect_flows/:identity/actions/complete
|
72
71
|
#
|
73
72
|
# @param identity # Unique identifier, beginning with "RE".
|
@@ -13,22 +13,19 @@ module GoCardlessPro
|
|
13
13
|
class RefundsService < BaseService
|
14
14
|
# Creates a new refund object.
|
15
15
|
#
|
16
|
-
# This fails with:<a
|
17
|
-
# name="refund_payment_invalid_state"></a><a
|
16
|
+
# This fails with:<a name="refund_payment_invalid_state"></a><a
|
18
17
|
# name="total_amount_confirmation_invalid"></a><a
|
19
18
|
# name="number_of_refunds_exceeded"></a>
|
20
19
|
#
|
21
|
-
# - `refund_payment_invalid_state`
|
22
|
-
#
|
23
|
-
# `confirmed` or `paid_out`.
|
20
|
+
# - `refund_payment_invalid_state` error if the linked
|
21
|
+
# [payment](#core-endpoints-payments) isn't either `confirmed` or `paid_out`.
|
24
22
|
#
|
25
|
-
# - `total_amount_confirmation_invalid` if the
|
26
|
-
#
|
27
|
-
#
|
28
|
-
# awareness of each other.
|
23
|
+
# - `total_amount_confirmation_invalid` if the confirmation amount doesn't match
|
24
|
+
# the total amount refunded for the payment. This safeguard is there to prevent
|
25
|
+
# two processes from creating refunds without awareness of each other.
|
29
26
|
#
|
30
|
-
# - `number_of_refunds_exceeded` if five or more
|
31
|
-
#
|
27
|
+
# - `number_of_refunds_exceeded` if five or more refunds have already been
|
28
|
+
# created against the payment.
|
32
29
|
#
|
33
30
|
# Example URL: /refunds
|
34
31
|
# @param options [Hash] parameters as a hash, under a params key.
|
@@ -86,6 +86,22 @@ module GoCardlessPro
|
|
86
86
|
end
|
87
87
|
|
88
88
|
# Updates a subscription object.
|
89
|
+
#
|
90
|
+
# This fails with:
|
91
|
+
#
|
92
|
+
# - `validation_failed` if invalid data is provided when attempting to update a
|
93
|
+
# subscription.
|
94
|
+
#
|
95
|
+
# - `subscription_not_active` if the subscription is no longer active.
|
96
|
+
#
|
97
|
+
# - `subscription_already_ended` if the subscription has taken all payments.
|
98
|
+
#
|
99
|
+
# - `mandate_payments_require_approval` if the amount is being changed and the
|
100
|
+
# mandate requires approval.
|
101
|
+
#
|
102
|
+
# - `exceeded_max_amendments` error if the amount is being changed and the
|
103
|
+
# subscription amount has already been changed 10 times.
|
104
|
+
#
|
89
105
|
# Example URL: /subscriptions/:identity
|
90
106
|
#
|
91
107
|
# @param identity # Unique identifier, beginning with "SB".
|
@@ -110,8 +126,8 @@ module GoCardlessPro
|
|
110
126
|
# Any metadata supplied to this endpoint will be stored on the payment
|
111
127
|
# cancellation event it causes.
|
112
128
|
#
|
113
|
-
# This will fail with a cancellation_failed
|
114
|
-
#
|
129
|
+
# This will fail with a cancellation_failed error if the subscription is already
|
130
|
+
# cancelled or finished.
|
115
131
|
# Example URL: /subscriptions/:identity/actions/cancel
|
116
132
|
#
|
117
133
|
# @param identity # Unique identifier, beginning with "SB".
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GoCardlessPro::Resources::PayoutItem do
|
4
|
+
let(:client) do
|
5
|
+
GoCardlessPro::Client.new(
|
6
|
+
access_token: 'SECRET_TOKEN'
|
7
|
+
)
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:response_headers) { { 'Content-Type' => 'application/json' } }
|
11
|
+
|
12
|
+
describe '#list' do
|
13
|
+
describe 'with no filters' do
|
14
|
+
subject(:get_list_response) { client.payout_items.list }
|
15
|
+
|
16
|
+
before do
|
17
|
+
stub_request(:get, %r{.*api.gocardless.com/payout_items}).to_return(
|
18
|
+
body: {
|
19
|
+
'payout_items' => [{
|
20
|
+
|
21
|
+
'amount' => 'amount-input',
|
22
|
+
'links' => 'links-input',
|
23
|
+
'type' => 'type-input',
|
24
|
+
}],
|
25
|
+
meta: {
|
26
|
+
cursors: {
|
27
|
+
before: nil,
|
28
|
+
after: 'ABC123',
|
29
|
+
},
|
30
|
+
},
|
31
|
+
}.to_json,
|
32
|
+
headers: response_headers
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'wraps each item in the resource class' do
|
37
|
+
expect(get_list_response.records.map(&:class).uniq.first).to eq(GoCardlessPro::Resources::PayoutItem)
|
38
|
+
|
39
|
+
expect(get_list_response.records.first.amount).to eq('amount-input')
|
40
|
+
|
41
|
+
expect(get_list_response.records.first.type).to eq('type-input')
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'exposes the cursors for before and after' do
|
45
|
+
expect(get_list_response.before).to eq(nil)
|
46
|
+
expect(get_list_response.after).to eq('ABC123')
|
47
|
+
end
|
48
|
+
|
49
|
+
specify { expect(get_list_response.api_response.headers).to eql('content-type' => 'application/json') }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#all' do
|
54
|
+
let!(:first_response_stub) do
|
55
|
+
stub_request(:get, %r{.*api.gocardless.com/payout_items$}).to_return(
|
56
|
+
body: {
|
57
|
+
'payout_items' => [{
|
58
|
+
|
59
|
+
'amount' => 'amount-input',
|
60
|
+
'links' => 'links-input',
|
61
|
+
'type' => 'type-input',
|
62
|
+
}],
|
63
|
+
meta: {
|
64
|
+
cursors: { after: 'AB345' },
|
65
|
+
limit: 1,
|
66
|
+
},
|
67
|
+
}.to_json,
|
68
|
+
headers: response_headers
|
69
|
+
)
|
70
|
+
end
|
71
|
+
|
72
|
+
let!(:second_response_stub) do
|
73
|
+
stub_request(:get, %r{.*api.gocardless.com/payout_items\?after=AB345}).to_return(
|
74
|
+
body: {
|
75
|
+
'payout_items' => [{
|
76
|
+
|
77
|
+
'amount' => 'amount-input',
|
78
|
+
'links' => 'links-input',
|
79
|
+
'type' => 'type-input',
|
80
|
+
}],
|
81
|
+
meta: {
|
82
|
+
limit: 2,
|
83
|
+
cursors: {},
|
84
|
+
},
|
85
|
+
}.to_json,
|
86
|
+
headers: response_headers
|
87
|
+
)
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'automatically makes the extra requests' do
|
91
|
+
expect(client.payout_items.all.to_a.length).to eq(2)
|
92
|
+
expect(first_response_stub).to have_been_requested
|
93
|
+
expect(second_response_stub).to have_been_requested
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,212 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GoCardlessPro::Services::PayoutItemsService do
|
4
|
+
let(:client) do
|
5
|
+
GoCardlessPro::Client.new(
|
6
|
+
access_token: 'SECRET_TOKEN'
|
7
|
+
)
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:response_headers) { { 'Content-Type' => 'application/json' } }
|
11
|
+
|
12
|
+
describe '#list' do
|
13
|
+
describe 'with no filters' do
|
14
|
+
subject(:get_list_response) { client.payout_items.list }
|
15
|
+
|
16
|
+
let(:body) do
|
17
|
+
{
|
18
|
+
'payout_items' => [{
|
19
|
+
|
20
|
+
'amount' => 'amount-input',
|
21
|
+
'links' => 'links-input',
|
22
|
+
'type' => 'type-input',
|
23
|
+
}],
|
24
|
+
meta: {
|
25
|
+
cursors: {
|
26
|
+
before: nil,
|
27
|
+
after: 'ABC123',
|
28
|
+
},
|
29
|
+
},
|
30
|
+
}.to_json
|
31
|
+
end
|
32
|
+
|
33
|
+
before do
|
34
|
+
stub_request(:get, %r{.*api.gocardless.com/payout_items}).to_return(
|
35
|
+
body: body,
|
36
|
+
headers: response_headers
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'wraps each item in the resource class' do
|
41
|
+
expect(get_list_response.records.map(&:class).uniq.first).to eq(GoCardlessPro::Resources::PayoutItem)
|
42
|
+
|
43
|
+
expect(get_list_response.records.first.amount).to eq('amount-input')
|
44
|
+
|
45
|
+
expect(get_list_response.records.first.type).to eq('type-input')
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'exposes the cursors for before and after' do
|
49
|
+
expect(get_list_response.before).to eq(nil)
|
50
|
+
expect(get_list_response.after).to eq('ABC123')
|
51
|
+
end
|
52
|
+
|
53
|
+
specify { expect(get_list_response.api_response.headers).to eql('content-type' => 'application/json') }
|
54
|
+
|
55
|
+
describe 'retry behaviour' do
|
56
|
+
before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
|
57
|
+
|
58
|
+
it 'retries timeouts' do
|
59
|
+
stub = stub_request(:get, %r{.*api.gocardless.com/payout_items}).
|
60
|
+
to_timeout.then.to_return(status: 200, headers: response_headers, body: body)
|
61
|
+
|
62
|
+
get_list_response
|
63
|
+
expect(stub).to have_been_requested.twice
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'retries 5XX errors' do
|
67
|
+
stub = stub_request(:get, %r{.*api.gocardless.com/payout_items}).
|
68
|
+
to_return(status: 502,
|
69
|
+
headers: { 'Content-Type' => 'text/html' },
|
70
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
71
|
+
then.to_return(status: 200, headers: response_headers, body: body)
|
72
|
+
|
73
|
+
get_list_response
|
74
|
+
expect(stub).to have_been_requested.twice
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '#all' do
|
81
|
+
let!(:first_response_stub) do
|
82
|
+
stub_request(:get, %r{.*api.gocardless.com/payout_items$}).to_return(
|
83
|
+
body: {
|
84
|
+
'payout_items' => [{
|
85
|
+
|
86
|
+
'amount' => 'amount-input',
|
87
|
+
'links' => 'links-input',
|
88
|
+
'type' => 'type-input',
|
89
|
+
}],
|
90
|
+
meta: {
|
91
|
+
cursors: { after: 'AB345' },
|
92
|
+
limit: 1,
|
93
|
+
},
|
94
|
+
}.to_json,
|
95
|
+
headers: response_headers
|
96
|
+
)
|
97
|
+
end
|
98
|
+
|
99
|
+
let!(:second_response_stub) do
|
100
|
+
stub_request(:get, %r{.*api.gocardless.com/payout_items\?after=AB345}).to_return(
|
101
|
+
body: {
|
102
|
+
'payout_items' => [{
|
103
|
+
|
104
|
+
'amount' => 'amount-input',
|
105
|
+
'links' => 'links-input',
|
106
|
+
'type' => 'type-input',
|
107
|
+
}],
|
108
|
+
meta: {
|
109
|
+
limit: 2,
|
110
|
+
cursors: {},
|
111
|
+
},
|
112
|
+
}.to_json,
|
113
|
+
headers: response_headers
|
114
|
+
)
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'automatically makes the extra requests' do
|
118
|
+
expect(client.payout_items.all.to_a.length).to eq(2)
|
119
|
+
expect(first_response_stub).to have_been_requested
|
120
|
+
expect(second_response_stub).to have_been_requested
|
121
|
+
end
|
122
|
+
|
123
|
+
describe 'retry behaviour' do
|
124
|
+
before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
|
125
|
+
|
126
|
+
it 'retries timeouts' do
|
127
|
+
first_response_stub = stub_request(:get, %r{.*api.gocardless.com/payout_items$}).to_return(
|
128
|
+
body: {
|
129
|
+
'payout_items' => [{
|
130
|
+
|
131
|
+
'amount' => 'amount-input',
|
132
|
+
'links' => 'links-input',
|
133
|
+
'type' => 'type-input',
|
134
|
+
}],
|
135
|
+
meta: {
|
136
|
+
cursors: { after: 'AB345' },
|
137
|
+
limit: 1,
|
138
|
+
},
|
139
|
+
}.to_json,
|
140
|
+
headers: response_headers
|
141
|
+
)
|
142
|
+
|
143
|
+
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/payout_items\?after=AB345}).
|
144
|
+
to_timeout.then.
|
145
|
+
to_return(
|
146
|
+
body: {
|
147
|
+
'payout_items' => [{
|
148
|
+
|
149
|
+
'amount' => 'amount-input',
|
150
|
+
'links' => 'links-input',
|
151
|
+
'type' => 'type-input',
|
152
|
+
}],
|
153
|
+
meta: {
|
154
|
+
limit: 2,
|
155
|
+
cursors: {},
|
156
|
+
},
|
157
|
+
}.to_json,
|
158
|
+
headers: response_headers
|
159
|
+
)
|
160
|
+
|
161
|
+
client.payout_items.all.to_a
|
162
|
+
|
163
|
+
expect(first_response_stub).to have_been_requested
|
164
|
+
expect(second_response_stub).to have_been_requested.twice
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'retries 5XX errors' do
|
168
|
+
first_response_stub = stub_request(:get, %r{.*api.gocardless.com/payout_items$}).to_return(
|
169
|
+
body: {
|
170
|
+
'payout_items' => [{
|
171
|
+
|
172
|
+
'amount' => 'amount-input',
|
173
|
+
'links' => 'links-input',
|
174
|
+
'type' => 'type-input',
|
175
|
+
}],
|
176
|
+
meta: {
|
177
|
+
cursors: { after: 'AB345' },
|
178
|
+
limit: 1,
|
179
|
+
},
|
180
|
+
}.to_json,
|
181
|
+
headers: response_headers
|
182
|
+
)
|
183
|
+
|
184
|
+
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/payout_items\?after=AB345}).
|
185
|
+
to_return(
|
186
|
+
status: 502,
|
187
|
+
body: '<html><body>Response from Cloudflare</body></html>',
|
188
|
+
headers: { 'Content-Type' => 'text/html' }
|
189
|
+
).then.to_return(
|
190
|
+
body: {
|
191
|
+
'payout_items' => [{
|
192
|
+
|
193
|
+
'amount' => 'amount-input',
|
194
|
+
'links' => 'links-input',
|
195
|
+
'type' => 'type-input',
|
196
|
+
}],
|
197
|
+
meta: {
|
198
|
+
limit: 2,
|
199
|
+
cursors: {},
|
200
|
+
},
|
201
|
+
}.to_json,
|
202
|
+
headers: response_headers
|
203
|
+
)
|
204
|
+
|
205
|
+
client.payout_items.all.to_a
|
206
|
+
|
207
|
+
expect(first_response_stub).to have_been_requested
|
208
|
+
expect(second_response_stub).to have_been_requested.twice
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gocardless_pro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GoCardless
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- lib/gocardless_pro/resources/mandate_pdf.rb
|
127
127
|
- lib/gocardless_pro/resources/payment.rb
|
128
128
|
- lib/gocardless_pro/resources/payout.rb
|
129
|
+
- lib/gocardless_pro/resources/payout_item.rb
|
129
130
|
- lib/gocardless_pro/resources/redirect_flow.rb
|
130
131
|
- lib/gocardless_pro/resources/refund.rb
|
131
132
|
- lib/gocardless_pro/resources/subscription.rb
|
@@ -140,6 +141,7 @@ files:
|
|
140
141
|
- lib/gocardless_pro/services/mandate_pdfs_service.rb
|
141
142
|
- lib/gocardless_pro/services/mandates_service.rb
|
142
143
|
- lib/gocardless_pro/services/payments_service.rb
|
144
|
+
- lib/gocardless_pro/services/payout_items_service.rb
|
143
145
|
- lib/gocardless_pro/services/payouts_service.rb
|
144
146
|
- lib/gocardless_pro/services/redirect_flows_service.rb
|
145
147
|
- lib/gocardless_pro/services/refunds_service.rb
|
@@ -159,6 +161,7 @@ files:
|
|
159
161
|
- spec/resources/mandate_pdf_spec.rb
|
160
162
|
- spec/resources/mandate_spec.rb
|
161
163
|
- spec/resources/payment_spec.rb
|
164
|
+
- spec/resources/payout_item_spec.rb
|
162
165
|
- spec/resources/payout_spec.rb
|
163
166
|
- spec/resources/redirect_flow_spec.rb
|
164
167
|
- spec/resources/refund_spec.rb
|
@@ -173,6 +176,7 @@ files:
|
|
173
176
|
- spec/services/mandate_pdfs_service_spec.rb
|
174
177
|
- spec/services/mandates_service_spec.rb
|
175
178
|
- spec/services/payments_service_spec.rb
|
179
|
+
- spec/services/payout_items_service_spec.rb
|
176
180
|
- spec/services/payouts_service_spec.rb
|
177
181
|
- spec/services/redirect_flows_service_spec.rb
|
178
182
|
- spec/services/refunds_service_spec.rb
|
@@ -217,6 +221,7 @@ test_files:
|
|
217
221
|
- spec/resources/mandate_pdf_spec.rb
|
218
222
|
- spec/resources/mandate_spec.rb
|
219
223
|
- spec/resources/payment_spec.rb
|
224
|
+
- spec/resources/payout_item_spec.rb
|
220
225
|
- spec/resources/payout_spec.rb
|
221
226
|
- spec/resources/redirect_flow_spec.rb
|
222
227
|
- spec/resources/refund_spec.rb
|
@@ -231,6 +236,7 @@ test_files:
|
|
231
236
|
- spec/services/mandate_pdfs_service_spec.rb
|
232
237
|
- spec/services/mandates_service_spec.rb
|
233
238
|
- spec/services/payments_service_spec.rb
|
239
|
+
- spec/services/payout_items_service_spec.rb
|
234
240
|
- spec/services/payouts_service_spec.rb
|
235
241
|
- spec/services/redirect_flows_service_spec.rb
|
236
242
|
- spec/services/refunds_service_spec.rb
|