checkout_sdk 1.0.0.beta.2 → 1.0.0.beta.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -2
- data/README.md +34 -0
- data/lib/checkout_sdk/abstract_checkout_sdk_builder.rb +6 -1
- data/lib/checkout_sdk/api_client.rb +24 -4
- data/lib/checkout_sdk/balances/balances.rb +3 -0
- data/lib/checkout_sdk/balances/balances_client.rb +22 -0
- data/lib/checkout_sdk/checkout_api.rb +25 -1
- data/lib/checkout_sdk/checkout_configuration.rb +3 -2
- data/lib/checkout_sdk/checkout_oauth_sdk_builder.rb +9 -2
- data/lib/checkout_sdk/checkout_static_keys_sdk_builder.rb +2 -1
- data/lib/checkout_sdk/checkout_utils.rb +1 -0
- data/lib/checkout_sdk/common/common.rb +1 -0
- data/lib/checkout_sdk/common/country.rb +1 -0
- data/lib/checkout_sdk/common/date_range_query_filter.rb +14 -0
- data/lib/checkout_sdk/disputes/disputes_query_filter.rb +1 -7
- data/lib/checkout_sdk/events/events.rb +4 -0
- data/lib/checkout_sdk/events/events_client.rb +56 -0
- data/lib/checkout_sdk/events/events_query_filter.rb +28 -0
- data/lib/checkout_sdk/oauth_sdk_credentials.rb +5 -2
- data/lib/checkout_sdk/previous/checkout_api.rb +18 -2
- data/lib/checkout_sdk/previous/checkout_previous_static_keys_sdk_builder.rb +2 -1
- data/lib/checkout_sdk/reconciliation/reconciliation.rb +4 -0
- data/lib/checkout_sdk/reconciliation/reconciliation_client.rb +51 -0
- data/lib/checkout_sdk/reconciliation/reconciliation_query_payments_filter.rb +16 -0
- data/lib/checkout_sdk/reports/reports_client.rb +6 -0
- data/lib/checkout_sdk/risk/authentication_result.rb +26 -0
- data/lib/checkout_sdk/risk/authorization_result.rb +14 -0
- data/lib/checkout_sdk/risk/device.rb +32 -0
- data/lib/checkout_sdk/risk/location.rb +14 -0
- data/lib/checkout_sdk/risk/pre_authentication_assessment.rb +41 -0
- data/lib/checkout_sdk/risk/pre_capture_assessment.rb +44 -0
- data/lib/checkout_sdk/risk/risk.rb +17 -0
- data/lib/checkout_sdk/risk/risk_client.rb +27 -0
- data/lib/checkout_sdk/risk/risk_payment.rb +14 -0
- data/lib/checkout_sdk/risk/risk_shipping_details.rb +11 -0
- data/lib/checkout_sdk/risk/source/card_source.rb +30 -0
- data/lib/checkout_sdk/risk/source/customer_source.rb +15 -0
- data/lib/checkout_sdk/risk/source/id_source.rb +18 -0
- data/lib/checkout_sdk/risk/source/risk_payment_source.rb +19 -0
- data/lib/checkout_sdk/risk/source/token_source.rb +24 -0
- data/lib/checkout_sdk/simple_logger.rb +12 -0
- data/lib/checkout_sdk/transfers/create_transfer.rb +20 -0
- data/lib/checkout_sdk/transfers/transfer_destination.rb +11 -0
- data/lib/checkout_sdk/transfers/transfer_source.rb +14 -0
- data/lib/checkout_sdk/transfers/transfer_type.rb +11 -0
- data/lib/checkout_sdk/transfers/transfers.rb +8 -0
- data/lib/checkout_sdk/transfers/transfers_client.rb +27 -0
- data/lib/checkout_sdk/version.rb +1 -1
- data/lib/checkout_sdk/webhooks/webhook_request.rb +25 -0
- data/lib/checkout_sdk/webhooks/webhooks.rb +4 -0
- data/lib/checkout_sdk/webhooks/webhooks_client.rb +50 -0
- data/lib/checkout_sdk.rb +9 -0
- metadata +56 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c24b0f4468ceae122e68a30f9aa9527b8677d9e90ea9b12f6336f1e261c4f8af
|
4
|
+
data.tar.gz: 6844387675cf1ce09cbdaaa39a76cd0b8ee1382525378831a139a72e754e7669
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 667029ef711050e5a7bb77b40e0194dcc6bf372a07d4bb52110b097e6c54690823201dad529420515f5fad625d8871cd9fcda8cb855406cdf203fd000abd0949
|
7
|
+
data.tar.gz: 6609b101318588b281322a09f9609f55b60747653e49c02a233e09e3f2af1aec16d78a15045d36c985bc7feb0a891d64a23398bdf4d8f1b76b2ba956766c433a
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -107,6 +107,20 @@ request = CheckoutSdk::Payments::PaymentRequest.new
|
|
107
107
|
payment_response = api.payments.request_payment(request)
|
108
108
|
```
|
109
109
|
|
110
|
+
## Logging
|
111
|
+
|
112
|
+
The SDK supports custom Log provider, you need to provide your log configuration via SDK initialization by default uses `Logger` from Ruby.
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
api = CheckoutSdk.builder
|
116
|
+
.static_keys
|
117
|
+
.with_secret_key('secret_key')
|
118
|
+
.with_public_key('public_key') # optional, only required for operations related with tokens
|
119
|
+
.with_environment(CheckoutSdk::Environment.sandbox)
|
120
|
+
.with_logger(logger) # your own custom configuration
|
121
|
+
.build
|
122
|
+
```
|
123
|
+
|
110
124
|
## Exception handling
|
111
125
|
|
112
126
|
All the API responses that do not fall in the 2** status codes will cause a `CheckoutSdk::CheckoutApiException`. The
|
@@ -154,6 +168,7 @@ also need to specify the custom `http client` for `multipart requests`:
|
|
154
168
|
http_client = Faraday.new do |conn|
|
155
169
|
conn.options.timeout = 10
|
156
170
|
conn.proxy "http://localhost:8080"
|
171
|
+
conn.response :raise_error
|
157
172
|
end
|
158
173
|
|
159
174
|
multipart_client = Faraday.new do |f|
|
@@ -170,6 +185,25 @@ api = CheckoutSdk.builder
|
|
170
185
|
.build
|
171
186
|
```
|
172
187
|
|
188
|
+
If you want to use your own `http_client` and wants to use `Reports` module, the `get_report_file` function follows a redirect URL from Checkout,
|
189
|
+
Ruby SDK uses `faraday-follow-redirects` which is an [open source](https://github.com/tisba/faraday-follow-redirects) solution that came after Faraday 2.0 deprecation,
|
190
|
+
you must add it otherwise Ruby SDK will not be able to download the contents file, or provide your custom redirect adapter.
|
191
|
+
|
192
|
+
```ruby
|
193
|
+
http_client = Faraday.new do |f|
|
194
|
+
f.response :follow_redirects
|
195
|
+
f.response :raise_error
|
196
|
+
end
|
197
|
+
|
198
|
+
api = CheckoutSdk.builder
|
199
|
+
.static_keys
|
200
|
+
.with_secret_key('secret_key')
|
201
|
+
.with_public_key('public_key') # optional, only required for operations related with tokens
|
202
|
+
.with_environment(CheckoutSdk::Environment.sandbox)
|
203
|
+
.with_http_client(http_client)
|
204
|
+
.build
|
205
|
+
```
|
206
|
+
|
173
207
|
## Building from source
|
174
208
|
|
175
209
|
Once you check out the code from GitHub, the project can be built using gem:
|
@@ -8,7 +8,7 @@ module CheckoutSdk
|
|
8
8
|
# @return [Faraday::Connection]
|
9
9
|
# @!attribute multipart_http_client
|
10
10
|
# @return [Faraday::Connection]
|
11
|
-
attr_accessor :environment, :http_client, :multipart_http_client
|
11
|
+
attr_accessor :environment, :http_client, :multipart_http_client, :logger
|
12
12
|
|
13
13
|
# @param [Environment] environment
|
14
14
|
def with_environment(environment)
|
@@ -28,6 +28,10 @@ module CheckoutSdk
|
|
28
28
|
self
|
29
29
|
end
|
30
30
|
|
31
|
+
def with_logger(logger)
|
32
|
+
@logger = logger
|
33
|
+
end
|
34
|
+
|
31
35
|
def build
|
32
36
|
with_environment(Environment.sandbox) if environment.nil?
|
33
37
|
if http_client.nil?
|
@@ -44,6 +48,7 @@ module CheckoutSdk
|
|
44
48
|
raise CheckoutArgumentException, 'multipart_http_client must be an instance of Faraday::Connection'
|
45
49
|
end
|
46
50
|
end
|
51
|
+
@logger = SimpleLogger.new.logger if @logger.nil?
|
47
52
|
end
|
48
53
|
end
|
49
54
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module CheckoutSdk
|
4
4
|
class ApiClient
|
5
|
-
attr_accessor :client, :multipart_client
|
5
|
+
attr_accessor :client, :multipart_client, :log
|
6
6
|
|
7
7
|
# @param [CheckoutConfiguration] configuration
|
8
8
|
# @param [String] uri
|
@@ -11,6 +11,7 @@ module CheckoutSdk
|
|
11
11
|
@client.url_prefix = uri
|
12
12
|
@multipart_client = configuration.multipart_http_client.clone
|
13
13
|
@multipart_client.url_prefix = uri
|
14
|
+
@log = configuration.logger
|
14
15
|
end
|
15
16
|
|
16
17
|
# @param [String] path
|
@@ -64,6 +65,7 @@ module CheckoutSdk
|
|
64
65
|
json_body = CheckoutSdk::JsonSerializer.to_custom_hash(body).to_json
|
65
66
|
|
66
67
|
begin
|
68
|
+
@log.info "#{method}: /#{path}"
|
67
69
|
response = @client.run_request(method, path, json_body, headers)
|
68
70
|
rescue Faraday::ClientError => e
|
69
71
|
raise CheckoutApiException, e.response
|
@@ -81,8 +83,15 @@ module CheckoutSdk
|
|
81
83
|
end
|
82
84
|
|
83
85
|
def append_params(path, input_params)
|
84
|
-
|
85
|
-
|
86
|
+
raise CheckoutArgumentException, 'Query parameters were not provided' if input_params.nil?
|
87
|
+
|
88
|
+
if input_params.is_a? String
|
89
|
+
params = input_params
|
90
|
+
else
|
91
|
+
hash = CheckoutSdk::JsonSerializer.to_custom_hash(input_params)
|
92
|
+
params = URI.encode_www_form(hash)
|
93
|
+
end
|
94
|
+
|
86
95
|
"#{path}?#{params}"
|
87
96
|
end
|
88
97
|
|
@@ -106,6 +115,7 @@ module CheckoutSdk
|
|
106
115
|
form = build_multipart_request file_request, file
|
107
116
|
|
108
117
|
begin
|
118
|
+
@log.info "post: /#{path}"
|
109
119
|
response = @multipart_client.run_request(:post, path, form, headers)
|
110
120
|
rescue Faraday::ClientError => e
|
111
121
|
raise CheckoutApiException, e.response
|
@@ -120,11 +130,21 @@ module CheckoutSdk
|
|
120
130
|
raise CheckoutApiException, response if response.status < 200 || response.status >= 300
|
121
131
|
|
122
132
|
metadata = CheckoutUtils.map_to_http_metadata(response)
|
123
|
-
body = (
|
133
|
+
body = parse_json_or_contents(response)
|
124
134
|
body = OpenStruct.new if body.nil?
|
125
135
|
body = OpenStruct.new(items: body) if body.is_a? Array
|
126
136
|
body.metadata = metadata if body.is_a? OpenStruct
|
127
137
|
body
|
128
138
|
end
|
139
|
+
|
140
|
+
def parse_json_or_contents(response)
|
141
|
+
return if response.body.nil? || response.body == ''
|
142
|
+
|
143
|
+
if response.body.start_with?('{', '[')
|
144
|
+
JSON.parse(response.body, object_class: OpenStruct)
|
145
|
+
else
|
146
|
+
OpenStruct.new(contents: response.body)
|
147
|
+
end
|
148
|
+
end
|
129
149
|
end
|
130
150
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CheckoutSdk
|
4
|
+
module Balances
|
5
|
+
class BalancesClient < Client
|
6
|
+
BALANCES = 'balances'
|
7
|
+
private_constant :BALANCES
|
8
|
+
|
9
|
+
# @param [ApiClient] api_client
|
10
|
+
# @param [CheckoutConfiguration] configuration
|
11
|
+
def initialize(api_client, configuration)
|
12
|
+
super(api_client, configuration, CheckoutSdk::AuthorizationType::OAUTH)
|
13
|
+
end
|
14
|
+
|
15
|
+
# @param [String] entity_id
|
16
|
+
# @param [String] balances_query
|
17
|
+
def retrieve_entity_balances(entity_id, balances_query)
|
18
|
+
api_client.invoke_get(build_path(BALANCES, entity_id), sdk_authorization, balances_query)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -27,6 +27,12 @@ module CheckoutSdk
|
|
27
27
|
# @return [CheckoutSdk::Accounts::AccountsClient]
|
28
28
|
# @!attribute workflows
|
29
29
|
# @return [CheckoutSdk::Workflows::WorkflowsClient]
|
30
|
+
# @!attribute risk
|
31
|
+
# @return [CheckoutSdk::Risk::RiskClient]
|
32
|
+
# @!attribute balances
|
33
|
+
# @return [CheckoutSdk::Balances::BalancesClient]
|
34
|
+
# @!attribute transfers
|
35
|
+
# @return [CheckoutSdk::Transfers::TransfersClient]
|
30
36
|
class CheckoutApi
|
31
37
|
attr_reader :customers,
|
32
38
|
:disputes,
|
@@ -40,7 +46,10 @@ module CheckoutSdk
|
|
40
46
|
:tokens,
|
41
47
|
:ideal,
|
42
48
|
:accounts,
|
43
|
-
:workflows
|
49
|
+
:workflows,
|
50
|
+
:risk,
|
51
|
+
:balances,
|
52
|
+
:transfers
|
44
53
|
|
45
54
|
# @param [CheckoutConfiguration] configuration
|
46
55
|
def initialize(configuration)
|
@@ -58,6 +67,9 @@ module CheckoutSdk
|
|
58
67
|
@ideal = CheckoutSdk::Apm::IdealClient.new api_client, configuration
|
59
68
|
@workflows = CheckoutSdk::Workflows::WorkflowsClient.new api_client, configuration
|
60
69
|
@accounts = CheckoutSdk::Accounts::AccountsClient.new(api_client, files_client(configuration), configuration)
|
70
|
+
@risk = CheckoutSdk::Risk::RiskClient.new api_client, configuration
|
71
|
+
@balances = CheckoutSdk::Balances::BalancesClient.new(balances_client(configuration), configuration)
|
72
|
+
@transfers = CheckoutSdk::Transfers::TransfersClient.new(transfers_client(configuration), configuration)
|
61
73
|
end
|
62
74
|
|
63
75
|
private
|
@@ -73,5 +85,17 @@ module CheckoutSdk
|
|
73
85
|
def files_client(configuration)
|
74
86
|
ApiClient.new(configuration, configuration.environment.files_uri)
|
75
87
|
end
|
88
|
+
|
89
|
+
# @param [CheckoutConfiguration] configuration
|
90
|
+
# @return [ApiClient]
|
91
|
+
def balances_client(configuration)
|
92
|
+
ApiClient.new(configuration, configuration.environment.balances_uri)
|
93
|
+
end
|
94
|
+
|
95
|
+
# @param [CheckoutConfiguration] configuration
|
96
|
+
# @return [ApiClient]
|
97
|
+
def transfers_client(configuration)
|
98
|
+
ApiClient.new(configuration, configuration.environment.transfers_uri)
|
99
|
+
end
|
76
100
|
end
|
77
101
|
end
|
@@ -8,17 +8,18 @@ module CheckoutSdk
|
|
8
8
|
# @!attribute http_client
|
9
9
|
# @return [Faraday::Connection]
|
10
10
|
class CheckoutConfiguration
|
11
|
-
attr_accessor :credentials, :environment, :http_client, :multipart_http_client
|
11
|
+
attr_accessor :credentials, :environment, :http_client, :multipart_http_client, :logger
|
12
12
|
|
13
13
|
# @param [SdkCredentials] credentials
|
14
14
|
# @param [Environment] environment
|
15
15
|
# @param [Faraday::Connection] http_client
|
16
16
|
# @param [Faraday::Connection] multipart_http_client
|
17
|
-
def initialize(credentials, environment, http_client, multipart_http_client)
|
17
|
+
def initialize(credentials, environment, http_client, multipart_http_client, logger)
|
18
18
|
@credentials = credentials
|
19
19
|
@environment = environment
|
20
20
|
@http_client = http_client
|
21
21
|
@multipart_http_client = multipart_http_client
|
22
|
+
@logger = logger
|
22
23
|
end
|
23
24
|
end
|
24
25
|
end
|
@@ -43,10 +43,17 @@ module CheckoutSdk
|
|
43
43
|
super
|
44
44
|
CheckoutSdk::CheckoutApi.new(
|
45
45
|
CheckoutConfiguration.new(
|
46
|
-
OAuthSdkCredentials.new(client_id,
|
46
|
+
OAuthSdkCredentials.new(client_id,
|
47
|
+
client_secret,
|
48
|
+
scopes,
|
49
|
+
http_client,
|
50
|
+
environment,
|
51
|
+
logger,
|
52
|
+
authorization_uri),
|
47
53
|
environment,
|
48
54
|
http_client,
|
49
|
-
multipart_http_client
|
55
|
+
multipart_http_client,
|
56
|
+
logger
|
50
57
|
)
|
51
58
|
)
|
52
59
|
end
|
@@ -6,10 +6,6 @@ module CheckoutSdk
|
|
6
6
|
# @return [Integer]
|
7
7
|
# @!attribute skip
|
8
8
|
# @return [Integer]
|
9
|
-
# @!attribute from
|
10
|
-
# @return [DateTime]
|
11
|
-
# @!attribute to
|
12
|
-
# @return [DateTime]
|
13
9
|
# @!attribute id
|
14
10
|
# @return [String]
|
15
11
|
# @!attribute statuses
|
@@ -28,11 +24,9 @@ module CheckoutSdk
|
|
28
24
|
# @return [String] - Not available on Previous.
|
29
25
|
# @!attribute payment_mcc
|
30
26
|
# @return [String] - Not available on Previous.
|
31
|
-
class DisputesQueryFilter
|
27
|
+
class DisputesQueryFilter < CheckoutSdk::Common::DateRangeQueryFilter
|
32
28
|
attr_accessor :limit,
|
33
29
|
:skip,
|
34
|
-
:from,
|
35
|
-
:to,
|
36
30
|
:id,
|
37
31
|
:statuses,
|
38
32
|
:payment_id,
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CheckoutSdk
|
4
|
+
module Previous
|
5
|
+
module Events
|
6
|
+
class EventsClient < Client
|
7
|
+
EVENT_TYPES = 'event-types'
|
8
|
+
EVENTS = 'events'
|
9
|
+
NOTIFICATIONS = 'notifications'
|
10
|
+
WEBHOOKS = 'webhooks'
|
11
|
+
EVENT_ID = 'eventId'
|
12
|
+
RETRY = 'retry'
|
13
|
+
private_constant :EVENT_TYPES, :EVENTS, :NOTIFICATIONS, :WEBHOOKS, :EVENT_ID, :RETRY
|
14
|
+
|
15
|
+
# @param [ApiClient] api_client
|
16
|
+
# @param [CheckoutConfiguration] configuration
|
17
|
+
def initialize(api_client, configuration)
|
18
|
+
super(api_client, configuration, CheckoutSdk::AuthorizationType::SECRET_KEY)
|
19
|
+
end
|
20
|
+
|
21
|
+
# @param [String,nil] version
|
22
|
+
def retrieve_all_event_types(version = nil)
|
23
|
+
query = "version=#{version}" unless version.nil?
|
24
|
+
api_client.invoke_get(EVENT_TYPES, sdk_authorization, query)
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param [EventsQueryFilter] query_filter
|
28
|
+
def retrieve_events(query_filter)
|
29
|
+
api_client.invoke_get(EVENTS, sdk_authorization, query_filter)
|
30
|
+
end
|
31
|
+
|
32
|
+
# @param [String] event_id
|
33
|
+
def retrieve_event(event_id)
|
34
|
+
api_client.invoke_get(build_path(EVENTS, event_id), sdk_authorization)
|
35
|
+
end
|
36
|
+
|
37
|
+
# @param [String] event_id
|
38
|
+
# @param [String] notification_id
|
39
|
+
def retrieve_event_notification(event_id, notification_id)
|
40
|
+
api_client.invoke_get(build_path(EVENTS, event_id, NOTIFICATIONS, notification_id), sdk_authorization)
|
41
|
+
end
|
42
|
+
|
43
|
+
# @param [String] event_id
|
44
|
+
# @param [String] webhook_id
|
45
|
+
def retry_webhook(event_id, webhook_id)
|
46
|
+
api_client.invoke_post(build_path(EVENTS, event_id, WEBHOOKS, webhook_id), sdk_authorization)
|
47
|
+
end
|
48
|
+
|
49
|
+
# @param [String] event_id
|
50
|
+
def retry_all_webhooks(event_id)
|
51
|
+
api_client.invoke_post(build_path(EVENTS, event_id, WEBHOOKS, RETRY), sdk_authorization)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CheckoutSdk
|
4
|
+
module Previous
|
5
|
+
module Events
|
6
|
+
# @!attribute payment_id
|
7
|
+
# @return [String]
|
8
|
+
# @!attribute charge_id
|
9
|
+
# @return [String]
|
10
|
+
# @!attribute track_id
|
11
|
+
# @return [String]
|
12
|
+
# @!attribute reference
|
13
|
+
# @return [String]
|
14
|
+
# @!attribute skip
|
15
|
+
# @return [Integer]
|
16
|
+
# @!attribute limit
|
17
|
+
# @return [Integer]
|
18
|
+
class EventsQueryFilter < CheckoutSdk::Common::DateRangeQueryFilter
|
19
|
+
attr_accessor :payment_id,
|
20
|
+
:charge_id,
|
21
|
+
:track_id,
|
22
|
+
:reference,
|
23
|
+
:skip,
|
24
|
+
:limit
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -22,7 +22,8 @@ module CheckoutSdk
|
|
22
22
|
:scopes,
|
23
23
|
:http_client,
|
24
24
|
:environment,
|
25
|
-
:authorization_uri
|
25
|
+
:authorization_uri,
|
26
|
+
:log
|
26
27
|
|
27
28
|
# @param [String] client_id
|
28
29
|
# @param [String] client_secret
|
@@ -30,7 +31,7 @@ module CheckoutSdk
|
|
30
31
|
# @param [Faraday::Connection] http_client
|
31
32
|
# @param [CheckoutSdk::Environment] environment
|
32
33
|
# @param [String, nil] auth_uri
|
33
|
-
def initialize(client_id, client_secret, scopes, http_client, environment, auth_uri = nil)
|
34
|
+
def initialize(client_id, client_secret, scopes, http_client, environment, logger, auth_uri = nil)
|
34
35
|
validate_arguments client_id, client_secret, environment, auth_uri
|
35
36
|
@client_id = client_id
|
36
37
|
@client_secret = client_secret
|
@@ -38,6 +39,7 @@ module CheckoutSdk
|
|
38
39
|
@authorization_uri = auth_uri.nil? ? environment.authorization_uri : auth_uri
|
39
40
|
@oauth_http_client = http_client.clone
|
40
41
|
@oauth_http_client.url_prefix = @authorization_uri
|
42
|
+
@log = logger
|
41
43
|
build_access_token
|
42
44
|
end
|
43
45
|
|
@@ -67,6 +69,7 @@ module CheckoutSdk
|
|
67
69
|
body = URI.encode_www_form data
|
68
70
|
|
69
71
|
begin
|
72
|
+
@log.info "post: #{authorization_uri}"
|
70
73
|
response = @oauth_http_client.run_request(:post, @authorization_uri, body, headers)
|
71
74
|
rescue Faraday::ClientError => e
|
72
75
|
raise CheckoutAuthorizationException, e.response
|
@@ -6,7 +6,7 @@ module CheckoutSdk
|
|
6
6
|
# @return [CheckoutSdk::Customers::CustomerClient]
|
7
7
|
# @!attribute disputes
|
8
8
|
# @return [CheckoutSdk::Disputes::DisputesClient]
|
9
|
-
# @!attribute
|
9
|
+
# @!attribute hosted
|
10
10
|
# @return [CheckoutSdk::Payments::HostedPaymentsClient]
|
11
11
|
# @!attribute instruments
|
12
12
|
# @return [CheckoutSdk::Previous::Instruments::InstrumentsClient]
|
@@ -22,6 +22,14 @@ module CheckoutSdk
|
|
22
22
|
# @return [CheckoutSdk::Previous::Apm::KlarnaClient]
|
23
23
|
# @!attribute sepa
|
24
24
|
# @return [CheckoutSdk::Previous::Apm::SepaClient]
|
25
|
+
# @!attribute risk
|
26
|
+
# @return [CheckoutSdk::Risk::RiskClient]
|
27
|
+
# @!attribute reconciliation
|
28
|
+
# @return [CheckoutSdk::Previous::Reconciliation::ReconciliationClient]
|
29
|
+
# @!attribute webhooks
|
30
|
+
# @return [CheckoutSdk::Previous::Webhooks::WebhooksClient]
|
31
|
+
# @!attribute events
|
32
|
+
# @return [CheckoutSdk::Previous::Events::EventsClient]
|
25
33
|
class CheckoutApi
|
26
34
|
attr_reader :customers,
|
27
35
|
:disputes,
|
@@ -32,7 +40,11 @@ module CheckoutSdk
|
|
32
40
|
:sources,
|
33
41
|
:tokens,
|
34
42
|
:klarna,
|
35
|
-
:sepa
|
43
|
+
:sepa,
|
44
|
+
:risk,
|
45
|
+
:reconciliation,
|
46
|
+
:webhooks,
|
47
|
+
:events
|
36
48
|
|
37
49
|
# @param [CheckoutConfiguration] configuration
|
38
50
|
def initialize(configuration)
|
@@ -47,6 +59,10 @@ module CheckoutSdk
|
|
47
59
|
@tokens = CheckoutSdk::Tokens::TokensClient.new api_client, configuration
|
48
60
|
@klarna = CheckoutSdk::Previous::Apm::KlarnaClient.new api_client, configuration
|
49
61
|
@sepa = CheckoutSdk::Previous::Apm::SepaClient.new api_client, configuration
|
62
|
+
@risk = CheckoutSdk::Risk::RiskClient.new api_client, configuration
|
63
|
+
@reconciliation = CheckoutSdk::Previous::Reconciliation::ReconciliationClient.new api_client, configuration
|
64
|
+
@webhooks = CheckoutSdk::Previous::Webhooks::WebhooksClient.new api_client, configuration
|
65
|
+
@events = CheckoutSdk::Previous::Events::EventsClient.new api_client, configuration
|
50
66
|
end
|
51
67
|
|
52
68
|
private
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CheckoutSdk
|
4
|
+
module Previous
|
5
|
+
module Reconciliation
|
6
|
+
class ReconciliationClient < Client
|
7
|
+
REPORTING = 'reporting'
|
8
|
+
PAYMENTS = 'payments'
|
9
|
+
STATEMENTS = 'statements'
|
10
|
+
DOWNLOAD = 'download'
|
11
|
+
private_constant :REPORTING, :PAYMENTS, :STATEMENTS, :DOWNLOAD
|
12
|
+
|
13
|
+
# @param [ApiClient] api_client
|
14
|
+
# @param [CheckoutConfiguration] configuration
|
15
|
+
def initialize(api_client, configuration)
|
16
|
+
super(api_client, configuration, CheckoutSdk::AuthorizationType::SECRET_KEY)
|
17
|
+
end
|
18
|
+
|
19
|
+
# @param [ReconciliationQueryPaymentsFilter] payments_filter
|
20
|
+
def query_payments_report(payments_filter)
|
21
|
+
api_client.invoke_get(build_path(REPORTING, PAYMENTS), sdk_authorization, payments_filter)
|
22
|
+
end
|
23
|
+
|
24
|
+
# @param [String] payment_id
|
25
|
+
def single_payment_report(payment_id)
|
26
|
+
api_client.invoke_get(build_path(REPORTING, PAYMENTS, payment_id), sdk_authorization)
|
27
|
+
end
|
28
|
+
|
29
|
+
# @param [CheckoutSdk::Common::DateRangeQueryFilter] data_range
|
30
|
+
def query_statements_report(data_range)
|
31
|
+
api_client.invoke_get(build_path(REPORTING, STATEMENTS), sdk_authorization, data_range)
|
32
|
+
end
|
33
|
+
|
34
|
+
# @param [CheckoutSdk::Common::DateRangeQueryFilter] data_range
|
35
|
+
def retrieve_csv_payment_report(data_range)
|
36
|
+
api_client.invoke_get(build_path(REPORTING, PAYMENTS, DOWNLOAD), sdk_authorization, data_range)
|
37
|
+
end
|
38
|
+
|
39
|
+
# @param [String] statement_id
|
40
|
+
def retrieve_csv_single_statement_report(statement_id)
|
41
|
+
api_client.invoke_get(build_path(REPORTING, STATEMENTS, statement_id, PAYMENTS, DOWNLOAD), sdk_authorization)
|
42
|
+
end
|
43
|
+
|
44
|
+
# @param [CheckoutSdk::Common::DateRangeQueryFilter] data_range
|
45
|
+
def retrieve_csv_statements_report(data_range)
|
46
|
+
api_client.invoke_get(build_path(REPORTING, STATEMENTS, DOWNLOAD), sdk_authorization, data_range)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CheckoutSdk
|
4
|
+
module Previous
|
5
|
+
module Reconciliation
|
6
|
+
# @!attribute reference
|
7
|
+
# @return [String]
|
8
|
+
# @!attribute limit
|
9
|
+
# @return [Integer]
|
10
|
+
class ReconciliationQueryPaymentsFilter < CheckoutSdk::Common::DateRangeQueryFilter
|
11
|
+
attr_accessor :reference,
|
12
|
+
:limit
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -21,6 +21,12 @@ module CheckoutSdk
|
|
21
21
|
def get_report_details(report_id)
|
22
22
|
api_client.invoke_get(build_path(REPORTS, report_id), sdk_authorization)
|
23
23
|
end
|
24
|
+
|
25
|
+
# @param [String] report_id
|
26
|
+
# @param [String] file_id
|
27
|
+
def get_report_file(report_id, file_id)
|
28
|
+
api_client.invoke_get(build_path(REPORTS, report_id, FILES, file_id), sdk_authorization)
|
29
|
+
end
|
24
30
|
end
|
25
31
|
end
|
26
32
|
end
|