mpesarb 0.3.2 → 0.3.3

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
  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