buckaruby 1.1.1 → 1.2.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 +4 -4
- data/.gitignore +0 -1
- data/.rubocop.yml +24 -0
- data/.travis.yml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile +5 -1
- data/Gemfile.lock +69 -0
- data/README.md +33 -0
- data/buckaruby.gemspec +2 -2
- data/lib/buckaruby/request.rb +12 -2
- data/lib/buckaruby/response.rb +30 -0
- data/lib/buckaruby/version.rb +1 -1
- data/spec/buckaruby/configuration_spec.rb +1 -1
- data/spec/buckaruby/gateway_spec.rb +110 -79
- data/spec/buckaruby/iban_spec.rb +13 -13
- data/spec/buckaruby/signature_spec.rb +14 -14
- data/spec/buckaruby/support/case_insensitive_hash_spec.rb +1 -1
- data/spec/fixtures/responses/setup_transaction_success.txt +1 -1
- data/spec/spec_helper.rb +2 -0
- metadata +6 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d4513790fda002b5a98011b97768f0e4daad118822dc2d8acfbb0eabe259f86b
|
|
4
|
+
data.tar.gz: 86fcda3eaf10ff9129d074c236e0e1b4037a3c905ab48cc72c8769e1bae22fd2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b50d76de5cebb6bae5c698b7f052619657a2afb9745e1c7dcf235d9be21e83ca4f05dc23be13dede2881c82fda4b47a1d117dfe90629a7b3d942b54dbab9a2ab
|
|
7
|
+
data.tar.gz: d6a9032e3b38d91ff1d4353aec269c558dbb0a034282ece2fbd512f69e000ccb65e2c738c0f2992bf040b0315bb8024bb932c7000c212a8c62846aff178dd75c
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
# Buckaruby RuboCop configuration
|
|
2
2
|
|
|
3
|
+
require:
|
|
4
|
+
- rubocop-performance
|
|
5
|
+
- rubocop-rspec
|
|
6
|
+
|
|
3
7
|
AllCops:
|
|
4
8
|
TargetRubyVersion: 2.3
|
|
5
9
|
DisplayCopNames: true
|
|
6
10
|
DisplayStyleGuide: true
|
|
7
11
|
|
|
12
|
+
|
|
8
13
|
# We target 2.3, but still want to support 2.0.
|
|
9
14
|
Gemspec/RequiredRubyVersion:
|
|
10
15
|
Enabled: false
|
|
11
16
|
|
|
17
|
+
|
|
12
18
|
Metrics/AbcSize:
|
|
13
19
|
Max: 30
|
|
14
20
|
|
|
@@ -34,12 +40,30 @@ Metrics/ModuleLength:
|
|
|
34
40
|
Metrics/PerceivedComplexity:
|
|
35
41
|
Max: 9
|
|
36
42
|
|
|
43
|
+
|
|
37
44
|
Naming/AccessorMethodName:
|
|
38
45
|
Enabled: false
|
|
39
46
|
|
|
40
47
|
Naming/MemoizedInstanceVariableName:
|
|
41
48
|
Enabled: false
|
|
42
49
|
|
|
50
|
+
|
|
51
|
+
RSpec/DescribedClass:
|
|
52
|
+
EnforcedStyle: explicit
|
|
53
|
+
|
|
54
|
+
RSpec/ExampleLength:
|
|
55
|
+
Max: 15
|
|
56
|
+
|
|
57
|
+
RSpec/MultipleExpectations:
|
|
58
|
+
Max: 12
|
|
59
|
+
|
|
60
|
+
RSpec/NamedSubject:
|
|
61
|
+
Enabled: false
|
|
62
|
+
|
|
63
|
+
RSpec/NestedGroups:
|
|
64
|
+
Max: 4
|
|
65
|
+
|
|
66
|
+
|
|
43
67
|
Style/BlockDelimiters:
|
|
44
68
|
Exclude:
|
|
45
69
|
- 'spec/**/*.rb'
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
# Buckaruby changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.0 (2019-08-11)
|
|
4
|
+
|
|
5
|
+
- Added support for sending custom & additional variables with the request.
|
|
6
|
+
|
|
3
7
|
## 1.1.1 (2018-11-30)
|
|
8
|
+
|
|
4
9
|
- Added Handelsbanken to the list of iDEAL issuers.
|
|
5
10
|
|
|
6
11
|
## 1.1.0 (2018-06-01)
|
|
12
|
+
|
|
7
13
|
- Added payment method iDEAL processing.
|
|
8
14
|
- Added Moneyou to the list of iDEAL issuers.
|
|
9
15
|
- Implemented refund transaction.
|
data/Gemfile
CHANGED
|
@@ -5,4 +5,8 @@ source 'https://rubygems.org'
|
|
|
5
5
|
# Specify your gem's dependencies in buckaruby.gemspec
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
group :test do
|
|
9
|
+
gem 'rubocop', '~> 0.74.0'
|
|
10
|
+
gem 'rubocop-performance', '~> 1.4.0'
|
|
11
|
+
gem 'rubocop-rspec', '~> 1.35.0'
|
|
12
|
+
end
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
buckaruby (1.2.0)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
addressable (2.6.0)
|
|
10
|
+
public_suffix (>= 2.0.2, < 4.0)
|
|
11
|
+
ast (2.4.0)
|
|
12
|
+
crack (0.4.3)
|
|
13
|
+
safe_yaml (~> 1.0.0)
|
|
14
|
+
diff-lcs (1.3)
|
|
15
|
+
hashdiff (1.0.0)
|
|
16
|
+
jaro_winkler (1.5.3)
|
|
17
|
+
parallel (1.17.0)
|
|
18
|
+
parser (2.6.3.0)
|
|
19
|
+
ast (~> 2.4.0)
|
|
20
|
+
public_suffix (3.1.1)
|
|
21
|
+
rainbow (3.0.0)
|
|
22
|
+
rake (10.5.0)
|
|
23
|
+
rspec (3.8.0)
|
|
24
|
+
rspec-core (~> 3.8.0)
|
|
25
|
+
rspec-expectations (~> 3.8.0)
|
|
26
|
+
rspec-mocks (~> 3.8.0)
|
|
27
|
+
rspec-core (3.8.2)
|
|
28
|
+
rspec-support (~> 3.8.0)
|
|
29
|
+
rspec-expectations (3.8.4)
|
|
30
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
31
|
+
rspec-support (~> 3.8.0)
|
|
32
|
+
rspec-mocks (3.8.1)
|
|
33
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
34
|
+
rspec-support (~> 3.8.0)
|
|
35
|
+
rspec-support (3.8.2)
|
|
36
|
+
rubocop (0.74.0)
|
|
37
|
+
jaro_winkler (~> 1.5.1)
|
|
38
|
+
parallel (~> 1.10)
|
|
39
|
+
parser (>= 2.6)
|
|
40
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
41
|
+
ruby-progressbar (~> 1.7)
|
|
42
|
+
unicode-display_width (>= 1.4.0, < 1.7)
|
|
43
|
+
rubocop-performance (1.4.1)
|
|
44
|
+
rubocop (>= 0.71.0)
|
|
45
|
+
rubocop-rspec (1.35.0)
|
|
46
|
+
rubocop (>= 0.60.0)
|
|
47
|
+
ruby-progressbar (1.10.1)
|
|
48
|
+
safe_yaml (1.0.5)
|
|
49
|
+
unicode-display_width (1.6.0)
|
|
50
|
+
webmock (2.3.2)
|
|
51
|
+
addressable (>= 2.3.6)
|
|
52
|
+
crack (>= 0.3.2)
|
|
53
|
+
hashdiff
|
|
54
|
+
|
|
55
|
+
PLATFORMS
|
|
56
|
+
ruby
|
|
57
|
+
|
|
58
|
+
DEPENDENCIES
|
|
59
|
+
buckaruby!
|
|
60
|
+
bundler (~> 1.7)
|
|
61
|
+
rake (~> 10.0)
|
|
62
|
+
rspec (~> 3.0)
|
|
63
|
+
rubocop (~> 0.74.0)
|
|
64
|
+
rubocop-performance (~> 1.4.0)
|
|
65
|
+
rubocop-rspec (~> 1.35.0)
|
|
66
|
+
webmock (~> 2.3)
|
|
67
|
+
|
|
68
|
+
BUNDLED WITH
|
|
69
|
+
1.17.3
|
data/README.md
CHANGED
|
@@ -170,6 +170,39 @@ response = gateway.status(transaction_id: 12345)
|
|
|
170
170
|
|
|
171
171
|
See `Buckaruby::StatusResponse` for more details.
|
|
172
172
|
|
|
173
|
+
### Merchant variables
|
|
174
|
+
|
|
175
|
+
You can send custom variables and additional variables with each request.
|
|
176
|
+
|
|
177
|
+
Use the parameter `custom` to build a hash with custom variables and `additional` for building a hash with additional variabeles.
|
|
178
|
+
For example:
|
|
179
|
+
|
|
180
|
+
```ruby
|
|
181
|
+
options = {
|
|
182
|
+
amount: 10,
|
|
183
|
+
payment_method: Buckaruby::PaymentMethod::IDEAL,
|
|
184
|
+
payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first,
|
|
185
|
+
invoicenumber: "12345",
|
|
186
|
+
return_url: "http://www.return.url/",
|
|
187
|
+
custom: {
|
|
188
|
+
foo: "bar",
|
|
189
|
+
quux: "42"
|
|
190
|
+
},
|
|
191
|
+
additional: {
|
|
192
|
+
myreference: "12345"
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
response = gateway.setup_transaction(options)
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
In the response, you can retrieve the custom and additional variables with the methods `custom` and `additional`:
|
|
200
|
+
|
|
201
|
+
```ruby
|
|
202
|
+
puts response.custom[:foo]
|
|
203
|
+
puts response.additional[:myreference]
|
|
204
|
+
````
|
|
205
|
+
|
|
173
206
|
### Error handling
|
|
174
207
|
|
|
175
208
|
When missing or invalid parameters are passed to any method, an `ArgumentError` will be raised.
|
data/buckaruby.gemspec
CHANGED
|
@@ -23,6 +23,6 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
26
|
-
spec.add_development_dependency "rspec", "~> 3.
|
|
27
|
-
spec.add_development_dependency "webmock", "~> 2.3"
|
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
|
27
|
+
spec.add_development_dependency "webmock", "~> 2.3"
|
|
28
28
|
end
|
data/lib/buckaruby/request.rb
CHANGED
|
@@ -50,14 +50,16 @@ module Buckaruby
|
|
|
50
50
|
# Try to catch some common exceptions Net::HTTP might raise
|
|
51
51
|
rescue Errno::ETIMEDOUT, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, Errno::EHOSTUNREACH,
|
|
52
52
|
IOError, SocketError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::OpenTimeout,
|
|
53
|
-
Net::ProtocolError, Net::ReadTimeout, OpenSSL::SSL::SSLError =>
|
|
54
|
-
raise ConnectionException,
|
|
53
|
+
Net::ProtocolError, Net::ReadTimeout, OpenSSL::SSL::SSLError => e
|
|
54
|
+
raise ConnectionException, e
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
def build_request_data(options)
|
|
58
58
|
params = { brq_websitekey: @config.website }
|
|
59
59
|
|
|
60
60
|
params.merge!(build_request_params(options))
|
|
61
|
+
params.merge!(build_custom_params(options[:custom])) if options[:custom]
|
|
62
|
+
params.merge!(build_additional_params(options[:additional])) if options[:additional]
|
|
61
63
|
|
|
62
64
|
params[:add_buckaruby] = "Buckaruby #{Buckaruby::VERSION}"
|
|
63
65
|
|
|
@@ -67,6 +69,14 @@ module Buckaruby
|
|
|
67
69
|
params
|
|
68
70
|
end
|
|
69
71
|
|
|
72
|
+
def build_custom_params(options)
|
|
73
|
+
options.map { |key, value| [:"cust_#{key}", value] }.to_h
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def build_additional_params(options)
|
|
77
|
+
options.map { |key, value| [:"add_#{key}", value] }.to_h
|
|
78
|
+
end
|
|
79
|
+
|
|
70
80
|
def post_data(params)
|
|
71
81
|
params.map { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join("&")
|
|
72
82
|
end
|
data/lib/buckaruby/response.rb
CHANGED
|
@@ -39,6 +39,36 @@ module Buckaruby
|
|
|
39
39
|
parse_time(params[:brq_timestamp])
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
+
def custom
|
|
43
|
+
@custom ||= begin
|
|
44
|
+
custom = Support::CaseInsensitiveHash.new
|
|
45
|
+
|
|
46
|
+
params.each do |key, value|
|
|
47
|
+
next unless key.upcase.start_with?("CUST_")
|
|
48
|
+
|
|
49
|
+
new_key = key.to_s[5..-1]
|
|
50
|
+
custom[new_key] = value
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
custom
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def additional
|
|
58
|
+
@additional ||= begin
|
|
59
|
+
additional = Support::CaseInsensitiveHash.new
|
|
60
|
+
|
|
61
|
+
params.each do |key, value|
|
|
62
|
+
next unless key.upcase.start_with?("ADD_")
|
|
63
|
+
|
|
64
|
+
new_key = key.to_s[4..-1]
|
|
65
|
+
additional[new_key] = value
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
additional
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
42
72
|
private
|
|
43
73
|
|
|
44
74
|
def parse_response(body)
|
data/lib/buckaruby/version.rb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
|
-
describe Buckaruby::Configuration do
|
|
5
|
+
RSpec.describe Buckaruby::Configuration do
|
|
6
6
|
describe '#website' do
|
|
7
7
|
it 'sets the website from options' do
|
|
8
8
|
config = Buckaruby::Configuration.new(website: "12345678", secret: "7C222FB2927D828AF22F592134E8932480637C0D")
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
|
-
describe Buckaruby::Gateway do
|
|
5
|
+
RSpec.describe Buckaruby::Gateway do
|
|
6
6
|
describe 'initialization' do
|
|
7
7
|
describe 'bad parameters' do
|
|
8
|
-
it '
|
|
8
|
+
it 'raises an exception when creating a new instance with invalid parameters' do
|
|
9
9
|
expect {
|
|
10
10
|
Buckaruby::Gateway.new
|
|
11
11
|
}.to raise_error(ArgumentError)
|
|
@@ -31,7 +31,7 @@ describe Buckaruby::Gateway do
|
|
|
31
31
|
|
|
32
32
|
describe '#issuers' do
|
|
33
33
|
context 'when no or false parameters are passed' do
|
|
34
|
-
it '
|
|
34
|
+
it 'raises an ArgumentError' do
|
|
35
35
|
expect { subject.issuers }.to raise_error(ArgumentError)
|
|
36
36
|
expect { subject.issuers(:wrong) }.to raise_error(ArgumentError)
|
|
37
37
|
end
|
|
@@ -39,18 +39,20 @@ describe Buckaruby::Gateway do
|
|
|
39
39
|
|
|
40
40
|
context 'when ideal is passed' do
|
|
41
41
|
let(:issuers) { subject.issuers(Buckaruby::PaymentMethod::IDEAL) }
|
|
42
|
+
|
|
42
43
|
it { expect(issuers.length).to be > 0 }
|
|
43
44
|
it { expect(issuers).to include("INGBNL2A" => "ING") }
|
|
44
45
|
end
|
|
45
46
|
|
|
46
47
|
context 'when ideal processing is passed' do
|
|
47
48
|
let(:issuers) { subject.issuers(Buckaruby::PaymentMethod::IDEAL_PROCESSING) }
|
|
49
|
+
|
|
48
50
|
it { expect(issuers.length).to be > 0 }
|
|
49
51
|
it { expect(issuers).to include("RABONL2U" => "Rabobank") }
|
|
50
52
|
end
|
|
51
53
|
|
|
52
54
|
context 'when visa, mastercard, maestro, bankcontact, sepa direct debit or paypal is passed' do
|
|
53
|
-
it '
|
|
55
|
+
it 'raises an ArgumentError' do
|
|
54
56
|
expect { subject.issuers(Buckaruby::PaymentMethod::VISA) }.to raise_error(ArgumentError)
|
|
55
57
|
expect { subject.issuers(Buckaruby::PaymentMethod::MASTER_CARD) }.to raise_error(ArgumentError)
|
|
56
58
|
expect { subject.issuers(Buckaruby::PaymentMethod::MAESTRO) }.to raise_error(ArgumentError)
|
|
@@ -62,11 +64,11 @@ describe Buckaruby::Gateway do
|
|
|
62
64
|
end
|
|
63
65
|
|
|
64
66
|
describe '#setup_transaction' do
|
|
65
|
-
before
|
|
67
|
+
before do
|
|
66
68
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(body: File.read("spec/fixtures/responses/setup_transaction_success.txt"))
|
|
67
69
|
end
|
|
68
70
|
|
|
69
|
-
it '
|
|
71
|
+
it 'raises an exception when initiating a transaction with missing parameters' do
|
|
70
72
|
expect {
|
|
71
73
|
subject.setup_transaction(amount: 10)
|
|
72
74
|
}.to raise_error(ArgumentError)
|
|
@@ -84,7 +86,7 @@ describe Buckaruby::Gateway do
|
|
|
84
86
|
}.to raise_error(ArgumentError)
|
|
85
87
|
end
|
|
86
88
|
|
|
87
|
-
it '
|
|
89
|
+
it 'raises an exception when initiating a transaction with invalid amount' do
|
|
88
90
|
expect {
|
|
89
91
|
subject.setup_transaction(amount: 0, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first, invoicenumber: "12345", return_url: "http://www.return.url/")
|
|
90
92
|
}.to raise_error(ArgumentError)
|
|
@@ -94,19 +96,19 @@ describe Buckaruby::Gateway do
|
|
|
94
96
|
}.to raise_error(ArgumentError)
|
|
95
97
|
end
|
|
96
98
|
|
|
97
|
-
it '
|
|
99
|
+
it 'raises an exception when initiating a transaction with invalid payment method' do
|
|
98
100
|
expect {
|
|
99
101
|
subject.setup_transaction(amount: 10, payment_method: "abc", payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first, invoicenumber: "12345", return_url: "http://www.return.url/")
|
|
100
102
|
}.to raise_error(ArgumentError)
|
|
101
103
|
end
|
|
102
104
|
|
|
103
|
-
it '
|
|
105
|
+
it 'raises an exception when initiating a transaction with invalid payment issuer' do
|
|
104
106
|
expect {
|
|
105
107
|
subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: "abc", invoicenumber: "12345", return_url: "http://www.return.url/")
|
|
106
108
|
}.to raise_error(ArgumentError)
|
|
107
109
|
end
|
|
108
110
|
|
|
109
|
-
it '
|
|
111
|
+
it 'raises a ConnectionException when connection the Buckaroo fails' do
|
|
110
112
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_raise(Errno::ECONNREFUSED)
|
|
111
113
|
|
|
112
114
|
expect {
|
|
@@ -114,7 +116,7 @@ describe Buckaruby::Gateway do
|
|
|
114
116
|
}.to raise_error(Buckaruby::ConnectionException)
|
|
115
117
|
end
|
|
116
118
|
|
|
117
|
-
it '
|
|
119
|
+
it 'raises an InvalidResponseException when Buckaroo returns an invalid response' do
|
|
118
120
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(status: 500)
|
|
119
121
|
|
|
120
122
|
expect {
|
|
@@ -122,7 +124,7 @@ describe Buckaruby::Gateway do
|
|
|
122
124
|
}.to raise_error(Buckaruby::InvalidResponseException)
|
|
123
125
|
end
|
|
124
126
|
|
|
125
|
-
it '
|
|
127
|
+
it 'raises an ApiException when API result Fail is returned' do
|
|
126
128
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(body: "BRQ_APIRESULT=Fail&BRQ_APIERRORMESSAGE=Invalid+request")
|
|
127
129
|
|
|
128
130
|
expect {
|
|
@@ -130,60 +132,63 @@ describe Buckaruby::Gateway do
|
|
|
130
132
|
}.to raise_error(Buckaruby::ApiException)
|
|
131
133
|
end
|
|
132
134
|
|
|
133
|
-
describe '
|
|
135
|
+
describe 'initiates a transaction when amount is integer, decimal or string' do
|
|
134
136
|
context 'when amount is an integer' do
|
|
135
137
|
let(:response) { subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first, invoicenumber: "12345", return_url: "http://www.return.url/") }
|
|
138
|
+
|
|
136
139
|
it { expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse) }
|
|
137
140
|
it { expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24") }
|
|
138
|
-
it { expect(response.redirect_url).
|
|
141
|
+
it { expect(response.redirect_url).not_to be nil }
|
|
139
142
|
end
|
|
140
143
|
|
|
141
144
|
context 'when amount is a decimal' do
|
|
142
145
|
let(:response) { subject.setup_transaction(amount: 10.50, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first, invoicenumber: "12345", return_url: "http://www.return.url/") }
|
|
146
|
+
|
|
143
147
|
it { expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse) }
|
|
144
148
|
it { expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24") }
|
|
145
|
-
it { expect(response.redirect_url).
|
|
149
|
+
it { expect(response.redirect_url).not_to be nil }
|
|
146
150
|
end
|
|
147
151
|
|
|
148
152
|
context 'when amount is a string' do
|
|
149
153
|
let(:response) { subject.setup_transaction(amount: '10', payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first, invoicenumber: "12345", return_url: "http://www.return.url/") }
|
|
154
|
+
|
|
150
155
|
it { expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse) }
|
|
151
156
|
it { expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24") }
|
|
152
|
-
it { expect(response.redirect_url).
|
|
157
|
+
it { expect(response.redirect_url).not_to be nil }
|
|
153
158
|
end
|
|
154
159
|
end
|
|
155
160
|
|
|
156
|
-
it '
|
|
161
|
+
it 'initiates a transaction for payment method ideal' do
|
|
157
162
|
response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first, invoicenumber: "12345", return_url: "http://www.return.url/")
|
|
158
163
|
expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
|
|
159
164
|
expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
160
165
|
expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
|
|
161
|
-
expect(response.redirect_url).
|
|
166
|
+
expect(response.redirect_url).not_to be nil
|
|
162
167
|
expect(response.timestamp).to be_an_instance_of(Time)
|
|
163
168
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
164
169
|
end
|
|
165
170
|
|
|
166
|
-
it '
|
|
171
|
+
it 'initiates a transaction for payment method visa' do
|
|
167
172
|
response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::VISA, invoicenumber: "12345", return_url: "http://www.return.url/")
|
|
168
173
|
expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
|
|
169
174
|
expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
170
175
|
expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
|
|
171
|
-
expect(response.redirect_url).
|
|
176
|
+
expect(response.redirect_url).not_to be nil
|
|
172
177
|
expect(response.timestamp).to be_an_instance_of(Time)
|
|
173
178
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
174
179
|
end
|
|
175
180
|
|
|
176
|
-
it '
|
|
181
|
+
it 'initiates a transaction for payment method mastercard' do
|
|
177
182
|
response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::MASTER_CARD, invoicenumber: "12345", return_url: "http://www.return.url/")
|
|
178
183
|
expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
|
|
179
184
|
expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
180
185
|
expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
|
|
181
|
-
expect(response.redirect_url).
|
|
186
|
+
expect(response.redirect_url).not_to be nil
|
|
182
187
|
expect(response.timestamp).to be_an_instance_of(Time)
|
|
183
188
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
184
189
|
end
|
|
185
190
|
|
|
186
|
-
it '
|
|
191
|
+
it 'initiates a transaction for payment method sepa direct debit' do
|
|
187
192
|
response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::SEPA_DIRECT_DEBIT, invoicenumber: "12345", return_url: "http://www.return.url/", account_iban: "NL13TEST0123456789", account_name: "J. Tester", mandate_reference: "00P12345", collect_date: Date.new(2016, 1, 1))
|
|
188
193
|
expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
|
|
189
194
|
expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
@@ -192,23 +197,47 @@ describe Buckaruby::Gateway do
|
|
|
192
197
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
193
198
|
end
|
|
194
199
|
|
|
195
|
-
it '
|
|
200
|
+
it 'initiates a transaction for payment method paypal' do
|
|
196
201
|
response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::PAYPAL, invoicenumber: "12345", return_url: "http://www.return.url/")
|
|
197
202
|
expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
|
|
198
203
|
expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
199
204
|
expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
|
|
200
|
-
expect(response.redirect_url).
|
|
205
|
+
expect(response.redirect_url).not_to be nil
|
|
201
206
|
expect(response.timestamp).to be_an_instance_of(Time)
|
|
202
207
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
203
208
|
end
|
|
209
|
+
|
|
210
|
+
context 'with custom variables' do
|
|
211
|
+
it 'sends the custom variables with the request' do
|
|
212
|
+
response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: "ABNANL2A", invoicenumber: "12345", return_url: "http://www.return.url/", custom: { foo: :bar, quux: "42" })
|
|
213
|
+
expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
|
|
214
|
+
expect(response.custom[:foo]).to eq("bar")
|
|
215
|
+
expect(response.custom[:quux]).to eq("42")
|
|
216
|
+
|
|
217
|
+
expect(WebMock).to have_requested(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
|
|
218
|
+
.with(body: "brq_websitekey=12345678&brq_payment_method=ideal&brq_culture=nl-NL&brq_currency=EUR&brq_amount=10.0&brq_invoicenumber=12345&brq_service_ideal_action=Pay&brq_service_ideal_issuer=ABNANL2A&brq_service_ideal_version=2&brq_return=http%3A%2F%2Fwww.return.url%2F&cust_foo=bar&cust_quux=42&add_buckaruby=Buckaruby+#{Buckaruby::VERSION}&brq_signature=0fb3ff3c1f140b5aede33a0fdacbc5675830120d")
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
context 'with additional variables' do
|
|
223
|
+
it 'sends the additional variables with the request' do
|
|
224
|
+
response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: "ABNANL2A", invoicenumber: "12345", return_url: "http://www.return.url/", additional: { myreference: "12345" })
|
|
225
|
+
expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
|
|
226
|
+
expect(response.additional[:buckaruby]).to eq("1.2.0")
|
|
227
|
+
expect(response.additional[:myreference]).to eq("12345")
|
|
228
|
+
|
|
229
|
+
expect(WebMock).to have_requested(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
|
|
230
|
+
.with(body: "brq_websitekey=12345678&brq_payment_method=ideal&brq_culture=nl-NL&brq_currency=EUR&brq_amount=10.0&brq_invoicenumber=12345&brq_service_ideal_action=Pay&brq_service_ideal_issuer=ABNANL2A&brq_service_ideal_version=2&brq_return=http%3A%2F%2Fwww.return.url%2F&add_myreference=12345&add_buckaruby=Buckaruby+#{Buckaruby::VERSION}&brq_signature=f7996840436bdd55dada28b80c62ed88af10cd23")
|
|
231
|
+
end
|
|
232
|
+
end
|
|
204
233
|
end
|
|
205
234
|
|
|
206
235
|
describe '#recurrent_transaction' do
|
|
207
|
-
before
|
|
236
|
+
before do
|
|
208
237
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(body: File.read("spec/fixtures/responses/recurrent_transaction_success.txt"))
|
|
209
238
|
end
|
|
210
239
|
|
|
211
|
-
it '
|
|
240
|
+
it 'raises an exception when initiating a recurrent transaction with missing parameters' do
|
|
212
241
|
expect {
|
|
213
242
|
subject.recurrent_transaction(amount: 10)
|
|
214
243
|
}.to raise_error(ArgumentError)
|
|
@@ -222,13 +251,13 @@ describe Buckaruby::Gateway do
|
|
|
222
251
|
}.to raise_error(ArgumentError)
|
|
223
252
|
end
|
|
224
253
|
|
|
225
|
-
it '
|
|
254
|
+
it 'raises an exception when initiating a transaction with invalid payment method' do
|
|
226
255
|
expect {
|
|
227
256
|
subject.recurrent_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, invoicenumber: "12345", transaction_id: "12345")
|
|
228
257
|
}.to raise_error(ArgumentError)
|
|
229
258
|
end
|
|
230
259
|
|
|
231
|
-
it '
|
|
260
|
+
it 'initiates a recurrent transaction for payment method visa' do
|
|
232
261
|
response = subject.recurrent_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::VISA, invoicenumber: "12345", transaction_id: "12345")
|
|
233
262
|
expect(response).to be_an_instance_of(Buckaruby::RecurrentTransactionResponse)
|
|
234
263
|
expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
@@ -241,20 +270,20 @@ describe Buckaruby::Gateway do
|
|
|
241
270
|
end
|
|
242
271
|
|
|
243
272
|
describe '#refundable?' do
|
|
244
|
-
it '
|
|
273
|
+
it 'raises an exception when required parameters are missing' do
|
|
245
274
|
expect {
|
|
246
275
|
subject.refundable?
|
|
247
276
|
}.to raise_error(ArgumentError)
|
|
248
277
|
end
|
|
249
278
|
|
|
250
|
-
it '
|
|
279
|
+
it 'returns true when the transaction is refundable' do
|
|
251
280
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=RefundInfo").to_return(body: File.read("spec/fixtures/responses/refund_info_success.txt"))
|
|
252
281
|
|
|
253
282
|
response = subject.refundable?(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
254
283
|
expect(response).to be true
|
|
255
284
|
end
|
|
256
285
|
|
|
257
|
-
it '
|
|
286
|
+
it 'returns false when the transaction was not found' do
|
|
258
287
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=RefundInfo").to_return(body: File.read("spec/fixtures/responses/refund_info_error.txt"))
|
|
259
288
|
|
|
260
289
|
response = subject.refundable?(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
@@ -263,13 +292,13 @@ describe Buckaruby::Gateway do
|
|
|
263
292
|
end
|
|
264
293
|
|
|
265
294
|
describe '#refund_transaction' do
|
|
266
|
-
it '
|
|
295
|
+
it 'raises an exception when required parameters are missing' do
|
|
267
296
|
expect {
|
|
268
297
|
subject.refund_transaction
|
|
269
298
|
}.to raise_error(ArgumentError)
|
|
270
299
|
end
|
|
271
300
|
|
|
272
|
-
it '
|
|
301
|
+
it 'raises an exception when the transaction is not refundable' do
|
|
273
302
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=RefundInfo").to_return(body: File.read("spec/fixtures/responses/refund_info_error.txt"))
|
|
274
303
|
|
|
275
304
|
expect {
|
|
@@ -277,7 +306,7 @@ describe Buckaruby::Gateway do
|
|
|
277
306
|
}.to raise_error(Buckaruby::NonRefundableTransactionException)
|
|
278
307
|
end
|
|
279
308
|
|
|
280
|
-
it '
|
|
309
|
+
it 'refunds the transaction' do
|
|
281
310
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=RefundInfo").to_return(body: File.read("spec/fixtures/responses/refund_info_success.txt"))
|
|
282
311
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(body: File.read("spec/fixtures/responses/refund_transaction_success.txt"))
|
|
283
312
|
|
|
@@ -295,11 +324,11 @@ describe Buckaruby::Gateway do
|
|
|
295
324
|
end
|
|
296
325
|
|
|
297
326
|
describe '#status' do
|
|
298
|
-
before
|
|
327
|
+
before do
|
|
299
328
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_success.txt"))
|
|
300
329
|
end
|
|
301
330
|
|
|
302
|
-
it '
|
|
331
|
+
it 'raises an exception when required parameters are missing' do
|
|
303
332
|
expect {
|
|
304
333
|
subject.status
|
|
305
334
|
}.to raise_error(ArgumentError)
|
|
@@ -307,7 +336,7 @@ describe Buckaruby::Gateway do
|
|
|
307
336
|
|
|
308
337
|
it { expect(subject.status(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")).to be_an_instance_of(Buckaruby::StatusResponse) }
|
|
309
338
|
|
|
310
|
-
it '
|
|
339
|
+
it 'returns transaction status' do
|
|
311
340
|
response = subject.status(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
312
341
|
expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
|
|
313
342
|
expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
|
|
@@ -319,7 +348,7 @@ describe Buckaruby::Gateway do
|
|
|
319
348
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
320
349
|
end
|
|
321
350
|
|
|
322
|
-
it '
|
|
351
|
+
it 'includes account iban, bic and name for an ideal response' do
|
|
323
352
|
response = subject.status(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
324
353
|
expect(response.account_iban).to eq("NL44RABO0123456789")
|
|
325
354
|
expect(response.account_bic).to eq("RABONL2U")
|
|
@@ -328,20 +357,20 @@ describe Buckaruby::Gateway do
|
|
|
328
357
|
end
|
|
329
358
|
|
|
330
359
|
describe '#cancellable?' do
|
|
331
|
-
it '
|
|
360
|
+
it 'raises an exception when required parameters are missing' do
|
|
332
361
|
expect {
|
|
333
362
|
subject.cancellable?
|
|
334
363
|
}.to raise_error(ArgumentError)
|
|
335
364
|
end
|
|
336
365
|
|
|
337
|
-
it '
|
|
366
|
+
it 'returns true when the transaction is cancellable' do
|
|
338
367
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_cancellable.txt"))
|
|
339
368
|
|
|
340
369
|
response = subject.cancellable?(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
341
370
|
expect(response).to be true
|
|
342
371
|
end
|
|
343
372
|
|
|
344
|
-
it '
|
|
373
|
+
it 'returns false when the transaction is not cancellable' do
|
|
345
374
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_noncancellable.txt"))
|
|
346
375
|
|
|
347
376
|
response = subject.cancellable?(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
@@ -350,13 +379,13 @@ describe Buckaruby::Gateway do
|
|
|
350
379
|
end
|
|
351
380
|
|
|
352
381
|
describe '#cancel_transaction' do
|
|
353
|
-
it '
|
|
382
|
+
it 'raises an exception when required parameters are missing' do
|
|
354
383
|
expect {
|
|
355
384
|
subject.cancel_transaction
|
|
356
385
|
}.to raise_error(ArgumentError)
|
|
357
386
|
end
|
|
358
387
|
|
|
359
|
-
it '
|
|
388
|
+
it 'raises an exception when the transaction is not cancellable' do
|
|
360
389
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_noncancellable.txt"))
|
|
361
390
|
|
|
362
391
|
expect {
|
|
@@ -364,7 +393,7 @@ describe Buckaruby::Gateway do
|
|
|
364
393
|
}.to raise_error(Buckaruby::NonCancellableTransactionException)
|
|
365
394
|
end
|
|
366
395
|
|
|
367
|
-
it '
|
|
396
|
+
it 'cancels the transaction' do
|
|
368
397
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_cancellable.txt"))
|
|
369
398
|
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=CancelTransaction").to_return(body: File.read("spec/fixtures/responses/cancel_success.txt"))
|
|
370
399
|
|
|
@@ -374,25 +403,25 @@ describe Buckaruby::Gateway do
|
|
|
374
403
|
end
|
|
375
404
|
|
|
376
405
|
describe '#callback' do
|
|
377
|
-
it '
|
|
406
|
+
it 'raises an exception when parameters are missing' do
|
|
378
407
|
expect {
|
|
379
408
|
subject.callback
|
|
380
409
|
}.to raise_error(ArgumentError)
|
|
381
410
|
end
|
|
382
411
|
|
|
383
|
-
it '
|
|
412
|
+
it 'raises an exception when parameter is an empty Hash' do
|
|
384
413
|
expect {
|
|
385
414
|
subject.callback({})
|
|
386
415
|
}.to raise_error(ArgumentError)
|
|
387
416
|
end
|
|
388
417
|
|
|
389
|
-
it '
|
|
418
|
+
it 'raises an exception when parameter is an empty String' do
|
|
390
419
|
expect {
|
|
391
420
|
subject.callback("")
|
|
392
421
|
}.to raise_error(ArgumentError)
|
|
393
422
|
end
|
|
394
423
|
|
|
395
|
-
it '
|
|
424
|
+
it 'raises a SignatureException when the signature is invalid' do
|
|
396
425
|
params = File.read("spec/fixtures/responses/callback_invalid_signature.txt")
|
|
397
426
|
|
|
398
427
|
expect {
|
|
@@ -400,36 +429,38 @@ describe Buckaruby::Gateway do
|
|
|
400
429
|
}.to raise_error(Buckaruby::SignatureException, "Sent signature (abcdefgh1234567890abcdefgh1234567890) doesn't match generated signature (0a74bba15fccd8094f33678c001b44851643876d)")
|
|
401
430
|
end
|
|
402
431
|
|
|
403
|
-
it '
|
|
432
|
+
it 'returns the status when the signature is valid' do
|
|
404
433
|
params = File.read("spec/fixtures/responses/callback_valid_signature.txt")
|
|
405
434
|
|
|
406
435
|
response = subject.callback(params)
|
|
407
436
|
expect(response).to be_an_instance_of(Buckaruby::CallbackResponse)
|
|
408
|
-
expect(response.transaction_status).to
|
|
409
|
-
expect(response.transaction_type).to
|
|
410
|
-
expect(response.payment_method).to
|
|
411
|
-
expect(response.
|
|
412
|
-
expect(response.
|
|
437
|
+
expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
|
|
438
|
+
expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
|
|
439
|
+
expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
|
|
440
|
+
expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
441
|
+
expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
|
|
442
|
+
expect(response.invoicenumber).to eq("12345")
|
|
413
443
|
expect(response.timestamp).to be_an_instance_of(Time)
|
|
414
444
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
415
445
|
end
|
|
416
446
|
|
|
417
|
-
it '
|
|
447
|
+
it 'accepts a Hash as parameters' do
|
|
418
448
|
params = { "brq_amount" => "10.00", "brq_currency" => "EUR", "brq_customer_name" => "J. de Tester", "brq_description" => "Test", "brq_invoicenumber" => "12345", "brq_mutationtype" => "Collecting", "brq_payer_hash" => "e02377112efcd30bb7420bb1b9855a3778864572", "brq_payment" => "E86256B2787EE7FF0C33D0D4C6159CD922227B79", "brq_service_ideal_consumerbic" => "RABONL2U", "brq_service_ideal_consumeriban" => "NL44RABO0123456789", "brq_service_ideal_consumerissuer" => "Rabobank", "brq_service_ideal_consumername" => "J. de Tester", "brq_statuscode" => "190", "brq_statuscode_detail" => "S001", "brq_statusmessage" => "Transaction successfully processed", "brq_test" => "true", "brq_timestamp" => "2014-11-05 13:10:42", "brq_transaction_method" => "ideal", "brq_transaction_type" => "C021", "brq_transactions" => "41C48B55FA9164E123CC73B1157459E840BE5D24", "brq_websitekey" => "12345678", "brq_signature" => "0a74bba15fccd8094f33678c001b44851643876d" }
|
|
419
449
|
|
|
420
450
|
response = subject.callback(params)
|
|
421
451
|
expect(response).to be_an_instance_of(Buckaruby::CallbackResponse)
|
|
422
|
-
expect(response.transaction_status).to
|
|
423
|
-
expect(response.transaction_type).to
|
|
424
|
-
expect(response.payment_method).to
|
|
425
|
-
expect(response.
|
|
426
|
-
expect(response.
|
|
452
|
+
expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
|
|
453
|
+
expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
|
|
454
|
+
expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
|
|
455
|
+
expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
|
|
456
|
+
expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
|
|
457
|
+
expect(response.invoicenumber).to eq("12345")
|
|
427
458
|
expect(response.timestamp).to be_an_instance_of(Time)
|
|
428
459
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
429
460
|
end
|
|
430
461
|
|
|
431
|
-
context 'payment response' do
|
|
432
|
-
it '
|
|
462
|
+
context 'when callback is a payment response' do
|
|
463
|
+
it 'sets the success status when payment status is success' do
|
|
433
464
|
params = File.read("spec/fixtures/responses/callback_payment_success.txt")
|
|
434
465
|
|
|
435
466
|
response = subject.callback(params)
|
|
@@ -443,7 +474,7 @@ describe Buckaruby::Gateway do
|
|
|
443
474
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
444
475
|
end
|
|
445
476
|
|
|
446
|
-
it '
|
|
477
|
+
it 'sets the failed status when payment status is failed' do
|
|
447
478
|
params = File.read("spec/fixtures/responses/callback_payment_failed.txt")
|
|
448
479
|
|
|
449
480
|
response = subject.callback(params)
|
|
@@ -457,7 +488,7 @@ describe Buckaruby::Gateway do
|
|
|
457
488
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
458
489
|
end
|
|
459
490
|
|
|
460
|
-
it '
|
|
491
|
+
it 'sets the rejected status when payment status is rejected' do
|
|
461
492
|
params = File.read("spec/fixtures/responses/callback_payment_rejected.txt")
|
|
462
493
|
|
|
463
494
|
response = subject.callback(params)
|
|
@@ -471,7 +502,7 @@ describe Buckaruby::Gateway do
|
|
|
471
502
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
472
503
|
end
|
|
473
504
|
|
|
474
|
-
it '
|
|
505
|
+
it 'sets the cancelled status when payment status is cancelled' do
|
|
475
506
|
params = File.read("spec/fixtures/responses/callback_payment_cancelled.txt")
|
|
476
507
|
|
|
477
508
|
response = subject.callback(params)
|
|
@@ -485,7 +516,7 @@ describe Buckaruby::Gateway do
|
|
|
485
516
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
486
517
|
end
|
|
487
518
|
|
|
488
|
-
it '
|
|
519
|
+
it 'sets the pending status when payment status is pending' do
|
|
489
520
|
params = File.read("spec/fixtures/responses/callback_payment_pending.txt")
|
|
490
521
|
|
|
491
522
|
response = subject.callback(params)
|
|
@@ -499,7 +530,7 @@ describe Buckaruby::Gateway do
|
|
|
499
530
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
500
531
|
end
|
|
501
532
|
|
|
502
|
-
it '
|
|
533
|
+
it 'includes account iban, bic and name for an ideal response' do
|
|
503
534
|
params = File.read("spec/fixtures/responses/callback_payment_success.txt")
|
|
504
535
|
|
|
505
536
|
response = subject.callback(params)
|
|
@@ -513,7 +544,7 @@ describe Buckaruby::Gateway do
|
|
|
513
544
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
514
545
|
end
|
|
515
546
|
|
|
516
|
-
it '
|
|
547
|
+
it 'includes account iban, name, mandate reference and collect date for a sepa direct debit response' do
|
|
517
548
|
params = File.read("spec/fixtures/responses/callback_payment_sepa.txt")
|
|
518
549
|
|
|
519
550
|
response = subject.callback(params)
|
|
@@ -531,7 +562,7 @@ describe Buckaruby::Gateway do
|
|
|
531
562
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
532
563
|
end
|
|
533
564
|
|
|
534
|
-
it '
|
|
565
|
+
it 'returns transaction type payment when cancelling a visa or mastercard transaction (empty transaction type)' do
|
|
535
566
|
params = File.read("spec/fixtures/responses/callback_payment_empty_transaction_type.txt")
|
|
536
567
|
|
|
537
568
|
response = subject.callback(params)
|
|
@@ -544,8 +575,8 @@ describe Buckaruby::Gateway do
|
|
|
544
575
|
end
|
|
545
576
|
end
|
|
546
577
|
|
|
547
|
-
context 'payment recurrent response' do
|
|
548
|
-
it '
|
|
578
|
+
context 'when callback is a payment recurrent response' do
|
|
579
|
+
it 'recognizes a visa payment recurrent response' do
|
|
549
580
|
params = File.read("spec/fixtures/responses/callback_recurrent_visa.txt")
|
|
550
581
|
|
|
551
582
|
response = subject.callback(params)
|
|
@@ -559,7 +590,7 @@ describe Buckaruby::Gateway do
|
|
|
559
590
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
560
591
|
end
|
|
561
592
|
|
|
562
|
-
it '
|
|
593
|
+
it 'recognizes a sepa direct debit payment recurrent response' do
|
|
563
594
|
params = File.read("spec/fixtures/responses/callback_recurrent_sepa.txt")
|
|
564
595
|
|
|
565
596
|
response = subject.callback(params)
|
|
@@ -574,8 +605,8 @@ describe Buckaruby::Gateway do
|
|
|
574
605
|
end
|
|
575
606
|
end
|
|
576
607
|
|
|
577
|
-
context 'refund response' do
|
|
578
|
-
it '
|
|
608
|
+
context 'when callback is a refund response' do
|
|
609
|
+
it 'recognizes an ideal refund response' do
|
|
579
610
|
params = File.read("spec/fixtures/responses/callback_refund_ideal.txt")
|
|
580
611
|
|
|
581
612
|
response = subject.callback(params)
|
|
@@ -590,7 +621,7 @@ describe Buckaruby::Gateway do
|
|
|
590
621
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
591
622
|
end
|
|
592
623
|
|
|
593
|
-
it '
|
|
624
|
+
it 'recognizes a paypal refund response' do
|
|
594
625
|
params = File.read("spec/fixtures/responses/callback_refund_paypal.txt")
|
|
595
626
|
|
|
596
627
|
response = subject.callback(params)
|
|
@@ -606,8 +637,8 @@ describe Buckaruby::Gateway do
|
|
|
606
637
|
end
|
|
607
638
|
end
|
|
608
639
|
|
|
609
|
-
context 'reversal response' do
|
|
610
|
-
it '
|
|
640
|
+
context 'when callback is a reversal response' do
|
|
641
|
+
it 'recognizes a sepa direct debit reversal response' do
|
|
611
642
|
params = File.read("spec/fixtures/responses/callback_reversal_sepa.txt")
|
|
612
643
|
|
|
613
644
|
response = subject.callback(params)
|
|
@@ -622,7 +653,7 @@ describe Buckaruby::Gateway do
|
|
|
622
653
|
expect(response.to_h).to be_an_instance_of(Hash)
|
|
623
654
|
end
|
|
624
655
|
|
|
625
|
-
it '
|
|
656
|
+
it 'recognizes a paypal reversal response' do
|
|
626
657
|
params = File.read("spec/fixtures/responses/callback_reversal_paypal.txt")
|
|
627
658
|
|
|
628
659
|
response = subject.callback(params)
|
data/spec/buckaruby/iban_spec.rb
CHANGED
|
@@ -2,72 +2,72 @@
|
|
|
2
2
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
|
-
describe Buckaruby::Iban do
|
|
5
|
+
RSpec.describe Buckaruby::Iban do
|
|
6
6
|
describe 'calculate_iban' do
|
|
7
7
|
describe 'bad initialization' do
|
|
8
|
-
it '
|
|
8
|
+
it 'raises an exception when account number is not supplied' do
|
|
9
9
|
expect {
|
|
10
10
|
Buckaruby::Iban.calculate_iban(nil, 'INGB')
|
|
11
11
|
}.to raise_error(ArgumentError)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
it '
|
|
14
|
+
it 'raises an exception when account number is empty' do
|
|
15
15
|
expect {
|
|
16
16
|
Buckaruby::Iban.calculate_iban('', 'INGB')
|
|
17
17
|
}.to raise_error(ArgumentError)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
it '
|
|
20
|
+
it 'raises an exception when bank code is not supplied' do
|
|
21
21
|
expect {
|
|
22
22
|
Buckaruby::Iban.calculate_iban('555', nil)
|
|
23
23
|
}.to raise_error(ArgumentError)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
it '
|
|
26
|
+
it 'raises an exception when bank code is empty' do
|
|
27
27
|
expect {
|
|
28
28
|
Buckaruby::Iban.calculate_iban('555', '')
|
|
29
29
|
}.to raise_error(ArgumentError)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
it '
|
|
32
|
+
it 'raises an exception when country code is not supplied' do
|
|
33
33
|
expect {
|
|
34
34
|
Buckaruby::Iban.calculate_iban('555', 'INGB', '')
|
|
35
35
|
}.to raise_error(ArgumentError)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
it '
|
|
38
|
+
it 'raises an exception when country code is invalid' do
|
|
39
39
|
expect {
|
|
40
40
|
Buckaruby::Iban.calculate_iban('555', 'INGB', 'TEST')
|
|
41
41
|
}.to raise_error(ArgumentError)
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
it '
|
|
45
|
+
it 'calculates an IBAN for account number 1234 with ING bank' do
|
|
46
46
|
iban = Buckaruby::Iban.calculate_iban('1234', 'INGB')
|
|
47
47
|
expect(iban).to eq('NL08INGB0000001234')
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
it '
|
|
50
|
+
it 'calculates an IBAN for account number 1234567 with ING bank' do
|
|
51
51
|
iban = Buckaruby::Iban.calculate_iban('1234567', 'INGB')
|
|
52
52
|
expect(iban).to eq('NL20INGB0001234567')
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
it '
|
|
55
|
+
it 'calculates an IBAN for account number 55505 with ING bank' do
|
|
56
56
|
iban = Buckaruby::Iban.calculate_iban('55505', 'INGB')
|
|
57
57
|
expect(iban).to eq('NL70INGB0000055505')
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
it '
|
|
60
|
+
it 'calculates an IBAN for account number 395222419 with Rabobank' do
|
|
61
61
|
iban = Buckaruby::Iban.calculate_iban('395222419', 'RABO')
|
|
62
62
|
expect(iban).to eq('NL25RABO0395222419')
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
it '
|
|
65
|
+
it 'calculates an IBAN for account number 707070406 with ABN Amro' do
|
|
66
66
|
iban = Buckaruby::Iban.calculate_iban('707070406', 'ABNA')
|
|
67
67
|
expect(iban).to eq('NL87ABNA0707070406')
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
it '
|
|
70
|
+
it 'calculates an IBAN for account number 254668844 with Triodos bank' do
|
|
71
71
|
iban = Buckaruby::Iban.calculate_iban('254668844', 'TRIO')
|
|
72
72
|
expect(iban).to eq('NL56TRIO0254668844')
|
|
73
73
|
end
|
|
@@ -2,33 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
|
-
describe Buckaruby::Signature do
|
|
5
|
+
RSpec.describe Buckaruby::Signature do
|
|
6
6
|
describe 'generate_signature_string' do
|
|
7
|
-
it '
|
|
7
|
+
it 'ignores parameters that are not prefixed with brq_, add_ or cust_' do
|
|
8
8
|
params = { abc: 'true', def: 'true', brq_test: 'true', add_test: 'true', cust_test: 'true' }
|
|
9
9
|
string = Buckaruby::Signature.generate_signature_string(params, 'secret')
|
|
10
10
|
expect(string).to eq('add_test=truebrq_test=truecust_test=truesecret')
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
it '
|
|
13
|
+
it 'ignores the brq_signature parameter' do
|
|
14
14
|
params = { brq_test: 'true', add_test: 'true', cust_test: 'true', brq_signature: 'foobar' }
|
|
15
15
|
string = Buckaruby::Signature.generate_signature_string(params, 'secret')
|
|
16
16
|
expect(string).to eq('add_test=truebrq_test=truecust_test=truesecret')
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
it '
|
|
19
|
+
it 'accepts boolean, integer and string as parameter types' do
|
|
20
20
|
params = { brq_boolean: true, brq_integer: 1337, brq_string: 'foobar', brq_nil: nil }
|
|
21
21
|
string = Buckaruby::Signature.generate_signature_string(params, 'secret')
|
|
22
22
|
expect(string).to eq('brq_boolean=truebrq_integer=1337brq_nil=brq_string=foobarsecret')
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
it '
|
|
25
|
+
it 'generates a valid signature string' do
|
|
26
26
|
params = { brq_test: 'abcdef', brq_test2: 'foobar' }
|
|
27
27
|
string = Buckaruby::Signature.generate_signature_string(params, 'secret')
|
|
28
28
|
expect(string).to eq('brq_test=abcdefbrq_test2=foobarsecret')
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
it '
|
|
31
|
+
it 'sorts parameters case insensitive and preserve casing in keys/values' do
|
|
32
32
|
params = { BRQ_TESTB: 'abcDEF', brq_testA: 'Foobar', BRQ_TestC: 'test' }
|
|
33
33
|
string = Buckaruby::Signature.generate_signature_string(params, 'secret')
|
|
34
34
|
expect(string).to eq('brq_testA=FoobarBRQ_TESTB=abcDEFBRQ_TestC=testsecret')
|
|
@@ -38,10 +38,10 @@ describe Buckaruby::Signature do
|
|
|
38
38
|
describe 'generate_signature' do
|
|
39
39
|
let(:config) { Buckaruby::Configuration.new(website: '12345678', secret: 'secret', hash_method: hash_method) }
|
|
40
40
|
|
|
41
|
-
context 'invalid hash method' do
|
|
41
|
+
context 'with invalid hash method' do
|
|
42
42
|
let(:hash_method) { :invalid }
|
|
43
43
|
|
|
44
|
-
it '
|
|
44
|
+
it 'raises an exception when generating a signature' do
|
|
45
45
|
expect {
|
|
46
46
|
params = { brq_test: 'abcdef', brq_test2: 'foobar' }
|
|
47
47
|
Buckaruby::Signature.generate_signature(params, config)
|
|
@@ -49,20 +49,20 @@ describe Buckaruby::Signature do
|
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
context 'SHA-1 as hash method' do
|
|
52
|
+
context 'with SHA-1 as hash method' do
|
|
53
53
|
let(:hash_method) { :sha1 }
|
|
54
54
|
|
|
55
|
-
it '
|
|
55
|
+
it 'generates a valid signature' do
|
|
56
56
|
params = { brq_test: 'abcdef', brq_test2: 'foobar' }
|
|
57
57
|
string = Buckaruby::Signature.generate_signature(params, config)
|
|
58
58
|
expect(string).to eq('c864c2abad67580274b2df00fd2a53739952b924')
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
context 'SHA-256 as hash method' do
|
|
62
|
+
context 'with SHA-256 as hash method' do
|
|
63
63
|
let(:hash_method) { :sha256 }
|
|
64
64
|
|
|
65
|
-
it '
|
|
65
|
+
it 'generates a valid signature' do
|
|
66
66
|
params = { brq_test: 'abcdef', brq_test2: 'foobar' }
|
|
67
67
|
|
|
68
68
|
string = Buckaruby::Signature.generate_signature(params, config)
|
|
@@ -70,10 +70,10 @@ describe Buckaruby::Signature do
|
|
|
70
70
|
end
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
-
context 'SHA-512 as hash method' do
|
|
73
|
+
context 'with SHA-512 as hash method' do
|
|
74
74
|
let(:hash_method) { :sha512 }
|
|
75
75
|
|
|
76
|
-
it '
|
|
76
|
+
it 'generates a valid signature' do
|
|
77
77
|
params = { brq_test: 'abcdef', brq_test2: 'foobar' }
|
|
78
78
|
string = Buckaruby::Signature.generate_signature(params, config)
|
|
79
79
|
expect(string).to eq('161e485fd71c708fa7f39c1732349fae1e5b8a0c05cd4f9d806ad570b2414f5b99b4aaf89ed48c55c188b82b9565d93471d3d20163002909360f31f29f4a988d')
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
|
-
describe Buckaruby::Support::CaseInsensitiveHash do
|
|
5
|
+
RSpec.describe Buckaruby::Support::CaseInsensitiveHash do
|
|
6
6
|
describe 'retrieve and assign' do
|
|
7
7
|
it 'accepts String keys and makes them case insensitive' do
|
|
8
8
|
hash = Buckaruby::Support::CaseInsensitiveHash.new
|
|
@@ -1 +1 @@
|
|
|
1
|
-
BRQ_ACTIONREQUIRED=redirect&BRQ_AMOUNT=10.00&BRQ_APIRESULT=ActionRequired&BRQ_CURRENCY=EUR&BRQ_DESCRIPTION=Test&BRQ_INVOICENUMBER=12345&BRQ_PAYMENT=12345&BRQ_PAYMENT_METHOD=ideal&BRQ_REDIRECTURL=https%3A%2F%2Ftestcheckout.buckaroo.nl%2Fhtml%2Fredirect.ashx%3Fr%3D41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_SERVICE_IDEAL_CONSUMERISSUER=Rabobank&BRQ_STATUSCODE=791&BRQ_STATUSCODE_DETAIL=S002&BRQ_STATUSMESSAGE=An+additional+action+is+required%3A+RedirectToIdeal&BRQ_TEST=true&BRQ_TIMESTAMP=2014-11-05+13%3A10%3A40&BRQ_TRANSACTIONS=41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_WEBSITEKEY=12345678&BRQ_SIGNATURE=
|
|
1
|
+
ADD_BUCKARUBY=1.2.0&ADD_MYREFERENCE=12345&BRQ_ACTIONREQUIRED=redirect&BRQ_AMOUNT=10.00&BRQ_APIRESULT=ActionRequired&BRQ_CURRENCY=EUR&BRQ_DESCRIPTION=Test&BRQ_INVOICENUMBER=12345&BRQ_PAYMENT=12345&BRQ_PAYMENT_METHOD=ideal&BRQ_REDIRECTURL=https%3A%2F%2Ftestcheckout.buckaroo.nl%2Fhtml%2Fredirect.ashx%3Fr%3D41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_SERVICE_IDEAL_CONSUMERISSUER=Rabobank&BRQ_STATUSCODE=791&BRQ_STATUSCODE_DETAIL=S002&BRQ_STATUSMESSAGE=An+additional+action+is+required%3A+RedirectToIdeal&BRQ_TEST=true&BRQ_TIMESTAMP=2014-11-05+13%3A10%3A40&BRQ_TRANSACTIONS=41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_WEBSITEKEY=12345678&BRQ_SIGNATURE=591e4d66e904142bb6ad2583e2580bf0a4ebb19c&CUST_FOO=bar&CUST_QUUX=42
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: buckaruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kentaa
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2019-08-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -44,20 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 3.
|
|
48
|
-
- - ">="
|
|
49
|
-
- !ruby/object:Gem::Version
|
|
50
|
-
version: 3.5.0
|
|
47
|
+
version: '3.0'
|
|
51
48
|
type: :development
|
|
52
49
|
prerelease: false
|
|
53
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
54
51
|
requirements:
|
|
55
52
|
- - "~>"
|
|
56
53
|
- !ruby/object:Gem::Version
|
|
57
|
-
version: 3.
|
|
58
|
-
- - ">="
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
version: 3.5.0
|
|
54
|
+
version: '3.0'
|
|
61
55
|
- !ruby/object:Gem::Dependency
|
|
62
56
|
name: webmock
|
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -65,9 +59,6 @@ dependencies:
|
|
|
65
59
|
- - "~>"
|
|
66
60
|
- !ruby/object:Gem::Version
|
|
67
61
|
version: '2.3'
|
|
68
|
-
- - ">="
|
|
69
|
-
- !ruby/object:Gem::Version
|
|
70
|
-
version: 2.3.2
|
|
71
62
|
type: :development
|
|
72
63
|
prerelease: false
|
|
73
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -75,9 +66,6 @@ dependencies:
|
|
|
75
66
|
- - "~>"
|
|
76
67
|
- !ruby/object:Gem::Version
|
|
77
68
|
version: '2.3'
|
|
78
|
-
- - ">="
|
|
79
|
-
- !ruby/object:Gem::Version
|
|
80
|
-
version: 2.3.2
|
|
81
69
|
description: The Buckaruby gem provides a Ruby library for communicating with the
|
|
82
70
|
Buckaroo Payment Engine 3.0.
|
|
83
71
|
email:
|
|
@@ -91,6 +79,7 @@ files:
|
|
|
91
79
|
- ".travis.yml"
|
|
92
80
|
- CHANGELOG.md
|
|
93
81
|
- Gemfile
|
|
82
|
+
- Gemfile.lock
|
|
94
83
|
- LICENSE.txt
|
|
95
84
|
- README.md
|
|
96
85
|
- Rakefile
|
|
@@ -163,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
163
152
|
version: '0'
|
|
164
153
|
requirements: []
|
|
165
154
|
rubyforge_project:
|
|
166
|
-
rubygems_version: 2.7.
|
|
155
|
+
rubygems_version: 2.7.9
|
|
167
156
|
signing_key:
|
|
168
157
|
specification_version: 4
|
|
169
158
|
summary: Ruby library for communicating with the Buckaroo Payment Engine 3.0.
|