smartpay 0.7.0 → 0.8.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/smartpay/api.rb +23 -23
- data/lib/smartpay/client.rb +45 -29
- data/lib/smartpay/configuration.rb +18 -4
- data/lib/smartpay/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f015233da3625d9cb3178fb715f7885d9cd0680816dbb368a0ed4ab530577a37
|
4
|
+
data.tar.gz: 98909c98c67fd90c2bb66862edb643f54680b236bdb027e8f6ae6bf3fdd11e77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 556f127ac1e15bec24476e88d2dfaa47918d19818ce24c3a208ee2e6d0a1a367e6f4a97613060d855358414c55980f446d5ef924c06fac50e2912ed69e39da0b
|
7
|
+
data.tar.gz: d5c98640761e4ae80d39520d8b9d8b97864cc13ab3e50fbcea6bee56f794331c610012e4aff41d6aff20bf65013387719e1db306b0784db09471d445db369738
|
data/lib/smartpay/api.rb
CHANGED
@@ -3,23 +3,23 @@
|
|
3
3
|
module Smartpay
|
4
4
|
class Api
|
5
5
|
class << self
|
6
|
-
def create_checkout_session(payload)
|
7
|
-
return create_checkout_session_for_token(payload) if payload[:mode] == "token"
|
6
|
+
def create_checkout_session(payload, idempotency_key: nil)
|
7
|
+
return create_checkout_session_for_token(payload, idempotency_key: idempotency_key) if payload[:mode] == "token"
|
8
8
|
|
9
9
|
Responses::CheckoutSession.new(
|
10
|
-
Client.post("/checkout-sessions", params: {}, payload: Requests::CheckoutSession.new(payload).as_hash)
|
10
|
+
Client.post("/checkout-sessions", params: {}, payload: Requests::CheckoutSession.new(payload).as_hash, idempotency_key: idempotency_key)
|
11
11
|
)
|
12
12
|
end
|
13
13
|
|
14
|
-
def create_checkout_session_for_token(payload)
|
14
|
+
def create_checkout_session_for_token(payload, idempotency_key: nil)
|
15
15
|
Responses::CheckoutSession.new(
|
16
|
-
Client.post("/checkout-sessions", params: {}, payload: Requests::CheckoutSessionForToken.new(payload).as_hash)
|
16
|
+
Client.post("/checkout-sessions", params: {}, payload: Requests::CheckoutSessionForToken.new(payload).as_hash, idempotency_key: idempotency_key)
|
17
17
|
)
|
18
18
|
end
|
19
19
|
|
20
|
-
def create_order(payload)
|
20
|
+
def create_order(payload, idempotency_key: nil)
|
21
21
|
Responses::Base.new(
|
22
|
-
Client.post("/orders", params:{}, payload: Requests::Order.new(payload).as_hash)
|
22
|
+
Client.post("/orders", params:{}, payload: Requests::Order.new(payload).as_hash, idempotency_key: idempotency_key)
|
23
23
|
)
|
24
24
|
end
|
25
25
|
|
@@ -31,34 +31,34 @@ module Smartpay
|
|
31
31
|
Responses::Base.new(Client.get("/orders/%s" % id, params: { expand: expand }))
|
32
32
|
end
|
33
33
|
|
34
|
-
def cancel_order(id)
|
34
|
+
def cancel_order(id, idempotency_key: nil)
|
35
35
|
Responses::Base.new(
|
36
|
-
Client.put("/orders/%s/cancellation" % id)
|
36
|
+
Client.put("/orders/%s/cancellation" % id, idempotency_key: idempotency_key)
|
37
37
|
)
|
38
38
|
end
|
39
39
|
|
40
|
-
def create_payment(payload)
|
40
|
+
def create_payment(payload, idempotency_key: nil)
|
41
41
|
Responses::Base.new(
|
42
|
-
Client.post("/payments", params:{}, payload: Requests::Payment.new(payload).as_hash)
|
42
|
+
Client.post("/payments", params:{}, payload: Requests::Payment.new(payload).as_hash, idempotency_key: idempotency_key)
|
43
43
|
)
|
44
44
|
end
|
45
45
|
|
46
|
-
def capture(payload)
|
47
|
-
create_payment(payload)
|
46
|
+
def capture(payload, idempotency_key: nil)
|
47
|
+
create_payment(payload, idempotency_key: idempotency_key)
|
48
48
|
end
|
49
49
|
|
50
50
|
def get_payment(id, expand: '' )
|
51
51
|
Responses::Base.new(Client.get("/payments/%s" % id, params: { expand: expand }))
|
52
52
|
end
|
53
53
|
|
54
|
-
def create_refund(payload)
|
54
|
+
def create_refund(payload, idempotency_key: nil)
|
55
55
|
Responses::Base.new(
|
56
|
-
Client.post("/refunds", params:{}, payload: Requests::Refund.new(payload).as_hash)
|
56
|
+
Client.post("/refunds", params:{}, payload: Requests::Refund.new(payload).as_hash, idempotency_key: idempotency_key)
|
57
57
|
)
|
58
58
|
end
|
59
59
|
|
60
|
-
def refund(payload)
|
61
|
-
create_refund(payload)
|
60
|
+
def refund(payload, idempotency_key: nil)
|
61
|
+
create_refund(payload, idempotency_key: idempotency_key)
|
62
62
|
end
|
63
63
|
|
64
64
|
def get_refund(id, expand: '' )
|
@@ -73,16 +73,16 @@ module Smartpay
|
|
73
73
|
Responses::Base.new(Client.get("/tokens/%s" % id))
|
74
74
|
end
|
75
75
|
|
76
|
-
def enable_token(id)
|
77
|
-
Responses::Base.new(Client.put("/tokens/%s/enable" % id))
|
76
|
+
def enable_token(id, idempotency_key: nil)
|
77
|
+
Responses::Base.new(Client.put("/tokens/%s/enable" % id, idempotency_key: idempotency_key))
|
78
78
|
end
|
79
79
|
|
80
|
-
def disable_token(id)
|
81
|
-
Responses::Base.new(Client.put("/tokens/%s/disable" % id))
|
80
|
+
def disable_token(id, idempotency_key: nil)
|
81
|
+
Responses::Base.new(Client.put("/tokens/%s/disable" % id, idempotency_key: idempotency_key))
|
82
82
|
end
|
83
83
|
|
84
|
-
def delete_token(id)
|
85
|
-
Responses::Base.new(Client.delete("/tokens/%s" % id))
|
84
|
+
def delete_token(id, idempotency_key: nil)
|
85
|
+
Responses::Base.new(Client.delete("/tokens/%s" % id, idempotency_key: idempotency_key))
|
86
86
|
end
|
87
87
|
end
|
88
88
|
end
|
data/lib/smartpay/client.rb
CHANGED
@@ -9,45 +9,57 @@ module Smartpay
|
|
9
9
|
class << self
|
10
10
|
def get(path, params: {})
|
11
11
|
request_params = default_params.merge(params)
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
with_retries(retry_options) do
|
13
|
+
RestClient::Request.execute(
|
14
|
+
method: :get,
|
15
|
+
url: api_url(path),
|
16
|
+
headers: headers.merge(params: request_params),
|
17
|
+
timeout: timeout
|
18
|
+
)
|
19
|
+
end
|
15
20
|
end
|
16
21
|
|
17
|
-
|
22
|
+
|
23
|
+
def post(path, params: {}, payload: {}, idempotency_key: nil)
|
18
24
|
request_params = default_params.merge(params)
|
19
25
|
request_payload = default_payload.merge(payload)
|
20
|
-
idempotency_key
|
21
|
-
with_retries(
|
22
|
-
RestClient::Request.execute(
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
idempotency_key ||= nonce
|
27
|
+
with_retries(retry_options) do
|
28
|
+
RestClient::Request.execute(
|
29
|
+
method: :post,
|
30
|
+
url: api_url(path),
|
31
|
+
headers: headers.merge({ Idempotency_Key: idempotency_key }).merge(params: request_params),
|
32
|
+
timeout: timeout,
|
33
|
+
payload: request_payload.to_json
|
34
|
+
)
|
27
35
|
end
|
28
36
|
end
|
29
37
|
|
30
|
-
def put(path, params: {}, payload: {})
|
31
|
-
request_params = default_params.merge(params)
|
38
|
+
def put(path, params: {}, payload: {}, idempotency_key: nil)
|
39
|
+
request_params = default_params.merge(params)
|
32
40
|
request_payload = default_payload.merge(payload)
|
33
|
-
idempotency_key
|
34
|
-
with_retries(
|
35
|
-
RestClient::Request.execute(
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
41
|
+
idempotency_key ||= nonce
|
42
|
+
with_retries(retry_options) do
|
43
|
+
RestClient::Request.execute(
|
44
|
+
method: :put,
|
45
|
+
url: api_url(path),
|
46
|
+
headers: headers.merge({ Idempotency_Key: idempotency_key }).merge(params: request_params),
|
47
|
+
timeout: timeout,
|
48
|
+
payload: request_payload.to_json
|
49
|
+
)
|
40
50
|
end
|
41
51
|
end
|
42
52
|
|
43
|
-
def delete(path, params: {})
|
44
|
-
request_params = default_params.merge(params)
|
45
|
-
idempotency_key
|
46
|
-
with_retries(
|
47
|
-
RestClient::Request.execute(
|
48
|
-
|
49
|
-
|
50
|
-
|
53
|
+
def delete(path, params: {}, idempotency_key: nil)
|
54
|
+
request_params = default_params.merge(params)
|
55
|
+
idempotency_key ||= nonce
|
56
|
+
with_retries(retry_options) do
|
57
|
+
RestClient::Request.execute(
|
58
|
+
method: :delete,
|
59
|
+
url: api_url(path),
|
60
|
+
headers: headers.merge({ Idempotency_Key: idempotency_key }).merge(params: request_params),
|
61
|
+
timeout: timeout
|
62
|
+
)
|
51
63
|
end
|
52
64
|
end
|
53
65
|
|
@@ -62,7 +74,7 @@ module Smartpay
|
|
62
74
|
end
|
63
75
|
|
64
76
|
def timeout
|
65
|
-
Smartpay.configuration.
|
77
|
+
Smartpay.configuration.request_timeout
|
66
78
|
end
|
67
79
|
|
68
80
|
def headers
|
@@ -84,6 +96,10 @@ module Smartpay
|
|
84
96
|
}.freeze
|
85
97
|
end
|
86
98
|
|
99
|
+
def retry_options
|
100
|
+
Smartpay.configuration.retry_options
|
101
|
+
end
|
102
|
+
|
87
103
|
def default_payload
|
88
104
|
{}.freeze
|
89
105
|
end
|
@@ -1,16 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "rest-client"
|
4
|
+
|
3
5
|
module Smartpay
|
4
6
|
class Configuration
|
5
7
|
attr_accessor :public_key, :secret_key
|
6
|
-
attr_writer :
|
8
|
+
attr_writer :request_timeout, :api_url, :checkout_url, :retry_options
|
7
9
|
|
8
10
|
DEFAULT_TIMEOUT_SETTING = 30
|
9
11
|
DEFAULT_API_URL = "https://api.smartpay.co/v1"
|
10
12
|
DEFAULT_CHECKOUT_URL = "https://checkout.smartpay.co"
|
13
|
+
DEFAULT_RETRY_OPTIONS = {
|
14
|
+
max_tries: 1,
|
15
|
+
base_sleep_seconds: 0.5,
|
16
|
+
max_sleep_seconds: 1.0,
|
17
|
+
rescue: [RestClient::InternalServerError,RestClient::BadGateway,
|
18
|
+
RestClient::ServiceUnavailable, RestClient::GatewayTimeout]
|
19
|
+
}.freeze
|
11
20
|
|
12
21
|
def initialize
|
13
|
-
@
|
22
|
+
@request_timeout = DEFAULT_TIMEOUT_SETTING
|
14
23
|
@api_url = if in_development_mode?
|
15
24
|
ENV["SMARTPAY_API_PREFIX"].downcase || DEFAULT_API_URL
|
16
25
|
else
|
@@ -21,10 +30,11 @@ module Smartpay
|
|
21
30
|
else
|
22
31
|
DEFAULT_CHECKOUT_URL
|
23
32
|
end
|
33
|
+
@retry_options = DEFAULT_RETRY_OPTIONS
|
24
34
|
end
|
25
35
|
|
26
|
-
def
|
27
|
-
@
|
36
|
+
def request_timeout
|
37
|
+
@request_timeout || DEFAULT_TIMEOUT_SETTING
|
28
38
|
end
|
29
39
|
|
30
40
|
def api_url
|
@@ -39,6 +49,10 @@ module Smartpay
|
|
39
49
|
@checkout_url || DEFAULT_CHECKOUT_URL
|
40
50
|
end
|
41
51
|
|
52
|
+
def retry_options
|
53
|
+
@retry_options || DEFAULT_RETRY_OPTIONS
|
54
|
+
end
|
55
|
+
|
42
56
|
private
|
43
57
|
|
44
58
|
def in_development_mode?
|
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.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Smartpay
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-01-
|
11
|
+
date: 2023-01-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|