mpesa_stk 1.2.1 → 1.2.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e90c4c26220e6e18d166f5228562d2119685b7c5206f936e198e1ff29797e604
4
- data.tar.gz: 07ee7e67bdcc9918c65edc2d694a0d0ed0911e3a734855e2744a3297e77ee370
3
+ metadata.gz: aac00cb985abf7274869098214e1736ba90c0b26803d4bb0a37537b740ae6b7b
4
+ data.tar.gz: 5969725cfc65d13c3a969773fd33da9d040b84a50a9e01aefc95a3be2a8ca71c
5
5
  SHA512:
6
- metadata.gz: 2298d7120de0589060fc1c0a13c243415bd22edbf532eda7cbf44834f3f0654f98c05255baa04b212a2968215c0c2f92db0d3cf64c62286209793d62c7c89dd1
7
- data.tar.gz: 61095e1ea8499ac17260d38c96af10b7e06ff751ff736ca419487b7be11fc1d384e6bf6f59d175ecd071c88752af4f6f5bc96c12b8bf320d4ec7d6728aae3d6a
6
+ metadata.gz: 34f7c15f99680ef3f3f916b06bb03a85e880b6fe598a6d0997816739f108ac6f5c32086cb7d60c53389a539a0811f1d1ee68b0a2c98e9baf47e035b17b52cf4d
7
+ data.tar.gz: 9ff781d747187f656c97cc33921a0fb55e31692e8fa264b0be9f99a22c5caaa162489d1bf67c9c61d5b28ce2b3efb1d69114911271f99a5ff15d380fc4a5981b
@@ -0,0 +1,22 @@
1
+ name: Cop
2
+ on: [push]
3
+
4
+ jobs:
5
+ build:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - name: Rubocop checks
9
+ uses: gimenete/rubocop-action@1.0
10
+ env:
11
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
12
+
13
+ - uses: actions/checkout@v2
14
+ - name: Set up Ruby 2.6
15
+ uses: actions/setup-ruby@v1
16
+ with:
17
+ ruby-version: 2.6
18
+ - name: Rails Test
19
+ run: |
20
+ gem install bundler
21
+ bundle install
22
+ bundle exec rake test
data/.gitignore CHANGED
@@ -10,4 +10,7 @@
10
10
  .env
11
11
  .DS_Store
12
12
  *.gem
13
- dump.rdb
13
+ dump.rdb
14
+
15
+ .idea/
16
+ .rakeTasks
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mpesa_stk (1.2.0)
4
+ mpesa_stk (1.2.1)
5
5
  httparty (~> 0.15.6)
6
6
  redis-namespace (~> 1.5, >= 1.5.3)
7
7
  redis-rack (~> 2.0, >= 2.0.2)
@@ -9,17 +9,17 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- addressable (2.6.0)
13
- public_suffix (>= 2.0.2, < 4.0)
12
+ addressable (2.7.0)
13
+ public_suffix (>= 2.0.2, < 5.0)
14
14
  coderay (1.1.2)
15
15
  crack (0.4.3)
16
16
  safe_yaml (~> 1.0.0)
17
17
  dotenv (2.2.1)
18
- hashdiff (0.3.9)
18
+ hashdiff (1.0.1)
19
19
  httparty (0.15.7)
20
20
  multi_xml (>= 0.5.2)
21
21
  method_source (0.8.2)
22
- minitest (5.11.3)
22
+ minitest (5.14.0)
23
23
  multi_xml (0.6.0)
24
24
  pry (0.10.4)
25
25
  coderay (~> 1.1.0)
@@ -27,36 +27,36 @@ GEM
27
27
  slop (~> 3.4)
28
28
  pry-nav (0.2.4)
29
29
  pry (>= 0.9.10, < 0.11.0)
30
- public_suffix (3.0.3)
31
- rack (2.0.7)
32
- rake (10.5.0)
33
- redis (4.1.1)
34
- redis-namespace (1.6.0)
30
+ public_suffix (4.0.4)
31
+ rack (2.2.2)
32
+ rake (12.3.3)
33
+ redis (4.1.3)
34
+ redis-namespace (1.7.0)
35
35
  redis (>= 3.0.4)
36
- redis-rack (2.0.5)
37
- rack (>= 1.5, < 3)
36
+ redis-rack (2.1.2)
37
+ rack (>= 2.0.8, < 3)
38
38
  redis-store (>= 1.2, < 2)
