mpesa_connect 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: df25e1cf7fb4470050aa2cb2396b856f844798cf
4
- data.tar.gz: efbef4a6bc5cc851f975f66a288fcf63ad443169
3
+ metadata.gz: 3a4a20dc87bdebda47d40c9d6a5b39841c9f585e
4
+ data.tar.gz: bed0265698be8b6c7daab87024d942910e5921a7
5
5
  SHA512:
6
- metadata.gz: 0310d675bb63970f1c028114078a9be7db1add163a71191eaf69ab356c855b92bd44af4c47fbbfc3e7f3afe2cea0c8c1efd4ab22459841145658553f9de372f7
7
- data.tar.gz: 7a6611473c8391c7a2a2d4d5fb850995371a52bb7136e08ab392e09cc79addab8c8d0dc9ab477be8b20401fd29c646bb0e42d2bd92858572107bc0a0ba376ea5
6
+ metadata.gz: 6e2bb0c34147dad9123649f220b97d6db15df974cee8bfed09bf651c87d60d66660636b83615ce3632bb2248add3cb0989839cf52b0ede3c10f6129b110a1661
7
+ data.tar.gz: 28942b47292806c5736ec2617370e7f568d13b2eba03cd7593c84a653a50e2ee9980927b8289896a7bc165086ac1ac2f1ce7054d23a6a621d9f0b65abd5d57d9
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  # MpesaConnect
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/mpesa_connect`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Gem built as ruby wrapper to handle transactions with with the [Safaricom M-Pesa APIs](https://developer.safaricom.co.ke/docs).
4
+ You will need to have a developer Account on [Safaricom Developer](https://developer.safaricom.co.ke/docs). Portal to run in sandbox environments.
6
5
 
7
6
  ## Installation
8
7
 
@@ -22,7 +21,60 @@ Or install it yourself as:
22
21
 
23
22
  ## Usage
24
23
 
25
- TODO: Write usage instructions here
24
+ ```ruby
25
+ require 'mpesa_connect'
26
+ ```
27
+
28
+ Values you need from your Safaricom app
29
+
30
+ - `key` and `secret`: Credentials for an approved app.
31
+ - `security_password`: Generated Encryption Security Credential from the sandbox tool (Shortcode 1).
32
+
33
+ ```ruby
34
+ client = MpesaConnect::Client.new(key, secret, security_password)
35
+ ```
36
+
37
+ Set the urls that will be used to send response back to your app
38
+
39
+ - `timeout_url` : The callback URL that handles information of timed out transactions
40
+ - `transaction_url`: The callback URL that handles a successful request and handles responses.
41
+
42
+ ```ruby
43
+ client.set_urls(timeout_url, transaction_url)
44
+ ```
45
+
46
+ For each of the functions you will need data from Test Credentials:
47
+
48
+ - `Initiator` : This is the credential/username used to authenticate the transaction request.
49
+ - `PartyA` : Short code for party initiating the transaction.
50
+ - `PartyB` : Organization/MSISDN(phone number) sending the transaction.
51
+ - `Receiver_party`: Identifier types - receiver - identify an M-Pesa transaction’s receiving party as either a shortcode, a till number or a MSISDN (phone number).
52
+
53
+ ### Account Balance
54
+
55
+ ```ruby
56
+ client.account_balance(initiator, party_a)
57
+ ```
58
+
59
+ ### Reversal
60
+
61
+ ```ruby
62
+ client.reversal(initiator, transaction_id, amount, receiver_party)
63
+ ```
64
+
65
+ ### Transaction Status
66
+
67
+ ```ruby
68
+ client.transaction_status(initiator, party_a, transaction_id)
69
+ ```
70
+
71
+ ### B2C Transaction
72
+
73
+ Salary Payment
74
+
75
+ ```ruby
76
+ client.b2c_transaction(initiator, amount, party_a, party_b)
77
+ ```
26
78
 
27
79
  ## Development
28
80
 
@@ -32,7 +84,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
84
 
33
85
  ## Contributing
34
86
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/mpesa_connect. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
87
+ Bug reports and pull requests are welcome on GitHub at https://github.com/mboya/mpesa_connect. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
88
 
37
89
  ## License
38
90
 
@@ -40,4 +92,4 @@ The gem is available as open source under the terms of the [MIT License](http://
40
92
 
41
93
  ## Code of Conduct
42
94
 
43
- Everyone interacting in the MpesaConnect project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/mpesa_connect/blob/master/CODE_OF_CONDUCT.md).
95
+ Everyone interacting in the MpesaConnect project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/mboya/mpesa_connect/blob/master/CODE_OF_CONDUCT.md).
data/_config.yml ADDED
@@ -0,0 +1 @@
1
+ theme: jekyll-theme-cayman
@@ -1,3 +1,6 @@
1
+ require 'base64'
2
+ require 'redis'
3
+
1
4
  module MpesaConnect
2
5
  class AccessToken
3
6
  def initialize key, secret
@@ -0,0 +1,22 @@
1
+ require 'pry'
2
+ require 'pry-nav'
3
+ require 'openssl'
4
+
5
+ module MpesaConnect
6
+ class SecurityCredentials
7
+
8
+ def initialize security_cred
9
+ @security_cred = security_cred
10
+ end
11
+
12
+ def encrypt_security_cred
13
+ byte_array = @security_cred.bytes.to_a.to_s
14
+ key_file = "lib/pubkey.pem"
15
+ public_key = File.read(key_file)
16
+ ssl = OpenSSL::PKey::RSA.new(public_key)
17
+
18
+ encrypted_string = Base64.encode64(ssl.public_encrypt(byte_array)).split("\n").join
19
+ end
20
+
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module MpesaConnect
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/mpesa_connect.rb CHANGED
@@ -1,15 +1,10 @@
1
1
  require "mpesa_connect/version"
2
- require 'base64'
3
- require 'redis'
2
+ require 'mpesa_connect/access_token'
4
3
  require 'httparty'
5
- require 'openssl'
6
- require 'access_token'
7
- require 'security_credentials'
8
4
 
9
5
  module MpesaConnect
10
6
  class Client
11
7
  BASE_URL = "https://sandbox.safaricom.co.ke"
12
- BALANCE_URL = "https://sandbox.safaricom.co.ke/mpesa/accountbalance/v1/query"
13
8
 
14
9
  def initialize key, secret, security_credentials
15
10
  @key = key
@@ -152,7 +147,7 @@ module MpesaConnect
152
147
 
153
148
  private
154
149
  def get_token
155
- AccessToken.new(@key, @secret).access_token
150
+ MpesaConnect::AccessToken.new(@key, @secret).access_token
156
151
  end
157
152
 
158
153
  def encrypted_security_password
@@ -1,5 +1,6 @@
1
1
  require 'pry'
2
2
  require 'pry-nav'
3
+ require 'openssl'
3
4
 
4
5
  module MpesaConnect
5
6
  class SecurityCredentials
@@ -30,13 +30,13 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
- spec.add_dependency "httparty"
34
- spec.add_dependency "redis-rack"
35
- spec.add_dependency "redis-namespace"
33
+ spec.add_dependency 'httparty', '~> 0.15.6'
34
+ spec.add_dependency 'redis-rack', '~> 2.0', '>= 2.0.2'
35
+ spec.add_dependency 'redis-namespace', '~> 1.5', '>= 1.5.3'
36
36
  spec.add_development_dependency "bundler", "~> 1.15"
37
37
  spec.add_development_dependency "rake", "~> 10.0"
38
38
  spec.add_development_dependency "minitest", "~> 5.0"
39
- spec.add_development_dependency "pry"
40
- spec.add_development_dependency "pry-nav"
41
- spec.add_development_dependency "webmock"
39
+ spec.add_development_dependency 'pry', '~> 0.10.4'
40
+ spec.add_development_dependency 'pry-nav', '~> 0.2.4'
41
+ spec.add_development_dependency 'webmock', '~> 3.0', '>= 3.0.1'
42
42
  end
metadata CHANGED
@@ -1,57 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mpesa_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - mboya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-16 00:00:00.000000000 Z
11
+ date: 2017-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.15.6
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: '0'
26
+ version: 0.15.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: redis-rack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
31
34
  - - ">="
32
35
  - !ruby/object:Gem::Version
33
- version: '0'
36
+ version: 2.0.2
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '2.0'
38
44
  - - ">="
39
45
  - !ruby/object:Gem::Version
40
- version: '0'
46
+ version: 2.0.2
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: redis-namespace
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.5'
45
54
  - - ">="
46
55
  - !ruby/object:Gem::Version
47
- version: '0'
56
+ version: 1.5.3
48
57
  type: :runtime
49
58
  prerelease: false
50
59
  version_requirements: !ruby/object:Gem::Requirement
51
60
  requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.5'
52
64
  - - ">="
53
65
  - !ruby/object:Gem::Version
54
- version: '0'
66
+ version: 1.5.3
55
67
  - !ruby/object:Gem::Dependency
56
68
  name: bundler
57
69
  requirement: !ruby/object:Gem::Requirement
@@ -98,44 +110,50 @@ dependencies:
98
110
  name: pry
99
111
  requirement: !ruby/object:Gem::Requirement
100
112
  requirements:
101
- - - ">="
113
+ - - "~>"
102
114
  - !ruby/object:Gem::Version
103
- version: '0'
115
+ version: 0.10.4
104
116
  type: :development
105
117
  prerelease: false
106
118
  version_requirements: !ruby/object:Gem::Requirement
107
119
  requirements:
108
- - - ">="
120
+ - - "~>"
109
121
  - !ruby/object:Gem::Version
110
- version: '0'
122
+ version: 0.10.4
111
123
  - !ruby/object:Gem::Dependency
112
124
  name: pry-nav
113
125
  requirement: !ruby/object:Gem::Requirement
114
126
  requirements:
115
- - - ">="
127
+ - - "~>"
116
128
  - !ruby/object:Gem::Version
117
- version: '0'
129
+ version: 0.2.4
118
130
  type: :development
119
131
  prerelease: false
120
132
  version_requirements: !ruby/object:Gem::Requirement
121
133
  requirements:
122
- - - ">="
134
+ - - "~>"
123
135
  - !ruby/object:Gem::Version
124
- version: '0'
136
+ version: 0.2.4
125
137
  - !ruby/object:Gem::Dependency
126
138
  name: webmock
127
139
  requirement: !ruby/object:Gem::Requirement
128
140
  requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '3.0'
129
144
  - - ">="
130
145
  - !ruby/object:Gem::Version
131
- version: '0'
146
+ version: 3.0.1
132
147
  type: :development
133
148
  prerelease: false
134
149
  version_requirements: !ruby/object:Gem::Requirement
135
150
  requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '3.0'
136
154
  - - ">="
137
155
  - !ruby/object:Gem::Version
138
- version: '0'
156
+ version: 3.0.1
139
157
  description: connect to Mpesa API to perform available transactions
140
158
  email:
141
159
  - mboyaberry@gmail.com
@@ -151,13 +169,13 @@ files:
151
169
  - LICENSE.txt
152
170
  - README.md
153
171
  - Rakefile
172
+ - _config.yml
154
173
  - bin/console
155
174
  - bin/setup
156
- - lib/access_token.rb
157
- - lib/cert.cer
158
175
  - lib/mpesa_connect.rb
176
+ - lib/mpesa_connect/access_token.rb
177
+ - lib/mpesa_connect/security_credentials.rb
159
178
  - lib/mpesa_connect/version.rb
160
- - lib/pubkey.pem
161
179
  - lib/security_credentials.rb
162
180
  - mpesa_connect.gemspec
163
181
  homepage: https://mboya.github.io/mpesa_connect/
data/lib/cert.cer DELETED
@@ -1,38 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIGkzCCBXugAwIBAgIKXfBp5gAAAD+hNjANBgkqhkiG9w0BAQsFADBbMRMwEQYK
3
- CZImiZPyLGQBGRYDbmV0MRkwFwYKCZImiZPyLGQBGRYJc2FmYXJpY29tMSkwJwYD
4
- VQQDEyBTYWZhcmljb20gSW50ZXJuYWwgSXNzdWluZyBDQSAwMjAeFw0xNzA0MjUx
5
- NjA3MjRaFw0xODAzMjExMzIwMTNaMIGNMQswCQYDVQQGEwJLRTEQMA4GA1UECBMH
6
- TmFpcm9iaTEQMA4GA1UEBxMHTmFpcm9iaTEaMBgGA1UEChMRU2FmYXJpY29tIExp
7
- bWl0ZWQxEzARBgNVBAsTClRlY2hub2xvZ3kxKTAnBgNVBAMTIGFwaWdlZS5hcGlj
8
- YWxsZXIuc2FmYXJpY29tLmNvLmtlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
9
- CgKCAQEAoknIb5Tm1hxOVdFsOejAs6veAai32Zv442BLuOGkFKUeCUM2s0K8XEsU
10
- t6BP25rQGNlTCTEqfdtRrym6bt5k0fTDscf0yMCoYzaxTh1mejg8rPO6bD8MJB0c
11
- FWRUeLEyWjMeEPsYVSJFv7T58IdAn7/RhkrpBl1dT7SmIZfNVkIlD35+Cxgab+u7
12
- +c7dHh6mWguEEoE3NbV7Xjl60zbD/Buvmu6i9EYz+27jNVPI6pRXHvp+ajIzTSsi
13
- eD8Ztz1eoC9mphErasAGpMbR1sba9bM6hjw4tyTWnJDz7RdQQmnsW1NfFdYdK0qD
14
- RKUX7SG6rQkBqVhndFve4SDFRq6wvQIDAQABo4IDJDCCAyAwHQYDVR0OBBYEFG2w
15
- ycrgEBPFzPUZVjh8KoJ3EpuyMB8GA1UdIwQYMBaAFOsy1E9+YJo6mCBjug1evuh5
16
- TtUkMIIBOwYDVR0fBIIBMjCCAS4wggEqoIIBJqCCASKGgdZsZGFwOi8vL0NOPVNh
17
- ZmFyaWNvbSUyMEludGVybmFsJTIwSXNzdWluZyUyMENBJTIwMDIsQ049U1ZEVDNJ
18
- U1NDQTAxLENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2
19
- aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPXNhZmFyaWNvbSxEQz1uZXQ/Y2VydGlm
20
- aWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1
21
- dGlvblBvaW50hkdodHRwOi8vY3JsLnNhZmFyaWNvbS5jby5rZS9TYWZhcmljb20l
22
- MjBJbnRlcm5hbCUyMElzc3VpbmclMjBDQSUyMDAyLmNybDCCAQkGCCsGAQUFBwEB
23
- BIH8MIH5MIHJBggrBgEFBQcwAoaBvGxkYXA6Ly8vQ049U2FmYXJpY29tJTIwSW50
24
- ZXJuYWwlMjBJc3N1aW5nJTIwQ0ElMjAwMixDTj1BSUEsQ049UHVibGljJTIwS2V5
25
- JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1zYWZh
26
- cmljb20sREM9bmV0P2NBQ2VydGlmaWNhdGU/YmFzZT9vYmplY3RDbGFzcz1jZXJ0
27
- aWZpY2F0aW9uQXV0aG9yaXR5MCsGCCsGAQUFBzABhh9odHRwOi8vY3JsLnNhZmFy
28
- aWNvbS5jby5rZS9vY3NwMAsGA1UdDwQEAwIFoDA9BgkrBgEEAYI3FQcEMDAuBiYr
29
- BgEEAYI3FQiHz4xWhMLEA4XphTaE3tENhqCICGeGwcdsg7m5awIBZAIBDDAdBgNV
30
- HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwJwYJKwYBBAGCNxUKBBowGDAKBggr
31
- BgEFBQcDAjAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAC/hWx7KTwSYr
32
- x2SOyyHNLTRmCnCJmqxA/Q+IzpW1mGtw4Sb/8jdsoWrDiYLxoKGkgkvmQmB2J3zU
33
- ngzJIM2EeU921vbjLqX9sLWStZbNC2Udk5HEecdpe1AN/ltIoE09ntglUNINyCmf
34
- zChs2maF0Rd/y5hGnMM9bX9ub0sqrkzL3ihfmv4vkXNxYR8k246ZZ8tjQEVsKehE
35
- dqAmj8WYkYdWIHQlkKFP9ba0RJv7aBKb8/KP+qZ5hJip0I5Ey6JJ3wlEWRWUYUKh
36
- gYoPHrJ92ToadnFCCpOlLKWc0xVxANofy6fqreOVboPO0qTAYpoXakmgeRNLUiar
37
- 0ah6M/q/KA==
38
- -----END CERTIFICATE-----
data/lib/pubkey.pem DELETED
@@ -1,9 +0,0 @@
1
- -----BEGIN PUBLIC KEY-----
2
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoknIb5Tm1hxOVdFsOejA
3
- s6veAai32Zv442BLuOGkFKUeCUM2s0K8XEsUt6BP25rQGNlTCTEqfdtRrym6bt5k
4
- 0fTDscf0yMCoYzaxTh1mejg8rPO6bD8MJB0cFWRUeLEyWjMeEPsYVSJFv7T58IdA
5
- n7/RhkrpBl1dT7SmIZfNVkIlD35+Cxgab+u7+c7dHh6mWguEEoE3NbV7Xjl60zbD
6
- /Buvmu6i9EYz+27jNVPI6pRXHvp+ajIzTSsieD8Ztz1eoC9mphErasAGpMbR1sba
7
- 9bM6hjw4tyTWnJDz7RdQQmnsW1NfFdYdK0qDRKUX7SG6rQkBqVhndFve4SDFRq6w
8
- vQIDAQAB
9
- -----END PUBLIC KEY-----