k2-connect-ruby 2.0.0 → 3.0.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/.ruby-version +1 -0
- data/Gemfile.lock +78 -64
- data/README.md +70 -49
- data/k2-connect-ruby.gemspec +12 -11
- data/lib/k2-connect-ruby/{k2_entity/entity.rb → entity.rb} +5 -0
- data/lib/k2-connect-ruby/k2_entity/k2_entity.rb +24 -26
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb +92 -98
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_settlement.rb +43 -44
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_stk.rb +43 -44
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_transfer.rb +35 -36
- data/lib/k2-connect-ruby/k2_entity/k2_notification.rb +34 -35
- data/lib/k2-connect-ruby/k2_entity/k2_polling.rb +32 -34
- data/lib/k2-connect-ruby/k2_entity/k2_subscribe.rb +34 -36
- data/lib/k2-connect-ruby/k2_entity/k2_token.rb +58 -54
- data/lib/k2-connect-ruby/k2_errors.rb +64 -62
- data/lib/k2-connect-ruby/k2_services/k2_client.rb +27 -0
- data/lib/k2-connect-ruby/k2_services/payload_process.rb +10 -5
- data/lib/k2-connect-ruby/k2_services/payloads/k2_transaction.rb +52 -46
- data/lib/k2-connect-ruby/k2_services/payloads/k2_webhooks.rb +57 -51
- data/lib/k2-connect-ruby/k2_services/payloads/transactions/incoming_payment.rb +50 -42
- data/lib/k2-connect-ruby/k2_services/payloads/transactions/outgoing_payment.rb +19 -11
- data/lib/k2-connect-ruby/k2_services/payloads/transactions/transfer.rb +16 -8
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/b2b_transaction_received.rb +18 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/buygoods_transaction_received.rb +13 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/buygoods_transaction_reversed.rb +13 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/customer_created.rb +20 -12
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/settlement_webhook.rb +40 -32
- data/lib/k2-connect-ruby/k2_utilities/config/k2_config.rb +49 -46
- data/lib/k2-connect-ruby/k2_utilities/k2_authenticator.rb +19 -0
- data/lib/k2-connect-ruby/k2_utilities/k2_connection.rb +39 -32
- data/lib/k2-connect-ruby/k2_utilities/k2_process_result.rb +42 -37
- data/lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb +51 -50
- data/lib/k2-connect-ruby/k2_utilities/k2_url_parse.rb +11 -6
- data/lib/k2-connect-ruby/k2_utilities/k2_validation.rb +104 -102
- data/lib/k2-connect-ruby/{utilities.rb → k2_utilities.rb} +8 -8
- data/lib/k2-connect-ruby/version.rb +1 -1
- data/lib/k2-connect-ruby.rb +7 -25
- metadata +56 -43
- data/lib/k2-connect-ruby/k2_services/client/k2_client.rb +0 -24
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/b2b_received.rb +0 -10
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/buygoods_received.rb +0 -5
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/buygoods_reversal.rb +0 -5
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/m2m_transaction.rb +0 -8
- data/lib/k2-connect-ruby/k2_utilities/k2_authorize.rb +0 -14
- data/lib/k2-connect-ruby/k2_utilities/spec_modules/spec_config.rb +0 -41
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: k2-connect-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DavidKar1uk1
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,112 +16,126 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 7.2.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 7.2.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 7.2.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 7.2.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rest-client
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
47
|
+
version: 2.1.0
|
48
|
+
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 2.1.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: json
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 2.
|
61
|
+
version: 2.8.2
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.8.2
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.5.16
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: 2.16
|
82
|
+
version: 2.5.16
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name: guard
|
84
|
+
name: guard
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
89
|
+
version: '2.19'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
96
|
+
version: '2.19'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: guard-rspec
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
90
|
-
type: :
|
103
|
+
version: 4.7.3
|
104
|
+
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
110
|
+
version: 4.7.3
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rake
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: 13.
|
117
|
+
version: 13.2.1
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: 13.
|
124
|
+
version: 13.2.1
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: rspec
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - "~>"
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: 3.
|
131
|
+
version: 3.13.0
|
118
132
|
type: :development
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: 3.
|
138
|
+
version: 3.13.0
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: rspec-nc
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,42 +156,42 @@ dependencies:
|
|
142
156
|
requirements:
|
143
157
|
- - "~>"
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version: 6.
|
159
|
+
version: 6.3.1
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - "~>"
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: 6.
|
166
|
+
version: 6.3.1
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: webmock
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - "~>"
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version: 3.
|
173
|
+
version: '3.24'
|
160
174
|
type: :development
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
178
|
- - "~>"
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version: 3.
|
180
|
+
version: '3.24'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
182
|
+
name: faker
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
185
|
- - "~>"
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
174
|
-
type: :
|
187
|
+
version: 3.5.1
|
188
|
+
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - "~>"
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
194
|
+
version: 3.5.1
|
181
195
|
description: Ruby SDK for the Kopo Kopo K2 Connect API, with webhook subscriptions,
|
182
196
|
STK Push, Pay and Settlement Transfer capabilities. Allows decomposition and break
|
183
197
|
down of results and webhooks returned from the K2 Connect APIx``.
|
@@ -190,6 +204,7 @@ files:
|
|
190
204
|
- ".gitignore"
|
191
205
|
- ".gitmodules"
|
192
206
|
- ".rspec"
|
207
|
+
- ".ruby-version"
|
193
208
|
- ".travis.yml"
|
194
209
|
- CHANGELOG.md
|
195
210
|
- CODE_OF_CONDUCT.md
|
@@ -203,7 +218,7 @@ files:
|
|
203
218
|
- bin/setup
|
204
219
|
- k2-connect-ruby.gemspec
|
205
220
|
- lib/k2-connect-ruby.rb
|
206
|
-
- lib/k2-connect-ruby/
|
221
|
+
- lib/k2-connect-ruby/entity.rb
|
207
222
|
- lib/k2-connect-ruby/k2_entity/k2_entity.rb
|
208
223
|
- lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb
|
209
224
|
- lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_settlement.rb
|
@@ -214,29 +229,27 @@ files:
|
|
214
229
|
- lib/k2-connect-ruby/k2_entity/k2_subscribe.rb
|
215
230
|
- lib/k2-connect-ruby/k2_entity/k2_token.rb
|
216
231
|
- lib/k2-connect-ruby/k2_errors.rb
|
217
|
-
- lib/k2-connect-ruby/k2_services/
|
232
|
+
- lib/k2-connect-ruby/k2_services/k2_client.rb
|
218
233
|
- lib/k2-connect-ruby/k2_services/payload_process.rb
|
219
234
|
- lib/k2-connect-ruby/k2_services/payloads/k2_transaction.rb
|
220
235
|
- lib/k2-connect-ruby/k2_services/payloads/k2_webhooks.rb
|
221
236
|
- lib/k2-connect-ruby/k2_services/payloads/transactions/incoming_payment.rb
|
222
237
|
- lib/k2-connect-ruby/k2_services/payloads/transactions/outgoing_payment.rb
|
223
238
|
- lib/k2-connect-ruby/k2_services/payloads/transactions/transfer.rb
|
224
|
-
- lib/k2-connect-ruby/k2_services/payloads/webhooks/
|
225
|
-
- lib/k2-connect-ruby/k2_services/payloads/webhooks/
|
226
|
-
- lib/k2-connect-ruby/k2_services/payloads/webhooks/
|
239
|
+
- lib/k2-connect-ruby/k2_services/payloads/webhooks/b2b_transaction_received.rb
|
240
|
+
- lib/k2-connect-ruby/k2_services/payloads/webhooks/buygoods_transaction_received.rb
|
241
|
+
- lib/k2-connect-ruby/k2_services/payloads/webhooks/buygoods_transaction_reversed.rb
|
227
242
|
- lib/k2-connect-ruby/k2_services/payloads/webhooks/customer_created.rb
|
228
|
-
- lib/k2-connect-ruby/k2_services/payloads/webhooks/m2m_transaction.rb
|
229
243
|
- lib/k2-connect-ruby/k2_services/payloads/webhooks/settlement_webhook.rb
|
244
|
+
- lib/k2-connect-ruby/k2_utilities.rb
|
230
245
|
- lib/k2-connect-ruby/k2_utilities/config/k2_config.rb
|
231
246
|
- lib/k2-connect-ruby/k2_utilities/config/k2_config.yml
|
232
|
-
- lib/k2-connect-ruby/k2_utilities/
|
247
|
+
- lib/k2-connect-ruby/k2_utilities/k2_authenticator.rb
|
233
248
|
- lib/k2-connect-ruby/k2_utilities/k2_connection.rb
|
234
249
|
- lib/k2-connect-ruby/k2_utilities/k2_process_result.rb
|
235
250
|
- lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb
|
236
251
|
- lib/k2-connect-ruby/k2_utilities/k2_url_parse.rb
|
237
252
|
- lib/k2-connect-ruby/k2_utilities/k2_validation.rb
|
238
|
-
- lib/k2-connect-ruby/k2_utilities/spec_modules/spec_config.rb
|
239
|
-
- lib/k2-connect-ruby/utilities.rb
|
240
253
|
- lib/k2-connect-ruby/version.rb
|
241
254
|
homepage: https://github.com/kopokopo/k2-connect-ruby.git
|
242
255
|
licenses:
|
@@ -254,14 +267,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
254
267
|
requirements:
|
255
268
|
- - "~>"
|
256
269
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
270
|
+
version: 3.3.5
|
258
271
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
259
272
|
requirements:
|
260
273
|
- - ">="
|
261
274
|
- !ruby/object:Gem::Version
|
262
275
|
version: '0'
|
263
276
|
requirements: []
|
264
|
-
rubygems_version: 3.
|
277
|
+
rubygems_version: 3.5.16
|
265
278
|
signing_key:
|
266
279
|
specification_version: 4
|
267
280
|
summary: Ruby SDK for the Kopo Kopo K2 Connect API.
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# TODO: Uncomment the checking of the request scheme
|
2
|
-
class K2Client
|
3
|
-
attr_accessor :api_secret_key,
|
4
|
-
:hash_body,
|
5
|
-
:k2_signature
|
6
|
-
|
7
|
-
# Initialize method
|
8
|
-
def initialize(api_secret_key)
|
9
|
-
raise ArgumentError, 'No Secret Key Given!' if api_secret_key.blank?
|
10
|
-
@api_secret_key = api_secret_key
|
11
|
-
end
|
12
|
-
|
13
|
-
# Method for parsing the Entire Request. Come back to it later to trim. L8r call it set_client_variables
|
14
|
-
def parse_request(the_request)
|
15
|
-
raise ArgumentError, 'Nil Request Parameter Input!' if the_request.blank?
|
16
|
-
|
17
|
-
# The Response Body.
|
18
|
-
@hash_body = Yajl::Parser.parse(the_request.body.read.as_json)
|
19
|
-
# The Response Header
|
20
|
-
hash_header = Yajl::Parser.parse(the_request.env.select { |k, _| k =~ /^HTTP_/ }.to_json)
|
21
|
-
# The K2 Signature
|
22
|
-
@k2_signature = hash_header['HTTP_X_KOPOKOPO_SIGNATURE']
|
23
|
-
end
|
24
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'openssl'
|
2
|
-
require 'active_support/security_utils'
|
3
|
-
# Module for Authenticating the Kopo Kopo Signature via HMAC
|
4
|
-
module K2Authenticator
|
5
|
-
# Compares HMAC signature with the key.
|
6
|
-
def self.authenticate(body, api_secret_key, signature)
|
7
|
-
raise ArgumentError, "Nil Authentication Argument!\n Check whether your Input is Empty" if body.blank? || api_secret_key.blank? || signature.blank?
|
8
|
-
|
9
|
-
digest = OpenSSL::Digest.new('sha256')
|
10
|
-
hmac = OpenSSL::HMAC.hexdigest(digest, api_secret_key, body.to_json)
|
11
|
-
raise ArgumentError, "Invalid Details Given!\n Ensure that your the Arguments Given are correct, namely:\n\t- The Response Body\n\t- Secret Key\n\t- Signature" unless ActiveSupport::SecurityUtils.secure_compare(hmac, signature)
|
12
|
-
true
|
13
|
-
end
|
14
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module SpecConfig
|
2
|
-
TILL_SCOPE_EVENT_TYPES = %[buygoods_transaction_received b2b_transaction_received buygoods_transaction_reversed]
|
3
|
-
|
4
|
-
@specs = YAML.load_file(File.join('lib', 'k2-connect-ruby', 'k2_utilities', 'spec_modules', 'test_config.yml')).with_indifferent_access
|
5
|
-
|
6
|
-
def subscription_stub_request(event_type, url)
|
7
|
-
request_body = { event_type: event_type, url: url, secret: 'webhook_secret' }
|
8
|
-
SpecConfig.custom_stub_request('post', K2Config.path_url('webhook_subscriptions'), request_body, 200)
|
9
|
-
end
|
10
|
-
|
11
|
-
def webhook_structure(event_type, scope, scope_reference = nil)
|
12
|
-
{
|
13
|
-
event_type: event_type,
|
14
|
-
url: @callback_url,
|
15
|
-
scope: scope,
|
16
|
-
scope_reference: scope_reference,
|
17
|
-
}
|
18
|
-
end
|
19
|
-
|
20
|
-
class << self
|
21
|
-
def callback_url(context)
|
22
|
-
@specs[:callback_url][:"#{context}"]
|
23
|
-
end
|
24
|
-
|
25
|
-
def custom_stub_request(request_type, path_url, request_body, response_code)
|
26
|
-
request_body = request_body.to_s
|
27
|
-
request_uri = path_url
|
28
|
-
request_headers = { Authorization: "Bearer access_token", Accept: "application/json" }
|
29
|
-
|
30
|
-
if request_type.eql?('post')
|
31
|
-
request_headers['Content-Type'] = 'application/json'
|
32
|
-
end
|
33
|
-
|
34
|
-
# Stub Request
|
35
|
-
WebMock.stub_request(:"#{request_type}", request_uri)
|
36
|
-
.with(headers: request_headers, body: request_body)
|
37
|
-
.to_return(status: response_code)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|