smartpay 0.9.0 → 0.10.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 +103 -9
- data/lib/smartpay/client.rb +16 -29
- data/lib/smartpay/errors/invalid_request_payload_error.rb +2 -1
- data/lib/smartpay/requests/coupon.rb +43 -0
- data/lib/smartpay/requests/coupon_update.rb +28 -0
- data/lib/smartpay/requests/payment.rb +5 -8
- data/lib/smartpay/requests/payment_update.rb +28 -0
- data/lib/smartpay/requests/promotion_code.rb +40 -0
- data/lib/smartpay/requests/promotion_code_update.rb +27 -0
- data/lib/smartpay/requests/refund.rb +12 -15
- data/lib/smartpay/requests/refund_update.rb +28 -0
- data/lib/smartpay/requests/validator.rb +2 -1
- data/lib/smartpay/requests/webhook_endpoint.rb +69 -0
- data/lib/smartpay/requests/webhook_endpoint_update.rb +26 -0
- data/lib/smartpay/version.rb +1 -1
- data/lib/smartpay.rb +11 -2
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 256e620407cf05ccfef77cd18d2d56624538e195e9b4117069ed393e06df1856
|
4
|
+
data.tar.gz: bae50f58eea501a61be27087be3cff2c9d9da184cdcd7feb27e5167fbe721763
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8320901658f0769df62e5dd8965899188f1ba7ed196d66e3b018b414e497ae99aa6312aacd310782e410b1d36ef7280f2a74f64ffaedae52d3c808c20a34ba68
|
7
|
+
data.tar.gz: 05e91447cc6485a2e654244cdbd58ef24e20fb5d4fc5cb30f5396eaebd2c738216c733acaff85d130205047126ffed58f12056974400d9e1e8af507afe717c2f
|
data/lib/smartpay/api.rb
CHANGED
@@ -17,17 +17,25 @@ module Smartpay
|
|
17
17
|
)
|
18
18
|
end
|
19
19
|
|
20
|
+
def get_checkout_session(id, expand: "")
|
21
|
+
Responses::Base.new(Client.get("/checkout-sessions/%s" % id, params: { expand: expand }))
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_checkout_sessions(page_token: nil, max_results: nil, expand: "")
|
25
|
+
Responses::Base.new(Client.get("/checkout-sessions", params: { pageToken: page_token, maxResults: max_results, expand: expand }))
|
26
|
+
end
|
27
|
+
|
20
28
|
def create_order(payload, idempotency_key: nil)
|
21
29
|
Responses::Base.new(
|
22
|
-
Client.post("/orders", params:{}, payload: Requests::Order.new(payload).as_hash, idempotency_key: idempotency_key)
|
30
|
+
Client.post("/orders", params: {}, payload: Requests::Order.new(payload).as_hash, idempotency_key: idempotency_key)
|
23
31
|
)
|
24
32
|
end
|
25
33
|
|
26
|
-
def get_orders(page_token: nil, max_results: nil, expand:
|
34
|
+
def get_orders(page_token: nil, max_results: nil, expand: "")
|
27
35
|
Responses::Base.new(Client.get("/orders", params: { pageToken: page_token, maxResults: max_results, expand: expand }))
|
28
36
|
end
|
29
37
|
|
30
|
-
def get_order(id, expand:
|
38
|
+
def get_order(id, expand: "")
|
31
39
|
Responses::Base.new(Client.get("/orders/%s" % id, params: { expand: expand }))
|
32
40
|
end
|
33
41
|
|
@@ -39,7 +47,7 @@ module Smartpay
|
|
39
47
|
|
40
48
|
def create_payment(payload, idempotency_key: nil)
|
41
49
|
Responses::Base.new(
|
42
|
-
Client.post("/payments", params:{}, payload: Requests::Payment.new(payload).as_hash, idempotency_key: idempotency_key)
|
50
|
+
Client.post("/payments", params: {}, payload: Requests::Payment.new(payload).as_hash, idempotency_key: idempotency_key)
|
43
51
|
)
|
44
52
|
end
|
45
53
|
|
@@ -47,13 +55,23 @@ module Smartpay
|
|
47
55
|
create_payment(payload, idempotency_key: idempotency_key)
|
48
56
|
end
|
49
57
|
|
50
|
-
def get_payment(id, expand:
|
58
|
+
def get_payment(id, expand: "")
|
51
59
|
Responses::Base.new(Client.get("/payments/%s" % id, params: { expand: expand }))
|
52
60
|
end
|
53
61
|
|
62
|
+
def get_payments(page_token: nil, max_results: nil, expand: "")
|
63
|
+
Responses::Base.new(Client.get("/payments", params: { pageToken: page_token, maxResults: max_results, expand: expand }))
|
64
|
+
end
|
65
|
+
|
66
|
+
def update_payment(id, payload, idempotency_key: nil)
|
67
|
+
Responses::Base.new(
|
68
|
+
Client.patch("/payments/%s" % id, payload: Requests::PaymentUpdate.new(payload).as_hash, idempotency_key: idempotency_key)
|
69
|
+
)
|
70
|
+
end
|
71
|
+
|
54
72
|
def create_refund(payload, idempotency_key: nil)
|
55
73
|
Responses::Base.new(
|
56
|
-
Client.post("/refunds", params:{}, payload: Requests::Refund.new(payload).as_hash, idempotency_key: idempotency_key)
|
74
|
+
Client.post("/refunds", params: {}, payload: Requests::Refund.new(payload).as_hash, idempotency_key: idempotency_key)
|
57
75
|
)
|
58
76
|
end
|
59
77
|
|
@@ -61,10 +79,86 @@ module Smartpay
|
|
61
79
|
create_refund(payload, idempotency_key: idempotency_key)
|
62
80
|
end
|
63
81
|
|
64
|
-
def get_refund(id, expand:
|
82
|
+
def get_refund(id, expand: "")
|
65
83
|
Responses::Base.new(Client.get("/refunds/%s" % id, params: { expand: expand }))
|
66
84
|
end
|
67
85
|
|
86
|
+
def get_refunds(page_token: nil, max_results: nil, expand: "")
|
87
|
+
Responses::Base.new(Client.get("/refunds", params: { pageToken: page_token, maxResults: max_results, expand: expand }))
|
88
|
+
end
|
89
|
+
|
90
|
+
def update_refund(id, payload, idempotency_key: nil)
|
91
|
+
Responses::Base.new(
|
92
|
+
Client.patch("/refunds/%s" % id, payload: Requests::RefundUpdate.new(payload).as_hash, idempotency_key: idempotency_key)
|
93
|
+
)
|
94
|
+
end
|
95
|
+
|
96
|
+
def create_coupon(payload, idempotency_key: nil)
|
97
|
+
Responses::Base.new(
|
98
|
+
Client.post("/coupons", params: {}, payload: Requests::Coupon.new(payload).as_hash, idempotency_key: idempotency_key)
|
99
|
+
)
|
100
|
+
end
|
101
|
+
|
102
|
+
def get_coupon(id)
|
103
|
+
Responses::Base.new(Client.get("/coupons/%s" % id))
|
104
|
+
end
|
105
|
+
|
106
|
+
def get_coupons(page_token: nil, max_results: nil)
|
107
|
+
Responses::Base.new(Client.get("/coupons", params: { pageToken: page_token, maxResults: max_results }))
|
108
|
+
end
|
109
|
+
|
110
|
+
def update_coupon(id, payload, idempotency_key: nil)
|
111
|
+
Responses::Base.new(
|
112
|
+
Client.patch("/coupons/%s" % id, payload: Requests::CouponUpdate.new(payload).as_hash, idempotency_key: idempotency_key)
|
113
|
+
)
|
114
|
+
end
|
115
|
+
|
116
|
+
def create_promotion_code(payload, idempotency_key: nil)
|
117
|
+
Responses::Base.new(
|
118
|
+
Client.post("/promotion-codes", params: {}, payload: Requests::PromotionCode.new(payload).as_hash, idempotency_key: idempotency_key)
|
119
|
+
)
|
120
|
+
end
|
121
|
+
|
122
|
+
def get_promotion_code(id)
|
123
|
+
Responses::Base.new(Client.get("/promotion-codes/%s" % id))
|
124
|
+
end
|
125
|
+
|
126
|
+
def get_promotion_codes(page_token: nil, max_results: nil)
|
127
|
+
Responses::Base.new(Client.get("/promotion-codes", params: { pageToken: page_token, maxResults: max_results }))
|
128
|
+
end
|
129
|
+
|
130
|
+
def update_promotion_code(id, payload, idempotency_key: nil)
|
131
|
+
Responses::Base.new(
|
132
|
+
Client.patch("/promotion-codes/%s" % id, payload: Requests::PromotionCodeUpdate.new(payload).as_hash, idempotency_key: idempotency_key)
|
133
|
+
)
|
134
|
+
end
|
135
|
+
|
136
|
+
def create_webhook_endpoint(payload, idempotency_key: nil)
|
137
|
+
Responses::Base.new(
|
138
|
+
Client.post("/webhook-endpoints", params: {}, payload: Requests::WebhookEndpoint.new(payload).as_hash, idempotency_key: idempotency_key)
|
139
|
+
)
|
140
|
+
end
|
141
|
+
|
142
|
+
def get_webhook_endpoint(id)
|
143
|
+
Responses::Base.new(Client.get("/webhook-endpoints/%s" % id))
|
144
|
+
end
|
145
|
+
|
146
|
+
def get_webhook_endpoints(page_token: nil, max_results: nil)
|
147
|
+
Responses::Base.new(Client.get("/webhook-endpoints", params: { pageToken: page_token, maxResults: max_results }))
|
148
|
+
end
|
149
|
+
|
150
|
+
def update_webhook_endpoint(id, payload, idempotency_key: nil)
|
151
|
+
Responses::Base.new(
|
152
|
+
Client.patch("/webhook-endpoints/%s" % id, payload: Requests::WebhookEndpointUpdate.new(payload).as_hash, idempotency_key: idempotency_key)
|
153
|
+
)
|
154
|
+
end
|
155
|
+
|
156
|
+
def delete_webhook_endpoint(id)
|
157
|
+
Responses::Base.new(
|
158
|
+
Client.delete("/webhook-endpoints/%s" % id)
|
159
|
+
)
|
160
|
+
end
|
161
|
+
|
68
162
|
def get_tokens(page_token: nil, max_results: nil)
|
69
163
|
Responses::Base.new(Client.get("/tokens", params: { pageToken: page_token, maxResults: max_results }))
|
70
164
|
end
|
@@ -81,8 +175,8 @@ module Smartpay
|
|
81
175
|
Responses::Base.new(Client.put("/tokens/%s/disable" % id, idempotency_key: idempotency_key))
|
82
176
|
end
|
83
177
|
|
84
|
-
def delete_token(id
|
85
|
-
Responses::Base.new(Client.delete("/tokens/%s" % id
|
178
|
+
def delete_token(id)
|
179
|
+
Responses::Base.new(Client.delete("/tokens/%s" % id))
|
86
180
|
end
|
87
181
|
end
|
88
182
|
end
|
data/lib/smartpay/client.rb
CHANGED
@@ -19,52 +19,39 @@ module Smartpay
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
22
|
def post(path, params: {}, payload: {}, idempotency_key: nil)
|
24
|
-
|
25
|
-
request_payload = default_payload.merge(payload)
|
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
|
-
)
|
35
|
-
end
|
23
|
+
request(:post, path, params: params, payload: payload, idempotency_key: idempotency_key)
|
36
24
|
end
|
37
25
|
|
38
26
|
def put(path, params: {}, payload: {}, idempotency_key: nil)
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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
|
-
)
|
50
|
-
end
|
27
|
+
request(:put, path, params: params, payload: payload, idempotency_key: idempotency_key)
|
28
|
+
end
|
29
|
+
|
30
|
+
def patch(path, params: {}, payload: {}, idempotency_key: nil)
|
31
|
+
request(:patch, path, params: params, payload: payload, idempotency_key: idempotency_key)
|
51
32
|
end
|
52
33
|
|
53
34
|
def delete(path, params: {}, idempotency_key: nil)
|
35
|
+
request(:delete, path, params: params, idempotency_key: idempotency_key)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def request(method, path, params: {}, payload: {}, idempotency_key: nil)
|
54
41
|
request_params = default_params.merge(params)
|
42
|
+
request_payload = default_payload.merge(payload)
|
55
43
|
idempotency_key ||= nonce
|
56
44
|
with_retries(retry_options) do
|
57
45
|
RestClient::Request.execute(
|
58
|
-
method:
|
46
|
+
method: method,
|
59
47
|
url: api_url(path),
|
60
48
|
headers: headers.merge({ Idempotency_Key: idempotency_key }).merge(params: request_params),
|
61
|
-
timeout: timeout
|
49
|
+
timeout: timeout,
|
50
|
+
payload: request_payload.to_json
|
62
51
|
)
|
63
52
|
end
|
64
53
|
end
|
65
54
|
|
66
|
-
private
|
67
|
-
|
68
55
|
def nonce
|
69
56
|
SecureRandom.hex
|
70
57
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Smartpay
|
2
2
|
module Errors
|
3
|
+
# InvalidRequestPayloadError
|
3
4
|
class InvalidRequestPayloadError < ArgumentError
|
4
5
|
attr_accessor :key_name
|
5
6
|
|
@@ -9,7 +10,7 @@ module Smartpay
|
|
9
10
|
end
|
10
11
|
|
11
12
|
def message
|
12
|
-
"#{key_name} can't be blank."
|
13
|
+
"#{key_name} can't be blank or contains invalid value."
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Smartpay
|
4
|
+
module Requests
|
5
|
+
# Coupon
|
6
|
+
class Coupon
|
7
|
+
include Validator
|
8
|
+
|
9
|
+
attr_accessor :payload
|
10
|
+
|
11
|
+
REQUIREMENT_KEY_NAME = %i[discountType name].freeze
|
12
|
+
AVAILABLE_DISCOUNT_TYPES = %w[percentage amount].freeze
|
13
|
+
|
14
|
+
def initialize(raw_payload)
|
15
|
+
@payload = raw_payload.transform_keys(&:to_sym)
|
16
|
+
end
|
17
|
+
|
18
|
+
def as_hash
|
19
|
+
check_requirement!(REQUIREMENT_KEY_NAME)
|
20
|
+
raise Errors::InvalidRequestPayloadError, :discountType unless AVAILABLE_DISCOUNT_TYPES.include?(payload[:discountType])
|
21
|
+
raise Errors::InvalidRequestPayloadError, :discountPercentage if payload[:discountType] == "percentage" && !payload[:discountPercentage]
|
22
|
+
raise Errors::InvalidRequestPayloadError, :discountAmount if payload[:discountType] == "amount" && !payload[:discountAmount]
|
23
|
+
|
24
|
+
normalize_payload
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def normalize_payload
|
30
|
+
{
|
31
|
+
currency: payload[:currency],
|
32
|
+
discountAmount: payload[:discountAmount],
|
33
|
+
discountPercentage: payload[:discountPercentage],
|
34
|
+
discountType: payload[:discountType],
|
35
|
+
expiresAt: payload[:expiresAt],
|
36
|
+
maxRedemptionCount: payload[:maxRedemptionCount],
|
37
|
+
metadata: payload[:metadata] || {},
|
38
|
+
name: payload[:name]
|
39
|
+
}
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Smartpay
|
4
|
+
module Requests
|
5
|
+
# CouponUpdate
|
6
|
+
class CouponUpdate
|
7
|
+
attr_accessor :payload
|
8
|
+
|
9
|
+
def initialize(raw_payload)
|
10
|
+
@payload = raw_payload.transform_keys(&:to_sym)
|
11
|
+
end
|
12
|
+
|
13
|
+
def as_hash
|
14
|
+
normalize_payload
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def normalize_payload
|
20
|
+
{
|
21
|
+
active: payload[:active],
|
22
|
+
name: payload[:name],
|
23
|
+
metadata: payload[:metadata] || {}
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -2,28 +2,25 @@
|
|
2
2
|
|
3
3
|
module Smartpay
|
4
4
|
module Requests
|
5
|
+
# Payment
|
5
6
|
class Payment
|
7
|
+
include Validator
|
8
|
+
|
6
9
|
attr_accessor :payload
|
7
10
|
|
8
|
-
REQUIREMENT_KEY_NAME = [
|
11
|
+
REQUIREMENT_KEY_NAME = %i[order amount currency].freeze
|
9
12
|
|
10
13
|
def initialize(raw_payload)
|
11
14
|
@payload = raw_payload.transform_keys(&:to_sym)
|
12
15
|
end
|
13
16
|
|
14
17
|
def as_hash
|
15
|
-
check_requirement!
|
18
|
+
check_requirement!(REQUIREMENT_KEY_NAME)
|
16
19
|
normalize_payload
|
17
20
|
end
|
18
21
|
|
19
22
|
private
|
20
23
|
|
21
|
-
def check_requirement!
|
22
|
-
REQUIREMENT_KEY_NAME.each do |key_name|
|
23
|
-
raise Errors::InvalidRequestPayloadError, key_name unless payload.include?(key_name)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
24
|
def normalize_payload
|
28
25
|
{
|
29
26
|
order: payload.dig(:order),
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Smartpay
|
4
|
+
module Requests
|
5
|
+
# PaymentUpdate
|
6
|
+
class PaymentUpdate
|
7
|
+
attr_accessor :payload
|
8
|
+
|
9
|
+
def initialize(raw_payload)
|
10
|
+
@payload = raw_payload.transform_keys(&:to_sym)
|
11
|
+
end
|
12
|
+
|
13
|
+
def as_hash
|
14
|
+
normalize_payload
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def normalize_payload
|
20
|
+
{
|
21
|
+
reference: payload[:reference],
|
22
|
+
description: payload[:description],
|
23
|
+
metadata: payload[:metadata] || {}
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Smartpay
|
4
|
+
module Requests
|
5
|
+
# PromotionCode
|
6
|
+
class PromotionCode
|
7
|
+
include Validator
|
8
|
+
|
9
|
+
attr_accessor :payload
|
10
|
+
|
11
|
+
REQUIREMENT_KEY_NAME = %i[code coupon].freeze
|
12
|
+
|
13
|
+
def initialize(raw_payload)
|
14
|
+
@payload = raw_payload.transform_keys(&:to_sym)
|
15
|
+
end
|
16
|
+
|
17
|
+
def as_hash
|
18
|
+
check_requirement!(REQUIREMENT_KEY_NAME)
|
19
|
+
normalize_payload
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def normalize_payload
|
25
|
+
{
|
26
|
+
active: payload[:active],
|
27
|
+
code: payload[:code],
|
28
|
+
coupon: payload[:coupon],
|
29
|
+
currency: payload[:currency],
|
30
|
+
expiresAt: payload[:expiresAt],
|
31
|
+
firstTimeTransaction: payload[:firstTimeTransaction],
|
32
|
+
maxRedemptionCount: payload[:maxRedemptionCount],
|
33
|
+
metadata: payload[:metadata] || {},
|
34
|
+
minimumAmount: payload[:minimumAmount],
|
35
|
+
onePerCustomer: payload[:onePerCustomer]
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Smartpay
|
4
|
+
module Requests
|
5
|
+
# PromotionCodeUpdate
|
6
|
+
class PromotionCodeUpdate
|
7
|
+
attr_accessor :payload
|
8
|
+
|
9
|
+
def initialize(raw_payload)
|
10
|
+
@payload = raw_payload.transform_keys(&:to_sym)
|
11
|
+
end
|
12
|
+
|
13
|
+
def as_hash
|
14
|
+
normalize_payload
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def normalize_payload
|
20
|
+
{
|
21
|
+
active: payload[:active],
|
22
|
+
metadata: payload[:metadata] || {}
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -2,37 +2,34 @@
|
|
2
2
|
|
3
3
|
module Smartpay
|
4
4
|
module Requests
|
5
|
+
# Refund
|
5
6
|
class Refund
|
7
|
+
include Validator
|
8
|
+
|
6
9
|
attr_accessor :payload
|
7
10
|
|
8
|
-
REQUIREMENT_KEY_NAME = [
|
11
|
+
REQUIREMENT_KEY_NAME = %i[payment amount currency].freeze
|
9
12
|
|
10
13
|
def initialize(raw_payload)
|
11
14
|
@payload = raw_payload.transform_keys(&:to_sym)
|
12
15
|
end
|
13
16
|
|
14
17
|
def as_hash
|
15
|
-
check_requirement!
|
18
|
+
check_requirement!(REQUIREMENT_KEY_NAME)
|
16
19
|
normalize_payload
|
17
20
|
end
|
18
21
|
|
19
22
|
private
|
20
23
|
|
21
|
-
def check_requirement!
|
22
|
-
REQUIREMENT_KEY_NAME.each do |key_name|
|
23
|
-
raise Errors::InvalidRequestPayloadError, key_name unless payload.include?(key_name)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
24
|
def normalize_payload
|
28
25
|
{
|
29
|
-
payment: payload
|
30
|
-
amount: payload
|
31
|
-
currency: payload
|
32
|
-
reason: payload
|
33
|
-
reference: payload
|
34
|
-
description: payload
|
35
|
-
metadata: payload
|
26
|
+
payment: payload[:payment],
|
27
|
+
amount: payload[:amount],
|
28
|
+
currency: payload[:currency],
|
29
|
+
reason: payload[:reason],
|
30
|
+
reference: payload[:reference],
|
31
|
+
description: payload[:description],
|
32
|
+
metadata: payload[:metadata] || {}
|
36
33
|
}
|
37
34
|
end
|
38
35
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Smartpay
|
4
|
+
module Requests
|
5
|
+
# RefundUpdate
|
6
|
+
class RefundUpdate
|
7
|
+
attr_accessor :payload
|
8
|
+
|
9
|
+
def initialize(raw_payload)
|
10
|
+
@payload = raw_payload.transform_keys(&:to_sym)
|
11
|
+
end
|
12
|
+
|
13
|
+
def as_hash
|
14
|
+
normalize_payload
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def normalize_payload
|
20
|
+
{
|
21
|
+
reference: payload[:reference],
|
22
|
+
description: payload[:description],
|
23
|
+
metadata: payload[:metadata] || {}
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Smartpay
|
4
|
+
module Requests
|
5
|
+
# WebhookEndpoint
|
6
|
+
class WebhookEndpoint
|
7
|
+
include Validator
|
8
|
+
|
9
|
+
attr_accessor :payload
|
10
|
+
|
11
|
+
REQUIREMENT_KEY_NAME = %i[url].freeze
|
12
|
+
ALLOWED_EVENT_SUBSCRIPTIONS_VALUES = [
|
13
|
+
"order.authorized",
|
14
|
+
"order.rejected",
|
15
|
+
"order.canceled",
|
16
|
+
"payment.created",
|
17
|
+
"refund.created",
|
18
|
+
"payout.generated",
|
19
|
+
"payout.paid",
|
20
|
+
"coupon.created",
|
21
|
+
"coupon.updated",
|
22
|
+
"promotion_code.created",
|
23
|
+
"promotion_code.updated",
|
24
|
+
"merchant_user.created",
|
25
|
+
"merchant_user.password_reset",
|
26
|
+
"token.approved",
|
27
|
+
"token.rejected",
|
28
|
+
"token.deleted",
|
29
|
+
"token.disabled",
|
30
|
+
"token.enabled",
|
31
|
+
"token.created",
|
32
|
+
"token.used"
|
33
|
+
].freeze
|
34
|
+
|
35
|
+
def initialize(raw_payload)
|
36
|
+
@payload = raw_payload.transform_keys(&:to_sym)
|
37
|
+
end
|
38
|
+
|
39
|
+
def as_hash
|
40
|
+
check_requirement!(REQUIREMENT_KEY_NAME)
|
41
|
+
validate_event_subscription
|
42
|
+
normalize_payload
|
43
|
+
end
|
44
|
+
|
45
|
+
protected
|
46
|
+
|
47
|
+
def validate_event_subscription
|
48
|
+
return unless payload[:eventSubscriptions]
|
49
|
+
|
50
|
+
payload[:eventSubscriptions].each do |event|
|
51
|
+
unless ALLOWED_EVENT_SUBSCRIPTIONS_VALUES.include?(event)
|
52
|
+
raise Errors::InvalidRequestPayloadError, "eventSubscriptions.#{event}"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def normalize_payload
|
60
|
+
{
|
61
|
+
description: payload[:description],
|
62
|
+
eventSubscriptions: payload[:eventSubscriptions],
|
63
|
+
metadata: payload[:metadata],
|
64
|
+
url: payload[:url]
|
65
|
+
}
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Smartpay
|
4
|
+
module Requests
|
5
|
+
# WebhookEndpointUpdate
|
6
|
+
class WebhookEndpointUpdate < WebhookEndpoint
|
7
|
+
|
8
|
+
def as_hash
|
9
|
+
validate_event_subscription
|
10
|
+
normalize_payload
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def normalize_payload
|
16
|
+
{
|
17
|
+
active: payload[:active],
|
18
|
+
description: payload[:description],
|
19
|
+
eventSubscriptions: payload[:eventSubscriptions],
|
20
|
+
metadata: payload[:metadata],
|
21
|
+
url: payload[:url]
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/smartpay/version.rb
CHANGED
data/lib/smartpay.rb
CHANGED
@@ -11,13 +11,22 @@ require_relative "smartpay/requests/checkout_session"
|
|
11
11
|
require_relative "smartpay/requests/checkout_session_for_token"
|
12
12
|
require_relative "smartpay/requests/order"
|
13
13
|
require_relative "smartpay/requests/payment"
|
14
|
+
require_relative "smartpay/requests/payment_update"
|
14
15
|
require_relative "smartpay/requests/refund"
|
16
|
+
require_relative "smartpay/requests/refund_update"
|
17
|
+
require_relative "smartpay/requests/coupon"
|
18
|
+
require_relative "smartpay/requests/coupon_update"
|
19
|
+
require_relative "smartpay/requests/promotion_code"
|
20
|
+
require_relative "smartpay/requests/promotion_code_update"
|
21
|
+
require_relative "smartpay/requests/webhook_endpoint"
|
22
|
+
require_relative "smartpay/requests/webhook_endpoint_update"
|
15
23
|
require_relative "smartpay/responses/base"
|
16
24
|
require_relative "smartpay/responses/checkout_session"
|
17
25
|
|
26
|
+
# Smartpay
|
18
27
|
module Smartpay
|
19
|
-
REJECT_REQUEST_BY_CUSTOMER =
|
20
|
-
REJECT_FRAUDULENT =
|
28
|
+
REJECT_REQUEST_BY_CUSTOMER = "requested_by_customer"
|
29
|
+
REJECT_FRAUDULENT = "fraudulent"
|
21
30
|
|
22
31
|
class << self
|
23
32
|
attr_accessor :configuration
|
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.10.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-
|
11
|
+
date: 2023-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -68,11 +68,19 @@ files:
|
|
68
68
|
- lib/smartpay/errors/invalid_request_payload_error.rb
|
69
69
|
- lib/smartpay/requests/checkout_session.rb
|
70
70
|
- lib/smartpay/requests/checkout_session_for_token.rb
|
71
|
+
- lib/smartpay/requests/coupon.rb
|
72
|
+
- lib/smartpay/requests/coupon_update.rb
|
71
73
|
- lib/smartpay/requests/normalizer.rb
|
72
74
|
- lib/smartpay/requests/order.rb
|
73
75
|
- lib/smartpay/requests/payment.rb
|
76
|
+
- lib/smartpay/requests/payment_update.rb
|
77
|
+
- lib/smartpay/requests/promotion_code.rb
|
78
|
+
- lib/smartpay/requests/promotion_code_update.rb
|
74
79
|
- lib/smartpay/requests/refund.rb
|
80
|
+
- lib/smartpay/requests/refund_update.rb
|
75
81
|
- lib/smartpay/requests/validator.rb
|
82
|
+
- lib/smartpay/requests/webhook_endpoint.rb
|
83
|
+
- lib/smartpay/requests/webhook_endpoint_update.rb
|
76
84
|
- lib/smartpay/responses/base.rb
|
77
85
|
- lib/smartpay/responses/checkout_session.rb
|
78
86
|
- lib/smartpay/version.rb
|