mpesa_stk 1.3 → 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.
metadata CHANGED
@@ -1,16 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mpesa_stk
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.3'
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mboya
8
8
  - cess
9
- autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2020-06-17 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: base64
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: csv
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.0
14
41
  - !ruby/object:Gem::Dependency
15
42
  name: httparty
16
43
  requirement: !ruby/object:Gem::Requirement
@@ -20,7 +47,7 @@ dependencies:
20
47
  version: 0.15.6
21
48
  - - "<"
22
49
  - !ruby/object:Gem::Version
23
- version: 0.19.0
50
+ version: 0.25.0
24
51
  type: :runtime
25
52
  prerelease: false
26
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -30,27 +57,21 @@ dependencies:
30
57
  version: 0.15.6
31
58
  - - "<"
32
59
  - !ruby/object:Gem::Version
33
- version: 0.19.0
60
+ version: 0.25.0
34
61
  - !ruby/object:Gem::Dependency
35
- name: redis-rack
62
+ name: redis
36
63
  requirement: !ruby/object:Gem::Requirement
37
64
  requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.0'
41
65
  - - ">="
42
66
  - !ruby/object:Gem::Version
43
- version: 2.0.2
67
+ version: '4.0'
44
68
  type: :runtime
45
69
  prerelease: false
46
70
  version_requirements: !ruby/object:Gem::Requirement
47
71
  requirements:
48
- - - "~>"
49
- - !ruby/object:Gem::Version
50
- version: '2.0'
51
72
  - - ">="
52
73
  - !ruby/object:Gem::Version
53
- version: 2.0.2
74
+ version: '4.0'
54
75
  - !ruby/object:Gem::Dependency
55
76
  name: redis-namespace
56
77
  requirement: !ruby/object:Gem::Requirement
@@ -72,19 +93,53 @@ dependencies:
72
93
  - !ruby/object:Gem::Version
73
94
  version: 1.5.3
74
95
  - !ruby/object:Gem::Dependency
75
- name: bundler
96
+ name: redis-rack
76
97
  requirement: !ruby/object:Gem::Requirement
77
98
  requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '2.0'
78
102
  - - ">="
79
103
  - !ruby/object:Gem::Version
80
- version: '0'
81
- type: :development
104
+ version: 2.0.2
105
+ type: :runtime
82
106
  prerelease: false
83
107
  version_requirements: !ruby/object:Gem::Requirement
84
108
  requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '2.0'
85
112
  - - ">="
86
113
  - !ruby/object:Gem::Version
87
- version: '0'
114
+ version: 2.0.2
115
+ - !ruby/object:Gem::Dependency
116
+ name: bundler
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '2.0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '2.0'
129
+ - !ruby/object:Gem::Dependency
130
+ name: minitest
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: '5.20'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '5.20'
88
143
  - !ruby/object:Gem::Dependency
89
144
  name: rake
90
145
  requirement: !ruby/object:Gem::Requirement
@@ -100,81 +155,89 @@ dependencies:
100
155
  - !ruby/object:Gem::Version
101
156
  version: 12.3.3
102
157
  - !ruby/object:Gem::Dependency
103
- name: minitest
158
+ name: dotenv
104
159
  requirement: !ruby/object:Gem::Requirement
105
160
  requirements:
106
161
  - - "~>"
107
162
  - !ruby/object:Gem::Version
108
- version: '5.0'
163
+ version: '3.0'
109
164
  type: :development
110
165
  prerelease: false
111
166
  version_requirements: !ruby/object:Gem::Requirement
112
167
  requirements:
113
168
  - - "~>"
114
169
  - !ruby/object:Gem::Version
115
- version: '5.0'
170
+ version: '3.0'
116
171
  - !ruby/object:Gem::Dependency
117
172
  name: pry
118
173
  requirement: !ruby/object:Gem::Requirement
119
174
  requirements:
120
175
  - - "~>"
121
176
  - !ruby/object:Gem::Version
122
- version: 0.10.4
177
+ version: '0.14'
123
178
  type: :development
