paymentsds-mpesa 0.1.0.pre.alpha.26 → 0.1.0.pre.alpha.31

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: 2363150dd5b8f47a47178baf963d24fe30b8d47b1419cda050370311193e6e96
4
- data.tar.gz: 971cd1286f9953e0dc514032649389e9fe89352b8459b803d299908a0e3cf863
3
+ metadata.gz: 1f911b96060e60656a509701471434cbf8ed2ece7db47b80805fe0b92271020d
4
+ data.tar.gz: 6bce0fba1f4504da771bc69d9ffc0dd4c9a2f9d887037706ca0b173f7ab64156
5
5
  SHA512:
6
- metadata.gz: b7561658c4b213850728c7845d227852423be37de2c4ae114f52d5c89af546758c25e98d9251aa4de0484c61b804cd8e60520c578dfce7f0650a2dcc5fc66dfa
7
- data.tar.gz: d372010a23e718327a1abbfc96ab1d9288caf459e5cc77c45e57c6baed6ed2d1d59b169aad3992f99e3773f938284a47b4201331dd18f57dfa7007934fb64425
6
+ metadata.gz: 2f44c1fa5e5e0170a49406157eb7ae7c6440499cef384dc143ea86da156044fda8c89b93a209fd453512a2ab78af00d3ac9682f2f4d616e88b252e5b343663cf
7
+ data.tar.gz: 57eff61c070b0ee0859317f00fdb218d32266d7441cb7d73279d0a49a8c6a8637e0f64b4d81175189d396ed0bac4722b4d951e4f1202f283e8a2052ae53adfd8
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  require 'json'
3
3
  require 'faraday'
4
+ require 'faraday_middleware'
5
+
6
+ require_relative "errors/errors"
4
7
 
5
8
  module Paymentsds
6
9
  module MPesa
@@ -58,11 +61,9 @@ module Paymentsds
58
61
  when /^[0-9]{5,6}$/
59
62
  :B2B_PAYMENT
60
63
  end
61
-
62
- # Should raise an exception
63
64
  end
64
65
 
65
- # Should raise an exception
66
+ raise InvalidDestination
66
67
  end
67
68
 
68
69
  def detect_missing_properties(opcode, intent)
@@ -147,10 +148,11 @@ module Paymentsds
147
148
  body: build_request_body(opcode, intent)
148
149
  }
149
150
 
150
- http_client = Faraday.new(
151
- url: request_data[:base_url],
152
- headers: request_data[:headers],
153
- )
151
+ http_client = Faraday.new(url: request_data[:base_url]) do |client|
152
+ client.adapter Faraday.default_adapter
153
+ client.headers = request_data[:headers]
154
+ client.response :json
155
+ end
154
156
 
155
157
  puts request_data[:base_url]
156
158
 
@@ -178,12 +180,127 @@ module Paymentsds
178
180
  end
179
181
 
180
182
  def build_response(result)
