pesapal 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8af57eb900f2972e33b0415d47f6dd829bf1e292
4
- data.tar.gz: 73ea9770d4c51b81fcc92bff9dfaaac46f1779c3
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDFmODIyZmUwZjVlZWIwMmM1YTJjNmUxNWRjZGIxNzMxODdlZjg3Ng==
5
+ data.tar.gz: !binary |-
6
+ ZjgxYmVkYjU4ZGJlOGNmMDY4NDUzYmY0OGRhNzcyNTk4YjI4NGNjYg==
5
7
  SHA512:
6
- metadata.gz: 5594d62643eec3357558ea3f133735be428c682e58e9f3040aaa2196e5aa758999b62e124e9956af5f0b42c96b681fbf0fc71b79077db24a49f222dacd5abe2a
7
- data.tar.gz: dfe9baaca9c4488dcaa6e4744975e65937ebc013152033fca9912059e8dbbdca7ccfd038ea7acbf81116a3defbe93dc5ca35391471964b8f4a0c1c50a2923b5f
8
+ metadata.gz: !binary |-
9
+ MzkwZDhkODNlY2M4NDUwM2FlNThiZDBjMTVmNjE0ZWI4YjQyMzJhNzU0OTAw
10
+ OTI4YWIwNjliOGRjYjNmZmI2MGJhYWU2NGE1OWMxM2EwM2EzNDNhNDVhMGQ4
11
+ YzljNjAzNzlhYmMwYWUxMjgyNzA4YzlkODNmZjcxNzM0NWE5NjM=
12
+ data.tar.gz: !binary |-
13
+ NzQ0MzY2MzE5MmY5ZjMxYWUzOTVjZWI4YTEzZDA4NzMyZTZmMzlhODY5NzE2
14
+ YTQxZWU2ZmU2NjYzYjZhZGYzZWFhNDg1YWQ4M2Y0OTRmNmEyMTUwYjA2MDUy
15
+ NzhkMTE5MjQ0NzA3M2IzNDAyYjg1YTU1NzQ0YzgzMjZjM2U2YzA=
@@ -1,6 +1,5 @@
1
1
  AllCops:
2
2
  Include:
3
- - '**/*.gemspec'
4
3
  - '**/Gemfile'
5
4
  - '**/Rakefile'
6
5
  Exclude:
@@ -1,8 +1,10 @@
1
1
  language: ruby
2
+ before_install:
3
+ - gem update --system
4
+ - gem install bundler
2
5
  rvm:
3
- - 2.1.2
4
- - 2.1.1
5
- - 2.1.0
6
- - 2.0.0
7
- - 1.9.3
6
+ - 2.3
7
+ - 2.2
8
+ - 2.1
9
+ - 2.0
8
10
  script: bundle exec rspec spec
@@ -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
- <a href="http://badge.fury.io/rb/pesapal"><img src="https://badge.fury.io/rb/pesapal@2x.png" alt="Gem Version" height="18"></a>
5
- [![Build Status](https://travis-ci.org/itsmrwave/pesapal-gem.png?branch=master)](https://travis-ci.org/itsmrwave/pesapal-gem)
6
- [![Code Climate](https://codeclimate.com/github/itsmrwave/pesapal-gem.png)](https://codeclimate.com/github/itsmrwave/pesapal-gem)
7
- [![Coverage Status](https://coveralls.io/repos/itsmrwave/pesapal-gem/badge.png)](https://coveralls.io/r/itsmrwave/pesapal-gem)
8
- [![Dependency Status](https://gemnasium.com/itsmrwave/pesapal-gem.png)](https://gemnasium.com/itsmrwave/pesapal-gem)
4
+ [![Gem Version](https://badge.fury.io/rb/pesapal.svg)](https://badge.fury.io/rb/pesapal)
5
+ [![Build Status](https://travis-ci.org/itsmrwave/pesapal-gem.svg?branch=master)](https://travis-ci.org/itsmrwave/pesapal-gem)
6
+ [![Code Climate](https://codeclimate.com/github/itsmrwave/pesapal-gem/badges/gpa.svg)](https://codeclimate.com/github/itsmrwave/pesapal-gem)
7
+ [![Coverage Status](https://coveralls.io/repos/github/itsmrwave/pesapal-gem/badge.svg?branch=master)](https://coveralls.io/github/itsmrwave/pesapal-gem?branch=master)
8
+ [![Dependency Status](https://gemnasium.com/badges/github.com/itsmrwave/pesapal-gem.svg)](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 RubyDoc reference
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
  -------
@@ -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
- if @env == 'production'
251
- http.use_ssl = true
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
- if @env == 'production'
306
- http.use_ssl = true
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 = 'http://demo.pesapal.com'
411
+ @api_domain = 'https://demo.pesapal.com'
416
412
  end
417
413
 
418
414
  @api_endpoints = {}
@@ -4,5 +4,5 @@ module Pesapal
4
4
  # This gem's version (learn about [Semantic Versioning][1]).
5
5
  #
6
6
  # [1]: http://semver.org/
7
- VERSION = '1.6.0'
7
+ VERSION = '1.7.0'.freeze
8
8
  end
@@ -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($INPUT_RECORD_SEPARATOR)
18
- spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
19
- spec.test_files = spec.files.grep(/^(test|spec|features)\//)
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 = '>= 1.9.3'
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: 'http://demo.pesapal.com/API/PostPesapalDirectOrderV4',
27
- querypaymentstatus: 'http://demo.pesapal.com/API/QueryPaymentStatus',
28
- querypaymentdetails: 'http://demo.pesapal.com/API/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{http://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=.*}
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{http://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=.*}) }
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{http://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=.*}) }
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{http://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=.*}) }
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{http://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=.*}
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{http://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=.*}) }
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{http://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=.*}) }
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{http://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=.*}) }
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.6.0
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: 2014-10-07 00:00:00.000000000 Z
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: 1.9.3
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.0.14
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