124
179
  prerelease: false
125
180
  version_requirements: !ruby/object:Gem::Requirement
126
181
  requirements:
127
182
  - - "~>"
128
183
  - !ruby/object:Gem::Version
129
- version: 0.10.4
184
+ version: '0.14'
130
185
  - !ruby/object:Gem::Dependency
131
186
  name: pry-nav
132
187
  requirement: !ruby/object:Gem::Requirement
133
188
  requirements:
134
189
  - - "~>"
135
190
  - !ruby/object:Gem::Version
136
- version: 0.2.4
191
+ version: '1.0'
137
192
  type: :development
138
193
  prerelease: false
139
194
  version_requirements: !ruby/object:Gem::Requirement
140
195
  requirements:
141
196
  - - "~>"
142
197
  - !ruby/object:Gem::Version
143
- version: 0.2.4
198
+ version: '1.0'
144
199
  - !ruby/object:Gem::Dependency
145
- name: webmock
200
+ name: rubocop
146
201
  requirement: !ruby/object:Gem::Requirement
147
202
  requirements:
148
203
  - - "~>"
149
204
  - !ruby/object:Gem::Version
150
- version: '3.0'
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: 3.0.1
205
+ version: '1.0'
154
206
  type: :development
155
207
  prerelease: false
156
208
  version_requirements: !ruby/object:Gem::Requirement
157
209
  requirements:
158
210
  - - "~>"
159
211
  - !ruby/object:Gem::Version
160
- version: '3.0'
161
- - - ">="
212
+ version: '1.0'
213
+ - !ruby/object:Gem::Dependency
214
+ name: simplecov
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - "~>"
162
218
  - !ruby/object:Gem::Version
163
- version: 3.0.1
219
+ version: '0.22'
220
+ type: :development
221
+ prerelease: false
222
+ version_requirements: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - "~>"
225
+ - !ruby/object:Gem::Version
226
+ version: '0.22'
164
227
  - !ruby/object:Gem::Dependency
165
- name: dotenv
228
+ name: webmock
166
229
  requirement: !ruby/object:Gem::Requirement
167
230
  requirements:
168
- - - '='
231
+ - - "~>"
169
232
  - !ruby/object:Gem::Version
170
- version: 2.7.5
233
+ version: '3.18'
171
234
  type: :development
172
235
  prerelease: false
173
236
  version_requirements: !ruby/object:Gem::Requirement
174
237
  requirements:
175
- - - '='
238
+ - - "~>"
176
239
  - !ruby/object:Gem::Version
177
- version: 2.7.5
240
+ version: '3.18'
178
241
  description: initiate a M-Pesa transaction on behalf of a customer using STK Push.
179
242
  email:
180
243
  - mboyaberry@gmail.com
@@ -183,29 +246,49 @@ executables: []
183
246
  extensions: []
184
247
  extra_rdoc_files: []
185
248
  files:
249
+ - ".github/workflows/codeql-analysis.yml"
186
250
  - ".github/workflows/cop.yml"
187
251
  - ".gitignore"
252
+ - ".rubocop.yml"
188
253
  - ".sample.env"
254
+ - CHANGELOG.md
189
255
  - CODE_OF_CONDUCT.md
190
256
  - Gemfile
191
257
  - Gemfile.lock
192
258
  - LICENSE.txt
259
+ - MIGRATION.md
193
260
  - README.md
194
261
  - Rakefile
262
+ - SECURITY.md
195
263
  - bin/console
196
264
  - bin/index.jpeg
197
265
  - bin/setup
198
266
  - lib/mpesa_stk.rb
199
267
  - lib/mpesa_stk/access_token.rb
268
+ - lib/mpesa_stk/account_balance.rb
269
+ - lib/mpesa_stk/b2b.rb
270
+ - lib/mpesa_stk/b2c.rb
271
+ - lib/mpesa_stk/c2b.rb
272
+ - lib/mpesa_stk/client.rb
273
+ - lib/mpesa_stk/config.rb
274
+ - lib/mpesa_stk/imsi.rb
275
+ - lib/mpesa_stk/iot.rb
276
+ - lib/mpesa_stk/pull_transactions.rb
200
277
  - lib/mpesa_stk/push.rb
