nodexpay 0.1.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 +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +125 -0
- data/docs/README.md +49 -0
- data/docs/api-contract.md +203 -0
- data/docs/architecture.md +226 -0
- data/docs/http-and-errors.md +157 -0
- data/docs/implementation-plan.md +130 -0
- data/docs/payment-results.md +109 -0
- data/docs/testing.md +175 -0
- data/lib/nodex_pay/amount_serializer.rb +78 -0
- data/lib/nodex_pay/client.rb +240 -0
- data/lib/nodex_pay/errors.rb +56 -0
- data/lib/nodex_pay/models.rb +40 -0
- data/lib/nodex_pay/signer.rb +22 -0
- data/lib/nodex_pay/transport.rb +94 -0
- data/lib/nodex_pay/validator.rb +106 -0
- data/lib/nodex_pay/version.rb +5 -0
- data/lib/nodex_pay.rb +11 -0
- data/rbi/nodex_pay.rbi +243 -0
- data/sig/nodex_pay.rbs +165 -0
- metadata +162 -0
data/rbi/nodex_pay.rbi
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
|
|
3
|
+
module NodexPay
|
|
4
|
+
VERSION = T.let(T.unsafe(nil), String)
|
|
5
|
+
|
|
6
|
+
class Error < StandardError; end
|
|
7
|
+
class ConfigurationError < Error; end
|
|
8
|
+
class ValidationError < Error; end
|
|
9
|
+
class SignatureVerificationError < Error; end
|
|
10
|
+
class TransportError < Error; end
|
|
11
|
+
class TimeoutError < TransportError; end
|
|
12
|
+
class InvalidResponseError < Error; end
|
|
13
|
+
|
|
14
|
+
class APIError < Error
|
|
15
|
+
ERROR_NAMES = T.let(T.unsafe(nil), T::Hash[Integer, String])
|
|
16
|
+
|
|
17
|
+
sig { returns(Symbol) }
|
|
18
|
+
attr_reader :operation
|
|
19
|
+
|
|
20
|
+
sig { returns(Integer) }
|
|
21
|
+
attr_reader :status
|
|
22
|
+
|
|
23
|
+
sig { returns(T::Array[Integer]) }
|
|
24
|
+
attr_reader :error_codes
|
|
25
|
+
|
|
26
|
+
sig { returns(T::Hash[String, String]) }
|
|
27
|
+
attr_reader :response_headers
|
|
28
|
+
|
|
29
|
+
sig { returns(String) }
|
|
30
|
+
attr_reader :response_body
|
|
31
|
+
|
|
32
|
+
sig do
|
|
33
|
+
params(
|
|
34
|
+
operation: Symbol,
|
|
35
|
+
status: Integer,
|
|
36
|
+
error_codes: T::Array[Integer],
|
|
37
|
+
response_headers: T::Hash[String, String],
|
|
38
|
+
response_body: String
|
|
39
|
+
).void
|
|
40
|
+
end
|
|
41
|
+
def initialize(operation:, status:, error_codes:, response_headers:, response_body:); end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
class BadRequestError < APIError; end
|
|
45
|
+
class ServiceUnavailableError < APIError; end
|
|
46
|
+
class UnexpectedHTTPStatusError < APIError; end
|
|
47
|
+
|
|
48
|
+
class Payment < Data
|
|
49
|
+
sig { returns(String) }
|
|
50
|
+
attr_reader :url
|
|
51
|
+
|
|
52
|
+
sig { returns(String) }
|
|
53
|
+
attr_reader :token
|
|
54
|
+
|
|
55
|
+
sig { returns(T.nilable(String)) }
|
|
56
|
+
attr_reader :ext_reserved
|
|
57
|
+
|
|
58
|
+
sig { returns(T.nilable(String)) }
|
|
59
|
+
attr_reader :ext_description
|
|
60
|
+
|
|
61
|
+
sig do
|
|
62
|
+
params(
|
|
63
|
+
url: String,
|
|
64
|
+
token: String,
|
|
65
|
+
ext_reserved: T.nilable(String),
|
|
66
|
+
ext_description: T.nilable(String)
|
|
67
|
+
).void
|
|
68
|
+
end
|
|
69
|
+
def initialize(url:, token:, ext_reserved:, ext_description:); end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
class PaymentResult < Data
|
|
73
|
+
sig { returns(String) }
|
|
74
|
+
attr_reader :order_code
|
|
75
|
+
|
|
76
|
+
sig { returns(String) }
|
|
77
|
+
attr_reader :transaction_code
|
|
78
|
+
|
|
79
|
+
sig { returns(String) }
|
|
80
|
+
attr_reader :amount
|
|
81
|
+
|
|
82
|
+
sig { returns(String) }
|
|
83
|
+
attr_reader :symbol
|
|
84
|
+
|
|
85
|
+
sig { returns(T::Boolean) }
|
|
86
|
+
attr_reader :result
|
|
87
|
+
|
|
88
|
+
sig { returns(String) }
|
|
89
|
+
attr_reader :chain_id
|
|
90
|
+
|
|
91
|
+
sig { returns(String) }
|
|
92
|
+
attr_reader :transaction_hash
|
|
93
|
+
|
|
94
|
+
sig do
|
|
95
|
+
params(
|
|
96
|
+
order_code: String,
|
|
97
|
+
transaction_code: String,
|
|
98
|
+
amount: String,
|
|
99
|
+
symbol: String,
|
|
100
|
+
result: T::Boolean,
|
|
101
|
+
chain_id: String,
|
|
102
|
+
transaction_hash: String
|
|
103
|
+
).void
|
|
104
|
+
end
|
|
105
|
+
def initialize(order_code:, transaction_code:, amount:, symbol:, result:, chain_id:, transaction_hash:); end
|
|
106
|
+
|
|
107
|
+
sig { returns(T::Boolean) }
|
|
108
|
+
def success?; end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
module Transport
|
|
112
|
+
class Request < Data
|
|
113
|
+
sig { returns(Symbol) }
|
|
114
|
+
attr_reader :method
|
|
115
|
+
|
|
116
|
+
sig { returns(URI::Generic) }
|
|
117
|
+
attr_reader :uri
|
|
118
|
+
|
|
119
|
+
sig { returns(T::Hash[String, String]) }
|
|
120
|
+
attr_reader :headers
|
|
121
|
+
|
|
122
|
+
sig { returns(String) }
|
|
123
|
+
attr_reader :body
|
|
124
|
+
|
|
125
|
+
sig { returns(Numeric) }
|
|
126
|
+
attr_reader :open_timeout
|
|
127
|
+
|
|
128
|
+
sig { returns(Numeric) }
|
|
129
|
+
attr_reader :read_timeout
|
|
130
|
+
|
|
131
|
+
sig { returns(Numeric) }
|
|
132
|
+
attr_reader :write_timeout
|
|
133
|
+
|
|
134
|
+
sig do
|
|
135
|
+
params(
|
|
136
|
+
method: Symbol,
|
|
137
|
+
uri: URI::Generic,
|
|
138
|
+
headers: T::Hash[String, String],
|
|
139
|
+
body: String,
|
|
140
|
+
open_timeout: Numeric,
|
|
141
|
+
read_timeout: Numeric,
|
|
142
|
+
write_timeout: Numeric
|
|
143
|
+
).void
|
|
144
|
+
end
|
|
145
|
+
def initialize(method:, uri:, headers:, body:, open_timeout:, read_timeout:, write_timeout:); end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
class Response < Data
|
|
149
|
+
sig { returns(Integer) }
|
|
150
|
+
attr_reader :status
|
|
151
|
+
|
|
152
|
+
sig { returns(T::Hash[String, String]) }
|
|
153
|
+
attr_reader :headers
|
|
154
|
+
|
|
155
|
+
sig { returns(String) }
|
|
156
|
+
attr_reader :body
|
|
157
|
+
|
|
158
|
+
sig do
|
|
159
|
+
params(
|
|
160
|
+
status: Integer,
|
|
161
|
+
headers: T::Hash[String, String],
|
|
162
|
+
body: String
|
|
163
|
+
).void
|
|
164
|
+
end
|
|
165
|
+
def initialize(status:, headers:, body:); end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
class NetHTTP
|
|
169
|
+
sig { params(request: Request).returns(Response) }
|
|
170
|
+
def call(request); end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
class Client
|
|
175
|
+
BASE_URLS = T.let(T.unsafe(nil), T::Hash[Symbol, String])
|
|
176
|
+
DEFAULT_OPEN_TIMEOUT = T.let(T.unsafe(nil), Integer)
|
|
177
|
+
DEFAULT_READ_TIMEOUT = T.let(T.unsafe(nil), Integer)
|
|
178
|
+
DEFAULT_WRITE_TIMEOUT = T.let(T.unsafe(nil), Integer)
|
|
179
|
+
|
|
180
|
+
sig { returns(Symbol) }
|
|
181
|
+
attr_reader :environment
|
|
182
|
+
|
|
183
|
+
sig { returns(Numeric) }
|
|
184
|
+
attr_reader :open_timeout
|
|
185
|
+
|
|
186
|
+
sig { returns(Numeric) }
|
|
187
|
+
attr_reader :read_timeout
|
|
188
|
+
|
|
189
|
+
sig { returns(Numeric) }
|
|
190
|
+
attr_reader :write_timeout
|
|
191
|
+
|
|
192
|
+
sig do
|
|
193
|
+
params(
|
|
194
|
+
identification_token: String,
|
|
195
|
+
hash_token: String,
|
|
196
|
+
environment: Symbol,
|
|
197
|
+
open_timeout: Numeric,
|
|
198
|
+
read_timeout: Numeric,
|
|
199
|
+
write_timeout: Numeric,
|
|
200
|
+
transport: T.untyped
|
|
201
|
+
).void
|
|
202
|
+
end
|
|
203
|
+
def initialize(
|
|
204
|
+
identification_token:,
|
|
205
|
+
hash_token:,
|
|
206
|
+
environment:,
|
|
207
|
+
open_timeout: 5,
|
|
208
|
+
read_timeout: 30,
|
|
209
|
+
write_timeout: 30,
|
|
210
|
+
transport: nil
|
|
211
|
+
); end
|
|
212
|
+
|
|
213
|
+
sig do
|
|
214
|
+
params(
|
|
215
|
+
order_code: String,
|
|
216
|
+
amount: T.nilable(T.any(String, Integer, BigDecimal)),
|
|
217
|
+
amount_type: T.nilable(T.any(String, Symbol)),
|
|
218
|
+
color_theme: T.nilable(T.any(String, Symbol)),
|
|
219
|
+
ui_mode: T.nilable(T.any(String, Symbol)),
|
|
220
|
+
ext_description: T.nilable(String),
|
|
221
|
+
deadline: T.nilable(T.any(Time, Integer)),
|
|
222
|
+
description: T.nilable(String)
|
|
223
|
+
).returns(Payment)
|
|
224
|
+
end
|
|
225
|
+
def create_payment(
|
|
226
|
+
order_code:,
|
|
227
|
+
amount: nil,
|
|
228
|
+
amount_type: nil,
|
|
229
|
+
color_theme: nil,
|
|
230
|
+
ui_mode: nil,
|
|
231
|
+
ext_description: nil,
|
|
232
|
+
deadline: nil,
|
|
233
|
+
description: nil
|
|
234
|
+
); end
|
|
235
|
+
|
|
236
|
+
sig { params(order_code: String).returns(TrueClass) }
|
|
237
|
+
def cancel_payment(order_code:); end
|
|
238
|
+
|
|
239
|
+
sig { params(raw_body: String).returns(PaymentResult) }
|
|
240
|
+
def verify_payment_result(raw_body); end
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
|
data/sig/nodex_pay.rbs
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
module NodexPay
|
|
2
|
+
VERSION: String
|
|
3
|
+
|
|
4
|
+
class Error < StandardError
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class ConfigurationError < Error
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class ValidationError < Error
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class SignatureVerificationError < Error
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class TransportError < Error
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class TimeoutError < TransportError
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class InvalidResponseError < Error
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class APIError < Error
|
|
26
|
+
ERROR_NAMES: Hash[Integer, String]
|
|
27
|
+
|
|
28
|
+
attr_reader operation: Symbol
|
|
29
|
+
attr_reader status: Integer
|
|
30
|
+
attr_reader error_codes: Array[Integer]
|
|
31
|
+
attr_reader response_headers: Hash[String, String]
|
|
32
|
+
attr_reader response_body: String
|
|
33
|
+
|
|
34
|
+
def initialize: (
|
|
35
|
+
operation: Symbol,
|
|
36
|
+
status: Integer,
|
|
37
|
+
error_codes: Array[Integer],
|
|
38
|
+
response_headers: Hash[String, String],
|
|
39
|
+
response_body: String
|
|
40
|
+
) -> void
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
class BadRequestError < APIError
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
class ServiceUnavailableError < APIError
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
class UnexpectedHTTPStatusError < APIError
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class Payment
|
|
53
|
+
attr_reader url: String
|
|
54
|
+
attr_reader token: String
|
|
55
|
+
attr_reader ext_reserved: String?
|
|
56
|
+
attr_reader ext_description: String?
|
|
57
|
+
|
|
58
|
+
def initialize: (
|
|
59
|
+
url: String,
|
|
60
|
+
token: String,
|
|
61
|
+
ext_reserved: String?,
|
|
62
|
+
ext_description: String?
|
|
63
|
+
) -> void
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
class PaymentResult
|
|
67
|
+
attr_reader order_code: String
|
|
68
|
+
attr_reader transaction_code: String
|
|
69
|
+
attr_reader amount: String
|
|
70
|
+
attr_reader symbol: String
|
|
71
|
+
attr_reader result: bool
|
|
72
|
+
attr_reader chain_id: String
|
|
73
|
+
attr_reader transaction_hash: String
|
|
74
|
+
|
|
75
|
+
def initialize: (
|
|
76
|
+
order_code: String,
|
|
77
|
+
transaction_code: String,
|
|
78
|
+
amount: String,
|
|
79
|
+
symbol: String,
|
|
80
|
+
result: bool,
|
|
81
|
+
chain_id: String,
|
|
82
|
+
transaction_hash: String
|
|
83
|
+
) -> void
|
|
84
|
+
|
|
85
|
+
def success?: () -> bool
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
module Transport
|
|
89
|
+
class Request
|
|
90
|
+
attr_reader method: :post
|
|
91
|
+
attr_reader uri: URI::Generic
|
|
92
|
+
attr_reader headers: Hash[String, String]
|
|
93
|
+
attr_reader body: String
|
|
94
|
+
attr_reader open_timeout: Numeric
|
|
95
|
+
attr_reader read_timeout: Numeric
|
|
96
|
+
attr_reader write_timeout: Numeric
|
|
97
|
+
|
|
98
|
+
def initialize: (
|
|
99
|
+
method: :post,
|
|
100
|
+
uri: URI::Generic,
|
|
101
|
+
headers: Hash[String, String],
|
|
102
|
+
body: String,
|
|
103
|
+
open_timeout: Numeric,
|
|
104
|
+
read_timeout: Numeric,
|
|
105
|
+
write_timeout: Numeric
|
|
106
|
+
) -> void
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
class Response
|
|
110
|
+
attr_reader status: Integer
|
|
111
|
+
attr_reader headers: Hash[String, String]
|
|
112
|
+
attr_reader body: String
|
|
113
|
+
|
|
114
|
+
def initialize: (
|
|
115
|
+
status: Integer,
|
|
116
|
+
headers: Hash[String, String],
|
|
117
|
+
body: String
|
|
118
|
+
) -> void
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
interface _Transport
|
|
122
|
+
def call: (Request request) -> Response
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
class NetHTTP
|
|
126
|
+
include _Transport
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
class Client
|
|
131
|
+
BASE_URLS: Hash[Symbol, String]
|
|
132
|
+
DEFAULT_OPEN_TIMEOUT: Integer
|
|
133
|
+
DEFAULT_READ_TIMEOUT: Integer
|
|
134
|
+
DEFAULT_WRITE_TIMEOUT: Integer
|
|
135
|
+
|
|
136
|
+
attr_reader environment: :production | :testnet
|
|
137
|
+
attr_reader open_timeout: Numeric
|
|
138
|
+
attr_reader read_timeout: Numeric
|
|
139
|
+
attr_reader write_timeout: Numeric
|
|
140
|
+
|
|
141
|
+
def initialize: (
|
|
142
|
+
identification_token: String,
|
|
143
|
+
hash_token: String,
|
|
144
|
+
environment: :production | :testnet,
|
|
145
|
+
?open_timeout: Numeric,
|
|
146
|
+
?read_timeout: Numeric,
|
|
147
|
+
?write_timeout: Numeric,
|
|
148
|
+
?transport: Transport::_Transport?
|
|
149
|
+
) -> void
|
|
150
|
+
|
|
151
|
+
def create_payment: (
|
|
152
|
+
order_code: String,
|
|
153
|
+
?amount: String | Integer | BigDecimal | nil,
|
|
154
|
+
?amount_type: String | Symbol | nil,
|
|
155
|
+
?color_theme: String | Symbol | nil,
|
|
156
|
+
?ui_mode: String | Symbol | nil,
|
|
157
|
+
?ext_description: String?,
|
|
158
|
+
?deadline: Time | Integer | nil,
|
|
159
|
+
?description: String?
|
|
160
|
+
) -> Payment
|
|
161
|
+
|
|
162
|
+
def cancel_payment: (order_code: String) -> true
|
|
163
|
+
def verify_payment_result: (String raw_body) -> PaymentResult
|
|
164
|
+
end
|
|
165
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: nodexpay
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- supermomonga
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: minitest
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '5'
|
|
19
|
+
- - "<"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '7'
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
requirements:
|
|
26
|
+
- - ">="
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: '5'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '7'
|
|
32
|
+
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: bigdecimal
|
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
|
35
|
+
requirements:
|
|
36
|
+
- - ">="
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '3'
|
|
39
|
+
- - "<"
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '5'
|
|
42
|
+
type: :development
|
|
43
|
+
prerelease: false
|
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '3'
|
|
49
|
+
- - "<"
|
|
50
|
+
- !ruby/object:Gem::Version
|
|
51
|
+
version: '5'
|
|
52
|
+
- !ruby/object:Gem::Dependency
|
|
53
|
+
name: rake
|
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
|
55
|
+
requirements:
|
|
56
|
+
- - ">="
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
version: '13'
|
|
59
|
+
- - "<"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '14'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '13'
|
|
69
|
+
- - "<"
|
|
70
|
+
- !ruby/object:Gem::Version
|
|
71
|
+
version: '14'
|
|
72
|
+
- !ruby/object:Gem::Dependency
|
|
73
|
+
name: rbs
|
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
|
75
|
+
requirements:
|
|
76
|
+
- - ">="
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: '3'
|
|
79
|
+
- - "<"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '4'
|
|
82
|
+
type: :development
|
|
83
|
+
prerelease: false
|
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '3'
|
|
89
|
+
- - "<"
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: '4'
|
|
92
|
+
- !ruby/object:Gem::Dependency
|
|
93
|
+
name: sorbet
|
|
94
|
+
requirement: !ruby/object:Gem::Requirement
|
|
95
|
+
requirements:
|
|
96
|
+
- - ">="
|
|
97
|
+
- !ruby/object:Gem::Version
|
|
98
|
+
version: '0.6'
|
|
99
|
+
- - "<"
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '0.7'
|
|
102
|
+
type: :development
|
|
103
|
+
prerelease: false
|
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
+
requirements:
|
|
106
|
+
- - ">="
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: '0.6'
|
|
109
|
+
- - "<"
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
version: '0.7'
|
|
112
|
+
description: A small, dependency-free Ruby client for creating and cancelling Nodex
|
|
113
|
+
Pay payments and verifying Payment Result callbacks.
|
|
114
|
+
executables: []
|
|
115
|
+
extensions: []
|
|
116
|
+
extra_rdoc_files: []
|
|
117
|
+
files:
|
|
118
|
+
- LICENSE.txt
|
|
119
|
+
- README.md
|
|
120
|
+
- docs/README.md
|
|
121
|
+
- docs/api-contract.md
|
|
122
|
+
- docs/architecture.md
|
|
123
|
+
- docs/http-and-errors.md
|
|
124
|
+
- docs/implementation-plan.md
|
|
125
|
+
- docs/payment-results.md
|
|
126
|
+
- docs/testing.md
|
|
127
|
+
- lib/nodex_pay.rb
|
|
128
|
+
- lib/nodex_pay/amount_serializer.rb
|
|
129
|
+
- lib/nodex_pay/client.rb
|
|
130
|
+
- lib/nodex_pay/errors.rb
|
|
131
|
+
- lib/nodex_pay/models.rb
|
|
132
|
+
- lib/nodex_pay/signer.rb
|
|
133
|
+
- lib/nodex_pay/transport.rb
|
|
134
|
+
- lib/nodex_pay/validator.rb
|
|
135
|
+
- lib/nodex_pay/version.rb
|
|
136
|
+
- rbi/nodex_pay.rbi
|
|
137
|
+
- sig/nodex_pay.rbs
|
|
138
|
+
homepage: https://app.nodexpay.com/
|
|
139
|
+
licenses:
|
|
140
|
+
- MIT
|
|
141
|
+
metadata:
|
|
142
|
+
homepage_uri: https://app.nodexpay.com/
|
|
143
|
+
documentation_uri: https://nodex-pay.gitbook.io/docs/integration-guide/apis
|
|
144
|
+
rubygems_mfa_required: 'true'
|
|
145
|
+
rdoc_options: []
|
|
146
|
+
require_paths:
|
|
147
|
+
- lib
|
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '3.4'
|
|
153
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
|
+
requirements:
|
|
155
|
+
- - ">="
|
|
156
|
+
- !ruby/object:Gem::Version
|
|
157
|
+
version: '0'
|
|
158
|
+
requirements: []
|
|
159
|
+
rubygems_version: 4.0.16
|
|
160
|
+
specification_version: 4
|
|
161
|
+
summary: Unofficial Ruby client SDK for the Nodex Pay API
|
|
162
|
+
test_files: []
|