39
- redis-store (1.6.0)
40
- redis (>= 2.2, < 5)
39
+ redis-store (1.8.2)
40
+ redis (>= 4, < 5)
41
41
  safe_yaml (1.0.5)
42
42
  slop (3.6.0)
43
- webmock (3.5.1)
43
+ webmock (3.8.3)
44
44
  addressable (>= 2.3.6)
45
45
  crack (>= 0.3.2)
46
- hashdiff
46
+ hashdiff (>= 0.4.0, < 2.0.0)
47
47
 
48
48
  PLATFORMS
49
49
  ruby
50
50
 
51
51
  DEPENDENCIES
52
- bundler (~> 1.16)
52
+ bundler
53
53
  dotenv (= 2.2.1)
54
54
  minitest (~> 5.0)
55
55
  mpesa_stk!
56
56
  pry (~> 0.10.4)
57
57
  pry-nav (~> 0.2.4)
58
- rake (~> 10.0)
58
+ rake (>= 12.3.3)
59
59
  webmock (~> 3.0, >= 3.0.1)
60
60
 
61
61
  BUNDLED WITH
62
- 1.17.3
62
+ 2.1.4
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # MpesaStk
2
2
  Lipa na M-Pesa Online Payment API is used to initiate a M-Pesa transaction on behalf of a customer using STK Push. This is the same technique mySafaricom App uses whenever the app is used to make payments.
3
3
 