201
- - lib/mpesa_stk/push_payment.rb
278
+ - lib/mpesa_stk/ratiba.rb
279
+ - lib/mpesa_stk/reversal.rb
280
+ - lib/mpesa_stk/stk_push_query.rb
281
+ - lib/mpesa_stk/transaction_status.rb
202
282
  - lib/mpesa_stk/version.rb
203
283
  - mpesa_stk.gemspec
204
284
  homepage: https://github.com/mboya/mpesa_stk
205
285
  licenses:
206
286
  - MIT
207
- metadata: {}
208
- post_install_message:
287
+ metadata:
288
+ homepage_uri: https://github.com/mboya/mpesa_stk
289
+ source_code_uri: https://github.com/mboya/mpesa_stk.git
290
+ changelog_uri: https://github.com/mboya/mpesa_stk/blob/master/CHANGELOG.md
291
+ rubygems_mfa_required: 'true'
209
292
  rdoc_options: []
210
293
  require_paths:
211
294
  - lib
@@ -213,15 +296,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
213
296
  requirements:
214
297
  - - ">="
215
298
  - !ruby/object:Gem::Version
216
- version: '0'
299
+ version: 2.6.0
217
300
  required_rubygems_version: !ruby/object:Gem::Requirement
218
301
  requirements:
219
302
  - - ">="
220
303
  - !ruby/object:Gem::Version
221
304
  version: '0'
222
305
  requirements: []
223
- rubygems_version: 3.0.8
224
- signing_key:
306
+ rubygems_version: 4.0.9
225
307
  specification_version: 4
226
308
  summary: Lipa na M-Pesa Online Payment.
227
309
  test_files: []
@@ -1,71 +0,0 @@
1
- require "mpesa_stk/access_token"
2
-
3
- module MpesaStk
4
- class PushPayment
5
- class << self
6
- def call(amount, phone_number)
7
- new(amount, phone_number).push_payment
8
- end
9
- end
10
-
11
- attr_reader :token, :amount, :phone_number
12
-
13
- def initialize(amount, phone_number)
14
- @token = MpesaStk::AccessToken.call
15
- @amount = amount
16
- @phone_number = phone_number
17
- end
18
-
19
- def push_payment
20
- response = HTTParty.post(url, headers: headers, body: body)
21
- JSON.parse(response.body)
22
- end
23
-
24
- private
25
-
26
- def url
27
- "#{ENV['base_url']}#{ENV['process_request_url']}"
28
- end
29
-
30
- def headers
31
- {
32
- "Authorization" => "Bearer #{token}",
33
- "Content-Type" => "application/json"
34
- }
35
- end
36
-
37
- def body
38
- {
39
- BusinessShortCode: "#{ENV['business_short_code']}",
40
- Password: generate_password,
41
- Timestamp: "#{timestamp}",
42
- TransactionType: "CustomerPayBillOnline",
43
- Amount: "#{amount}",
44
- PartyA: "#{phone_number}",
45
- PartyB: "#{ENV['business_short_code']}",
46
- PhoneNumber: "#{phone_number}",
47
- CallBackURL: "#{ENV['callback_url']}",
48
- AccountReference: generate_bill_reference_number(5),
49
- TransactionDesc: generate_bill_reference_number(5)
50
- }.to_json
51
- end
52
-
53
- def generate_bill_reference_number(number)
54
- charset = Array('A'..'Z') + Array('a'..'z')
55
- Array.new(number) { charset.sample }.join
56
- end
57
-
58
- def timestamp
59
- DateTime.now.strftime("%Y%m%d%H%M%S").to_i
60
- end
61
-
62
- # shortcode
63
- # passkey
64
- # timestamp
65
- def generate_password
66
- key = "#{ENV['business_short_code']}#{ENV['business_passkey']}#{timestamp}"
67
- Base64.encode64(key).split("\n").join
68
- end
69
-
70
- end
71
- end