pesapal 1.6.0 → 1.7.0
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 +13 -5
- data/.rubocop.yml +0 -1
- data/.travis.yml +7 -5
- data/CHANGELOG.md +8 -0
- data/README.md +6 -13
- data/lib/pesapal/merchant.rb +5 -9
- data/lib/pesapal/version.rb +1 -1
- data/pesapal.gemspec +4 -5
- data/spec/pesapal_merchant_spec.rb +11 -11
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NDFmODIyZmUwZjVlZWIwMmM1YTJjNmUxNWRjZGIxNzMxODdlZjg3Ng==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZjgxYmVkYjU4ZGJlOGNmMDY4NDUzYmY0OGRhNzcyNTk4YjI4NGNjYg==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MzkwZDhkODNlY2M4NDUwM2FlNThiZDBjMTVmNjE0ZWI4YjQyMzJhNzU0OTAw
|
10
|
+
OTI4YWIwNjliOGRjYjNmZmI2MGJhYWU2NGE1OWMxM2EwM2EzNDNhNDVhMGQ4
|
11
|
+
YzljNjAzNzlhYmMwYWUxMjgyNzA4YzlkODNmZjcxNzM0NWE5NjM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NzQ0MzY2MzE5MmY5ZjMxYWUzOTVjZWI4YTEzZDA4NzMyZTZmMzlhODY5NzE2
|
14
|
+
YTQxZWU2ZmU2NjYzYjZhZGYzZWFhNDg1YWQ4M2Y0OTRmNmEyMTUwYjA2MDUy
|
15
|
+
NzhkMTE5MjQ0NzA3M2IzNDAyYjg1YTU1NzQ0YzgzMjZjM2U2YzA=
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
v1.7.0
|
5
|
+
------
|
6
|
+
|
7
|
+
* Change QueryPaymentDetails endpoint request to use https in development.
|
8
|
+
* Drop Ruby 1.9.3 support.
|
9
|
+
* Fix 2.1.x specs.
|
10
|
+
* Confirm support for new Ruby versions i.e. 2.2 & 2.3.
|
11
|
+
|
4
12
|
v1.6.0
|
5
13
|
------
|
6
14
|
|
data/README.md
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
[Pesapal RubyGem][2]
|
2
2
|
===============
|
3
3
|
|
4
|
-
|
5
|
-
[](https://badge.fury.io/rb/pesapal)
|
5
|
+
[](https://travis-ci.org/itsmrwave/pesapal-gem)
|
6
|
+
[](https://codeclimate.com/github/itsmrwave/pesapal-gem)
|
7
|
+
[](https://coveralls.io/github/itsmrwave/pesapal-gem?branch=master)
|
8
|
+
[](https://gemnasium.com/github.com/itsmrwave/pesapal-gem)
|
9
9
|
|
10
10
|
|
11
11
|
Basically it's a gem that makes it easy to integrate your app with
|
@@ -13,7 +13,7 @@ Basically it's a gem that makes it easy to integrate your app with
|
|
13
13
|
any direct interaction with the API endpoints so that you can focus on what
|
14
14
|
matters. _Building awesome_.
|
15
15
|
|
16
|
-
The gem should be [up on RubyGems.org][4], it's [accompanying
|
16
|
+
The gem should be [up on RubyGems.org][4], it's [accompanying API reference
|
17
17
|
here][9], the [CHANGELOG here][5] and [all the releases here][6].
|
18
18
|
|
19
19
|
[Check out the homepage for details][2] i.e. on usage, support, issues,
|
@@ -43,13 +43,6 @@ For Rails, you need to run the generator to create sample pesapal.yml file:
|
|
43
43
|
rails generate pesapal:install
|
44
44
|
|
45
45
|
|
46
|
-
Contributors
|
47
|
-
------------
|
48
|
-
|
49
|
-
Special thanks to:
|
50
|
-
|
51
|
-
* [Isaac Mogetutu][10] ([@mogetutu][11])
|
52
|
-
|
53
46
|
|
54
47
|
License
|
55
48
|
-------
|
data/lib/pesapal/merchant.rb
CHANGED
@@ -247,10 +247,8 @@ module Pesapal
|
|
247
247
|
# get status response
|
248
248
|
uri = URI.parse "#{@api_endpoints[:querypaymentdetails]}?#{query_string}"
|
249
249
|
http = Net::HTTP.new(uri.host, uri.port)
|
250
|
-
|
251
|
-
|
252
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
253
|
-
end
|
250
|
+
http.use_ssl = true
|
251
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
254
252
|
response = http.request(Net::HTTP::Get.new(uri.request_uri))
|
255
253
|
response = CGI.parse response.body
|
256
254
|
response = response['pesapal_response_data'][0].split(',')
|
@@ -302,10 +300,8 @@ module Pesapal
|
|
302
300
|
# get status response
|
303
301
|
uri = URI.parse "#{@api_endpoints[:querypaymentstatus]}?#{query_string}"
|
304
302
|
http = Net::HTTP.new(uri.host, uri.port)
|
305
|
-
|
306
|
-
|
307
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
308
|
-
end
|
303
|
+
http.use_ssl = true
|
304
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
309
305
|
response = http.request(Net::HTTP::Get.new(uri.request_uri))
|
310
306
|
response = CGI.parse response.body
|
311
307
|
response['pesapal_response_data'][0]
|
@@ -412,7 +408,7 @@ module Pesapal
|
|
412
408
|
if @env == 'production'
|
413
409
|
@api_domain = 'https://www.pesapal.com'
|
414
410
|
else
|
415
|
-
@api_domain = '
|
411
|
+
@api_domain = 'https://demo.pesapal.com'
|
416
412
|
end
|
417
413
|
|
418
414
|
@api_endpoints = {}
|
data/lib/pesapal/version.rb
CHANGED
data/pesapal.gemspec
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
lib = File.expand_path('../lib', __FILE__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require 'english'
|
4
3
|
require 'pesapal/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
@@ -14,12 +13,12 @@ Gem::Specification.new do |spec|
|
|
14
13
|
spec.homepage = 'http://itsmrwave.github.io/pesapal-gem'
|
15
14
|
spec.license = 'MIT'
|
16
15
|
|
17
|
-
spec.files = `git ls-files`.split(
|
18
|
-
spec.executables = spec.files.grep(
|
19
|
-
spec.test_files = spec.files.grep(
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
19
|
spec.require_paths = ['lib']
|
21
20
|
|
22
|
-
spec.required_ruby_version = '>=
|
21
|
+
spec.required_ruby_version = '>= 2.0'
|
23
22
|
|
24
23
|
spec.add_development_dependency 'bundler'
|
25
24
|
spec.add_development_dependency 'coveralls'
|
@@ -23,9 +23,9 @@ describe Pesapal::Merchant do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
let(:demo_endpoints) do
|
26
|
-
{ postpesapaldirectorderv4: '
|
27
|
-
querypaymentstatus: '
|
28
|
-
querypaymentdetails: '
|
26
|
+
{ postpesapaldirectorderv4: 'https://demo.pesapal.com/API/PostPesapalDirectOrderV4',
|
27
|
+
querypaymentstatus: 'https://demo.pesapal.com/API/QueryPaymentStatus',
|
28
|
+
querypaymentdetails: 'https://demo.pesapal.com/API/QueryPaymentDetails'
|
29
29
|
}
|
30
30
|
end
|
31
31
|
|
@@ -75,13 +75,13 @@ describe Pesapal::Merchant do
|
|
75
75
|
|
76
76
|
it 'generates iframe url string' do
|
77
77
|
pesapal.order_details = order_details
|
78
|
-
expect(pesapal.generate_order_url).to match %r{
|
78
|
+
expect(pesapal.generate_order_url).to match %r{https://demo.pesapal.com/API/PostPesapalDirectOrderV4\?oauth_callback=.*oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_request_data=.*}
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
82
|
describe '#query_payment_status' do
|
83
83
|
|
84
|
-
let(:request) { stub_request(:get, %r{
|
84
|
+
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
85
85
|
|
86
86
|
it 'gets pending payment status' do
|
87
87
|
request.to_return(status: 200, body: 'pesapal_response_data=PENDING')
|
@@ -106,7 +106,7 @@ describe Pesapal::Merchant do
|
|
106
106
|
|
107
107
|
describe '#query_payment_details' do
|
108
108
|
|
109
|
-
let(:request) { stub_request(:get, %r{
|
109
|
+
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
110
110
|
|
111
111
|
it 'gets pending payment details' do
|
112
112
|
request.to_return(status: 200, body: 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
|
@@ -120,7 +120,7 @@ describe Pesapal::Merchant do
|
|
120
120
|
|
121
121
|
describe '#ipn_listener' do
|
122
122
|
|
123
|
-
let(:request) { stub_request(:get, %r{
|
123
|
+
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
124
124
|
|
125
125
|
it 'gets ipn response for pending status' do
|
126
126
|
request.to_return(status: 200, body: 'pesapal_response_data=PENDING')
|
@@ -183,13 +183,13 @@ describe Pesapal::Merchant do
|
|
183
183
|
|
184
184
|
it 'generates iframe url string' do
|
185
185
|
pesapal.order_details = order_details
|
186
|
-
expect(pesapal.generate_order_url).to match %r{
|
186
|
+
expect(pesapal.generate_order_url).to match %r{https://demo.pesapal.com/API/PostPesapalDirectOrderV4\?oauth_callback=.*oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_request_data=.*}
|
187
187
|
end
|
188
188
|
end
|
189
189
|
|
190
190
|
describe '#query_payment_status' do
|
191
191
|
|
192
|
-
let(:request) { stub_request(:get, %r{
|
192
|
+
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
193
193
|
|
194
194
|
it 'gets pending payment status' do
|
195
195
|
request.to_return(status: 200, body: 'pesapal_response_data=PENDING')
|
@@ -214,7 +214,7 @@ describe Pesapal::Merchant do
|
|
214
214
|
|
215
215
|
describe '#query_payment_details' do
|
216
216
|
|
217
|
-
let(:request) { stub_request(:get, %r{
|
217
|
+
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
218
218
|
|
219
219
|
it 'gets pending payment details' do
|
220
220
|
request.to_return(status: 200, body: 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
|
@@ -228,7 +228,7 @@ describe Pesapal::Merchant do
|
|
228
228
|
|
229
229
|
describe '#ipn_listener' do
|
230
230
|
|
231
|
-
let(:request) { stub_request(:get, %r{
|
231
|
+
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
232
232
|
|
233
233
|
it 'gets ipn response for pending status' do
|
234
234
|
request.to_return(status: 200, body: 'pesapal_response_data=PENDING')
|
metadata
CHANGED
@@ -1,125 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pesapal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Job King'ori Maina
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - '>='
|
17
|
+
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - '>='
|
24
|
+
- - ! '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coveralls
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - '>='
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - '>='
|
38
|
+
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: faker
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - '>='
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - '>='
|
52
|
+
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - '>='
|
59
|
+
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - '>='
|
66
|
+
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - '>='
|
73
|
+
- - ! '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - '>='
|
80
|
+
- - ! '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rubocop
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - '>='
|
87
|
+
- - ! '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - '>='
|
94
|
+
- - ! '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: webmock
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - '>='
|
101
|
+
- - ! '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - '>='
|
108
|
+
- - ! '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: htmlentities
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - '>='
|
115
|
+
- - ! '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - '>='
|
122
|
+
- - ! '>='
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
description: Make authenticated Pesapal API calls without the fuss!
|
@@ -166,17 +166,17 @@ require_paths:
|
|
166
166
|
- lib
|
167
167
|
required_ruby_version: !ruby/object:Gem::Requirement
|
168
168
|
requirements:
|
169
|
-
- - '>='
|
169
|
+
- - ! '>='
|
170
170
|
- !ruby/object:Gem::Version
|
171
|
-
version:
|
171
|
+
version: '2.0'
|
172
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
173
|
requirements:
|
174
|
-
- - '>='
|
174
|
+
- - ! '>='
|
175
175
|
- !ruby/object:Gem::Version
|
176
176
|
version: '0'
|
177
177
|
requirements: []
|
178
178
|
rubyforge_project:
|
179
|
-
rubygems_version: 2.
|
179
|
+
rubygems_version: 2.6.3
|
180
180
|
signing_key:
|
181
181
|
specification_version: 4
|
182
182
|
summary: Make authenticated Pesapal API calls without the fuss! Handles all the oAuth
|