mpesarb 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitpod.yml +8 -0
- data/README.md +2 -1
- data/lib/mpesa/client.rb +3 -2
- data/lib/mpesa/resource.rb +9 -0
- data/lib/mpesa/resources/payout.rb +1 -1
- data/lib/mpesa/resources/stk.rb +4 -4
- data/lib/mpesa/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21c94fd454abe3e4127f6c716ee39c4f574924018af8d6daedafc0c1f1bee5d1
|
4
|
+
data.tar.gz: e68131c8d3f8d1531abd3c7419c9dfacc70331a555ecd48b881cf9f290239acf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf9183f955f48501ab1fbb634145bf2f0116b98cad63613b56bdf832ceedef03eabfa8e5e0cccb55161226af04149208c16afe75eaa986c4971c24e07f053d43
|
7
|
+
data.tar.gz: 599eaf780d0efc0e141218ef6848e21454e12a379f66ffe64d1b1bffe8ab6aaccb87f177f418c08848321f097efc3513ab9ee3d71e7d1eefb41dfbebf3a081ff
|
data/.gitpod.yml
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# This configuration file was automatically generated by Gitpod.
|
2
|
+
# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file)
|
3
|
+
# and commit this file to your remote git repository to share the goodness with others.
|
4
|
+
|
5
|
+
tasks:
|
6
|
+
- init: bin/setup
|
7
|
+
|
8
|
+
|
data/README.md
CHANGED
@@ -42,6 +42,7 @@ Optional
|
|
42
42
|
- `adapter` - Faraday HTTP adapter. Default `:net_http`
|
43
43
|
- `shortcode` - Mpesa shortcode
|
44
44
|
- `pass_key` - LPNMO pass Key( used by STK API)
|
45
|
+
- `raise_errors` - `Boolean` raise errors if response status code is not 200. Default: `true`
|
45
46
|
|
46
47
|
|
47
48
|
### Register Urls
|
@@ -118,7 +119,7 @@ response.ConversationID
|
|
118
119
|
response.ResponseCode
|
119
120
|
```
|
120
121
|
|
121
|
-
### Reversal
|
122
|
+
### Reversal
|
122
123
|
Initiate a reversal
|
123
124
|
|
124
125
|
```
|
data/lib/mpesa/client.rb
CHANGED
@@ -5,15 +5,16 @@ require 'faraday_middleware'
|
|
5
5
|
|
6
6
|
module Mpesa
|
7
7
|
class Client
|
8
|
-
attr_reader :key, :secret, :env, :adapter, :shortcode, :pass_key
|
8
|
+
attr_reader :key, :secret, :env, :adapter, :shortcode, :pass_key, :raise_errors
|
9
9
|
|
10
|
-
def initialize(key:, secret:, shortcode: nil, pass_key: nil, env: 'production', adapter: Faraday.default_adapter)
|
10
|
+
def initialize(key:, secret:, shortcode: nil, pass_key: nil, env: 'production', adapter: Faraday.default_adapter, raise_errors: true)
|
11
11
|
@key = key
|
12
12
|
@secret = secret
|
13
13
|
@env = env
|
14
14
|
@adapter = adapter
|
15
15
|
@pass_key = pass_key
|
16
16
|
@shortcode = shortcode
|
17
|
+
@raise_errors = raise_errors
|
17
18
|
end
|
18
19
|
|
19
20
|
def auth
|
data/lib/mpesa/resource.rb
CHANGED
@@ -18,6 +18,8 @@ module Mpesa
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def handle_response(response)
|
21
|
+
return response unless client.raise_errors
|
22
|
+
|
21
23
|
case response.status
|
22
24
|
when 400
|
23
25
|
raise Error, "Your request was malformed. #{response.body['errorMessage']}"
|
@@ -32,5 +34,12 @@ module Mpesa
|
|
32
34
|
end
|
33
35
|
response
|
34
36
|
end
|
37
|
+
|
38
|
+
def format_phone(phone)
|
39
|
+
phone = phone.to_s
|
40
|
+
return phone if phone.match?(/\A254/)
|
41
|
+
|
42
|
+
phone.sub(/\A[+0]?(254)?(\d+)/, '254\2')
|
43
|
+
end
|
35
44
|
end
|
36
45
|
end
|
@@ -15,7 +15,7 @@ module Mpesa
|
|
15
15
|
'CommandID': args[:command_id],
|
16
16
|
'Amount': args[:amount],
|
17
17
|
'PartyA': client.shortcode || args[:shortcode],
|
18
|
-
'PartyB': args[:phone],
|
18
|
+
'PartyB': format_phone(args[:phone]),
|
19
19
|
'Remarks': args[:remarks],
|
20
20
|
'QueueTimeOutURL': args[:timeout_url],
|
21
21
|
'ResultURL': args[:result_url],
|
data/lib/mpesa/resources/stk.rb
CHANGED
@@ -14,12 +14,12 @@ module Mpesa
|
|
14
14
|
{
|
15
15
|
'BusinessShortCode': shortcode,
|
16
16
|
'Password': password,
|
17
|
-
'Timestamp': timestamp
|
17
|
+
'Timestamp': timestamp,
|
18
18
|
'TransactionType': 'CustomerPayBillOnline',
|
19
19
|
'Amount': args[:amount],
|
20
|
-
'PartyA': args[:phone],
|
20
|
+
'PartyA': format_phone(args[:phone]),
|
21
21
|
'PartyB': shortcode,
|
22
|
-
'PhoneNumber': args[:phone],
|
22
|
+
'PhoneNumber': format_phone(args[:phone]),
|
23
23
|
'CallBackURL': args[:callback_url],
|
24
24
|
'AccountReference': args[:reference],
|
25
25
|
'TransactionDesc': args[:trans_desc]
|
@@ -31,7 +31,7 @@ module Mpesa
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def timestamp
|
34
|
-
Time.now.strftime('%Y%m%d%H%M%S')
|
34
|
+
Time.now.strftime('%Y%m%d%H%M%S')
|
35
35
|
end
|
36
36
|
|
37
37
|
def shortcode
|
data/lib/mpesa/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mpesarb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Moses Gathuku
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -201,6 +201,7 @@ extra_rdoc_files: []
|
|
201
201
|
files:
|
202
202
|
- ".github/workflows/mpesa.yml"
|
203
203
|
- ".gitignore"
|
204
|
+
- ".gitpod.yml"
|
204
205
|
- ".travis.yml"
|
205
206
|
- CHANGELOG.md
|
206
207
|
- CODE_OF_CONDUCT.md
|
@@ -253,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
253
254
|
- !ruby/object:Gem::Version
|
254
255
|
version: '0'
|
255
256
|
requirements: []
|
256
|
-
rubygems_version: 3.
|
257
|
+
rubygems_version: 3.3.7
|
257
258
|
signing_key:
|
258
259
|
specification_version: 4
|
259
260
|
summary: a simple gem to integrate ruby with mpesa Apis
|