181
- puts result.inspect
182
-
183
- if result.status >= 200 && result.status < 300
184
- response = Paymentsds::MPesa::Result.new(result.success?, nil, result.data)
185
- end
186
-
183
+
184
+ case result.status
185
+ when 200
186
+ case result.body[:output_ResponseCode]
187
+ when Paymentsds::MPesa::INS0
188
+ response = Paymentsds::MPesa::Result.new(result.success?, nil, result.body)
189
+ else
190
+ raise UnknownError
191
+ end
192
+
193
+ when 201
194
+ case result.body[:output_ResponseCode]
195
+ when Paymentsds::MPesa::INS0
196
+ response = Paymentsds::MPesa::Result.new(result.success?, nil, result.body)
197
+ else
198
+ raise UnknownError
199
+ end
200
+
201
+ when 400
202
+ case result.body[:output_ResponseCode]
203
+ when Paymentsds::MPesa::INS13
204
+ raise InvalidShortcodeError
205
+ when Paymentsds::MPesa::INS14
206
+ raise InvalidReferenceError
207
+ when Paymentsds::MPesa::INS15
208
+ raise InvalidAmountError
209
+ when Paymentsds::MPesa::INS17
210
+ raise InvalidTransactionReferenceError
211
+ when Paymentsds::MPesa::INS18
212
+ raise InvalidTransactionIdError
213
+ when Paymentsds::MPesa::INS19
214
+ raise InvalidThirdPartyReferenceError
215
+ when Paymentsds::MPesa::INS20
216
+ raise InvalidMissingPropertiesError
217
+ when Paymentsds::MPesa::INS21
218
+ raise ValidationError
219
+ when Paymentsds::MPesa::INS22
220
+ raise InvalidOperationPartError
221
+ when Paymentsds::MPesa::INS23
222
+ raise UnknownStatusError
223
+ when Paymentsds::MPesa::INS24
224
+ raise InvalidInitiatorIdentifierError
225
+ when Paymentsds::MPesa::INS25
226
+ raise InvalidSecurityCredentialError
227
+ when Paymentsds::MPesa::INS993
228
+ raise DirectDebtMissingError
229
+ when Paymentsds::MPesa::INS994
230
+ raise DuplicatedDirectDebtError
231
+ when Paymentsds::MPesa::INS995
232
+ raise ProfileProblemsError
233
+ when Paymentsds::MPesa::INS996
234
+ raise InactiveAccountError
235
+ when Paymentsds::MPesa::INS997
236
+ raise InvalidLanguageCodeError
237
+ when Paymentsds::MPesa::INS998
238
+ raise InvalidMarketError
239
+ when Paymentsds::MPesa::INS2001
240
+ raise InitiatorAuthenticationError
241
+ when Paymentsds::MPesa::INS2002
242
+ raise InvalidReceiverError
243
+ when Paymentsds::MPesa::INS2051
244
+ raise InvalidMSISDNError
245
+ when Paymentsds::MPesa::INS2057
246
+ raise InvalidLanguageCodeError
247
+ else
248
+ raise UnknownError
249
+ end
250
+
251
+ when 401
252
+ case result.body[:output_ResponseCode]
253
+ when Paymentsds::MPesa::INS5
254
+ raise TransactionCancelledError
255
+ when Paymentsds::MPesa::INS6
256
+ raise TransactionFailedError
257
+ else
258
+ raise UnknownError
259
+ end
260
+
261
+ when 408
262
+ case result.body[:output_ResponseCode]
263
+ when Paymentsds::MPesa::INS9
264
+ raise RequestTimeoutError
265
+ else
266
+ raise UnknownError
267
+ end
268
+
269
+ when 409
270
+ case result.body[:output_ResponseCode]
271
+ when Paymentsds::MPesa::INS10
272
+ raise DuplicateTransactionError
273
+ else
274
+ raise UnknownError
275
+ end
276
+
277
+ when 422
278
+ case result.body[:output_ResponseCode]
279
+ when Paymentsds::MPesa::INS2006
280
+ raise InsufficientBalanceError
281
+ else
282
+ raise UnknownError
283
+ end
284
+
285
+ when 500
286
+ case result.body[:output_ResponseCode]
287
+ when Paymentsds::MPesa::INS1
288
+ raise InternalError
289
+ else
290
+ raise UnknownError
291
+ end
292
+
293
+ when 503
294
+ case result.body[:output_ResponseCode]
295
+ when Paymentsds::MPesa::INS16
296
+ raise UnavailableServerError
297
+ else
298
+ raise UnknownError
299
+ end
300
+
301
+ else
302
+ raise UnknownError
303
+ end
187
304
  end
188
305
 
189
306
  def generate_access_token
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Paymentsds
4
4
  module MPesa
5
- VERSION = '0.1.0.pre.alpha.26'
5
+ VERSION = '0.1.0.pre.alpha.31'
6
6
  end
7
- end
7
+ end
@@ -28,4 +28,5 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'rspec', '~> 3.9.0', '>= 3.9.0'
29
29
  spec.add_development_dependency 'overcommit', '~> 0.55.0', '>= 0.55.0'
30
30
  spec.add_development_dependency 'rubocop', '~> 0.88.0', '>= 0.88.0'
31
+ spec.add_development_dependency 'faraday_middleware'
31
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paymentsds-mpesa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.alpha.26
4
+ version: 0.1.0.pre.alpha.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edson Michaque
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-27 00:00:00.000000000 Z
11
+ date: 2020-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -90,6 +90,20 @@ dependencies:
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
92
  version: 0.88.0
93
+ - !ruby/object:Gem::Dependency
94
+ name: faraday_middleware
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
93
107
  description: M-Pesa SDK for Ruby is an unofficial library aiming to help businesses
94
108
  integrating every M-Pesa operations to their Ruby applications.
95
109
  email: