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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f58f3c8c8bb861948c8c2418733a9dea0ab7d51de6be5a8366503c4d778c9949
4
- data.tar.gz: 79cdd313fc5da2e6aa4d01cbc399a4756726949d353285991ed6ec7a6a75d33b
3
+ metadata.gz: 21c94fd454abe3e4127f6c716ee39c4f574924018af8d6daedafc0c1f1bee5d1
4
+ data.tar.gz: e68131c8d3f8d1531abd3c7419c9dfacc70331a555ecd48b881cf9f290239acf
5
5
  SHA512:
6
- metadata.gz: 1c8ca8bbf672b89f9fc73516000e487397f9e5aec26c35e0d12131a5e1e9a28519adc3f4bd4dad5d29304794f2052c765a68009d7ce1e47e2e91a557735629e8
7
- data.tar.gz: bff2fd36423ad9d2601a4b5f733c1644dc00cc82ba5a33c5b49e87c3f5916533cf75496d80a72476d4cc4fb7c4bff5468175affd9f5891053f963be96402c77c
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
@@ -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],
@@ -14,12 +14,12 @@ module Mpesa
14
14
  {
15
15
  'BusinessShortCode': shortcode,
16
16
  'Password': password,
17
- 'Timestamp': timestamp.to_s,
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').to_i
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mpesa
4
- VERSION = '0.3.2'
4
+ VERSION = '0.3.3'
5
5
  end
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.2
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-01-06 00:00:00.000000000 Z
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.2.15
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