smartpay 0.4.0 → 0.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/Gemfile +6 -2
- data/lib/smartpay/api.rb +19 -5
- data/lib/smartpay/client.rb +38 -7
- data/lib/smartpay/requests/payment.rb +1 -0
- data/lib/smartpay/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0cd94594c52188072ee764c3d9abbab864773af324310b3f0a6e5747570e04e
|
4
|
+
data.tar.gz: 7fe589e25744b8891af1b91786d26c4f7e67e13fcf4ba80c9d847ea31461181f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8973913b6c40ddd9fa7449d43696c823b25ac36483f070c3fe1a6cafffe8f030b70171ee2ff7c8ae9876b336a820efaf17b1de85f0bc2b0245b2d6add321f47e
|
7
|
+
data.tar.gz: 6b7e1721a942ace0254e701c23186f0b2c0eaa6d2821e9fd5bf4339b782e58b8eaa9d2b6aa39e40b6c1babbb462c199f964f4bf9a9f2ec4664f8d39b9bef25d8
|
data/Gemfile
CHANGED
@@ -5,10 +5,14 @@ source "https://rubygems.org"
|
|
5
5
|
# Specify your gem's dependencies in smartpay.gemspec
|
6
6
|
gemspec
|
7
7
|
|
8
|
+
gem "rest-client", "~> 2.1.0"
|
9
|
+
|
10
|
+
gem "securerandom", "~> 0.2.0"
|
11
|
+
|
12
|
+
gem "retries", "~> 0.0.5"
|
13
|
+
|
8
14
|
gem "rake", "~> 13.0"
|
9
15
|
|
10
16
|
gem "rspec", "~> 3.0"
|
11
17
|
|
12
18
|
gem "rubocop", "~> 1.7"
|
13
|
-
|
14
|
-
gem "thin"
|
data/lib/smartpay/api.rb
CHANGED
@@ -5,21 +5,27 @@ module Smartpay
|
|
5
5
|
class << self
|
6
6
|
def create_checkout_session(payload)
|
7
7
|
Responses::CheckoutSession.new(
|
8
|
-
Client.post("/checkout-sessions", Requests::CheckoutSession.new(payload).as_hash)
|
8
|
+
Client.post("/checkout-sessions", params: {}, payload: Requests::CheckoutSession.new(payload).as_hash)
|
9
9
|
)
|
10
10
|
end
|
11
11
|
|
12
12
|
def get_orders(page_token: nil, max_results: nil, expand: '' )
|
13
|
-
Responses::Base.new(Client.get("/orders", { pageToken: page_token, maxResults: max_results, expand: expand }))
|
13
|
+
Responses::Base.new(Client.get("/orders", params: { pageToken: page_token, maxResults: max_results, expand: expand }))
|
14
14
|
end
|
15
15
|
|
16
16
|
def get_order(id, expand: '' )
|
17
|
-
Responses::Base.new(Client.get("/orders/%s" % id, { expand: expand }))
|
17
|
+
Responses::Base.new(Client.get("/orders/%s" % id, params: { expand: expand }))
|
18
|
+
end
|
19
|
+
|
20
|
+
def cancel_order(id)
|
21
|
+
Responses::Base.new(
|
22
|
+
Client.put("/orders/%s/cancellation" % id)
|
23
|
+
)
|
18
24
|
end
|
19
25
|
|
20
26
|
def create_payment(payload)
|
21
27
|
Responses::Base.new(
|
22
|
-
Client.post("/payments", Requests::Payment.new(payload).as_hash)
|
28
|
+
Client.post("/payments", params:{}, payload: Requests::Payment.new(payload).as_hash)
|
23
29
|
)
|
24
30
|
end
|
25
31
|
|
@@ -27,9 +33,13 @@ module Smartpay
|
|
27
33
|
create_payment(payload)
|
28
34
|
end
|
29
35
|
|
36
|
+
def get_payment(id, expand: '' )
|
37
|
+
Responses::Base.new(Client.get("/payments/%s" % id, params: { expand: expand }))
|
38
|
+
end
|
39
|
+
|
30
40
|
def create_refund(payload)
|
31
41
|
Responses::Base.new(
|
32
|
-
Client.post("/refunds", Requests::Refund.new(payload).as_hash)
|
42
|
+
Client.post("/refunds", params:{}, payload: Requests::Refund.new(payload).as_hash)
|
33
43
|
)
|
34
44
|
end
|
35
45
|
|
@@ -37,6 +47,10 @@ module Smartpay
|
|
37
47
|
create_refund(payload)
|
38
48
|
end
|
39
49
|
|
50
|
+
def get_refund(id, expand: '' )
|
51
|
+
Responses::Base.new(Client.get("/refunds/%s" % id, params: { expand: expand }))
|
52
|
+
end
|
53
|
+
|
40
54
|
end
|
41
55
|
end
|
42
56
|
end
|
data/lib/smartpay/client.rb
CHANGED
@@ -1,27 +1,54 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "rest-client"
|
4
|
+
require "retries"
|
5
|
+
require "securerandom"
|
4
6
|
|
5
7
|
module Smartpay
|
6
8
|
class Client
|
7
9
|
class << self
|
8
|
-
def get(path,
|
9
|
-
|
10
|
+
def get(path, params: {})
|
11
|
+
request_params = default_params.merge(params)
|
10
12
|
response = RestClient::Request.execute(method: :get, url: api_url(path),
|
11
|
-
headers: headers.merge(params:
|
13
|
+
headers: headers.merge(params: request_params),
|
12
14
|
timeout: timeout)
|
13
15
|
JSON.parse(response.body, symbolize_names: true)
|
14
16
|
end
|
15
17
|
|
16
|
-
def post(path, payload
|
18
|
+
def post(path, params: {}, payload: {})
|
19
|
+
request_params = default_params.merge(params)
|
20
|
+
request_payload = default_payload.merge(payload)
|
21
|
+
idempotency_key = nonce
|
22
|
+
response = with_retries(:max_tries => 1, :rescue => [RestClient::BadRequest, RestClient::BadGateway, RestClient::ServiceUnavailable, RestClient::GatewayTimeout]) do
|
23
|
+
RestClient::Request.execute(method: :post, url: api_url(path),
|
24
|
+
params: request_params,
|
25
|
+
headers: headers.merge({Idempotency_Key: idempotency_key}).merge(params: request_params),
|
26
|
+
timeout: timeout,
|
27
|
+
payload: request_payload.to_json)
|
28
|
+
end
|
29
|
+
JSON.parse(response.body, symbolize_names: true)
|
30
|
+
end
|
31
|
+
|
32
|
+
def put(path, params: {}, payload: {})
|
33
|
+
request_params = default_params.merge(params).merge({'Idempotency-Key': nonce})
|
17
34
|
request_payload = default_payload.merge(payload)
|
18
|
-
|
19
|
-
|
35
|
+
idempotency_key = nonce
|
36
|
+
response = with_retries(:max_tries => 1, :rescue => [RestClient::InternalServerError, RestClient::BadGateway, RestClient::ServiceUnavailable, RestClient::GatewayTimeout]) do
|
37
|
+
RestClient::Request.execute(method: :put, url: api_url(path),
|
38
|
+
params: request_params,
|
39
|
+
headers: headers.merge({Idempotency_Key: idempotency_key}).merge(params: request_params),
|
40
|
+
timeout: timeout,
|
41
|
+
payload: request_payload.to_json)
|
42
|
+
end
|
20
43
|
JSON.parse(response.body, symbolize_names: true)
|
21
44
|
end
|
22
45
|
|
23
46
|
private
|
24
47
|
|
48
|
+
def nonce
|
49
|
+
SecureRandom.hex
|
50
|
+
end
|
51
|
+
|
25
52
|
def api_url(path)
|
26
53
|
"#{Smartpay.configuration.api_url}#{path}"
|
27
54
|
end
|
@@ -42,12 +69,16 @@ module Smartpay
|
|
42
69
|
Smartpay.configuration.secret_key
|
43
70
|
end
|
44
71
|
|
45
|
-
def
|
72
|
+
def default_params
|
46
73
|
{
|
47
74
|
'dev-lang': :ruby,
|
48
75
|
'sdk-version': Smartpay::VERSION
|
49
76
|
}.freeze
|
50
77
|
end
|
78
|
+
|
79
|
+
def default_payload
|
80
|
+
{}.freeze
|
81
|
+
end
|
51
82
|
end
|
52
83
|
end
|
53
84
|
end
|
@@ -30,6 +30,7 @@ module Smartpay
|
|
30
30
|
amount: payload.dig(:amount),
|
31
31
|
currency: payload.dig(:currency),
|
32
32
|
reference: payload.dig(:reference),
|
33
|
+
cancelRemainder: payload.dig(:cancel_remainder),
|
33
34
|
description: payload.dig(:description),
|
34
35
|
metadata: payload.dig(:metadata) || {},
|
35
36
|
}
|
data/lib/smartpay/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smartpay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Smartpay
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '0'
|
95
95
|
requirements: []
|
96
|
-
rubygems_version: 3.
|
96
|
+
rubygems_version: 3.3.7
|
97
97
|
signing_key:
|
98
98
|
specification_version: 4
|
99
99
|
summary: The Smartpay Ruby SDK offers easy access to Smartpay API from applications
|