4
- [![Gem Version](https://badge.fury.io/rb/mpesa_stk.svg)](https://badge.fury.io/rb/mpesa_stk.svg)
4
+ <!-- [![Gem Version](https://badge.fury.io/rb/mpesa_stk.svg)](https://badge.fury.io/rb/mpesa_stk.svg) -->
5
5
 
6
6
  ## Installation
7
7
 
@@ -41,7 +41,19 @@ callback_url=""
41
41
  * `business_short_code` and `business_pass_key` this can be found in [Test Credentials](https://developer.safaricom.co.ke/test_credentials).
42
42
  * `callback_url` the url of your application where response will be sent. `make sure its a reachable/active url`
43
43
 
44
- ## Testing
44
+ ### Testing out the gem in an actual Rails application
45
+
46
+ To test out the app on an actual rails application, do check out the following link:
47
+
48
+ https://github.com/mboya/stk
49
+
50
+ ```shell
51
+ https://github.com/mboya/stk
52
+ ```
53
+ #### Sample application
54
+ Check out a rails sample application [here](https://github.com/mboya/stk)
55
+
56
+ ### Testing the gem on the console
45
57
 
46
58
  ```ruby
47
59
  $ irb
@@ -103,5 +115,3 @@ The gem is available as open source under the terms of the [MIT License](https:/
103
115
 
104
116
  Everyone interacting in the MpesaStk project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/mboya/mpesa_stk/blob/master/CODE_OF_CONDUCT.md).
105
117
 
106
- ## Sample application
107
- Check out a rails sample application [here](https://github.com/mboya/stk)
@@ -61,25 +61,26 @@ module MpesaStk
61
61
  def get_new_access_token
62
62
  response = HTTParty.get(url, headers: headers)
63
63
 
64
- hash = JSON.parse(response.body).merge(Hash['time_stamp',Time.now.to_i])
64
+ hash = JSON.parse(response.body).merge(Hash['time_stamp', Time.now.to_i])
65
65
  @redis.set @key, hash.to_json
66
66
  end
67
67
 
68
68
  private
69
- def url
70
- "#{ENV['base_url']}#{ENV['token_generator_url']}"
71
- end
72
69
 
73
- def headers
74
- encode = encode_credentials @key, @secret
75
- headers = {
70
+ def url
71
+ "#{ENV['base_url']}#{ENV['token_generator_url']}"
72
+ end
73
+
74
+ def headers
75
+ encode = encode_credentials @key, @secret
76
+ headers = {
76
77
  "Authorization" => "Basic #{encode}"
77
- }
78
- end
78
+ }
79
+ end
79
80
 
80
- def encode_credentials key, secret
81
- credentials = "#{key}:#{secret}"
82
- encoded_credentials = Base64.encode64(credentials).split("\n").join
83
- end
81
+ def encode_credentials key, secret
82
+ credentials = "#{key}:#{secret}"
83
+ encoded_credentials = Base64.encode64(credentials).split("\n").join
84
+ end
84
85
  end
85
86
  end
@@ -22,19 +22,20 @@ module MpesaStk
22
22
  end
23
23
 
24
24
  private
25
- def url
26
- "#{ENV['base_url']}#{ENV['process_request_url']}"
27
- end
28
25
 
29
- def headers
30
- headers = {
26
+ def url
27
+ "#{ENV['base_url']}#{ENV['process_request_url']}"
28
+ end
29
+
30
+ def headers
31
+ headers = {
31
32
  "Authorization" => "Bearer #{token}",
32
33
  "Content-Type" => "application/json"
33
- }
34
- end
34
+ }
35
+ end
35
36
 
36
- def body
37
- {
37
+ def body
38
+ {
38
39
  BusinessShortCode: "#{ENV['business_short_code']}",
39
40
  Password: generate_password,
40
41
  Timestamp: "#{timestamp}",
@@ -46,25 +47,25 @@ module MpesaStk
46
47
  CallBackURL: "#{ENV['callback_url']}",
47
48
  AccountReference: generate_bill_reference_number(5),
48
49
  TransactionDesc: generate_bill_reference_number(5)
49
- }.to_json
50
- end
50
+ }.to_json
51
+ end
51
52
 
52
- def generate_bill_reference_number(number)
53
- charset = Array('A'..'Z') + Array('a'..'z')
54
- Array.new(number) { charset.sample }.join
55
- end
53
+ def generate_bill_reference_number(number)
54
+ charset = Array('A'..'Z') + Array('a'..'z')
55
+ Array.new(number) { charset.sample }.join
56
+ end
56
57
 
57
- def timestamp
58
- DateTime.now.strftime("%Y%m%d%H%M%S").to_i
59
- end
58
+ def timestamp
59
+ DateTime.now.strftime("%Y%m%d%H%M%S").to_i
60
+ end
60
61
 
61
- # shortcode
62
- # passkey
63
- # timestamp
64
- def generate_password
65
- key = "#{ENV['business_short_code']}#{ENV['business_passkey']}#{timestamp}"
66
- Base64.encode64(key).split("\n").join
67
- end
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
68
69
 
69
70
  end
70
71
  end
@@ -1,3 +1,3 @@
1
1
  module MpesaStk
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.1.1"
3
3
  end
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency 'redis-rack', '~> 2.0', '>= 2.0.2'
26
26
  spec.add_dependency 'redis-namespace', '~> 1.5', '>= 1.5.3'
27
27
 
28
- spec.add_development_dependency "bundler", "~> 1.16"
29
- spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "bundler"
29
+ spec.add_development_dependency "rake", ">= 12.3.3"
30
30
  spec.add_development_dependency "minitest", "~> 5.0"
31
31
 
32
32
  spec.add_development_dependency 'pry', '~> 0.10.4'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mpesa_stk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - mboya
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2019-05-09 00:00:00.000000000 Z
12
+ date: 2020-04-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -69,30 +69,30 @@ dependencies:
69
69
  name: bundler
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '1.16'
74
+ version: '0'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '1.16'
81
+ version: '0'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: rake
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '10.0'
88
+ version: 12.3.3
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: '10.0'
95
+ version: 12.3.3
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: minitest
98
98
  requirement: !ruby/object:Gem::Requirement
@@ -177,9 +177,9 @@ executables: []
177
177
  extensions: []
178
178
  extra_rdoc_files: []
179
179
  files:
180
+ - ".github/workflows/cop.yml"
180
181
  - ".gitignore"
181
182
  - ".sample.env"
182
- - ".travis.yml"
183
183
  - CODE_OF_CONDUCT.md
184
184
  - Gemfile
185
185
  - Gemfile.lock
@@ -213,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
213
  - !ruby/object:Gem::Version
214
214
  version: '0'
215
215
  requirements: []
216
- rubygems_version: 3.0.3
216
+ rubygems_version: 3.1.2
217
217
  signing_key:
218
218
  specification_version: 4
219
219
  summary: Lipa na M-Pesa Online Payment.
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4.1
5
- before_install: gem install bundler -v 1.16.1