buckaruby 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +21 -4
- data/.travis.yml +3 -2
- data/CHANGELOG.md +13 -7
- data/Gemfile +3 -3
- data/Gemfile.lock +15 -13
- data/README.md +20 -0
- data/buckaruby.gemspec +1 -1
- data/lib/buckaruby.rb +1 -2
- data/lib/buckaruby/field_mapper.rb +50 -0
- data/lib/buckaruby/gateway.rb +30 -4
- data/lib/buckaruby/operation.rb +1 -0
- data/lib/buckaruby/request.rb +24 -0
- data/lib/buckaruby/response.rb +18 -1
- data/lib/buckaruby/signature.rb +17 -1
- data/lib/buckaruby/version.rb +1 -1
- data/spec/buckaruby/field_mapper_spec.rb +69 -0
- data/spec/buckaruby/gateway_spec.rb +43 -2
- data/spec/buckaruby/signature_spec.rb +6 -0
- data/spec/fixtures/responses/specify_transaction_success.txt +1 -0
- metadata +9 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ab1013d3e02cc89d5b23dd6ae7add4b03b35a4a78074ff7f7e73933eef6ac08
|
4
|
+
data.tar.gz: 5091ec7ec11e9239e883438802f09771fbc1bcc0041408b03bf522462ea96882
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed0d306e8879e68be60de01d0bac9c3f9644ebd64fa80a2d774db697c166b035b31c59edc91b8674fcc8a5fa5d4ca31725331ae03b63e52b2c5615ac6c147a55
|
7
|
+
data.tar.gz: 87274e74e76ab2772420acbf89919d74b1adc5f621ff0f40e077dcc2283f2863d2be53f63da91419e54dd52e863756e6be5e7120819e95b12e230c9b91972b21
|
data/.rubocop.yml
CHANGED
@@ -15,6 +15,17 @@ Gemspec/RequiredRubyVersion:
|
|
15
15
|
Enabled: false
|
16
16
|
|
17
17
|
|
18
|
+
Layout/LineLength:
|
19
|
+
Enabled: false
|
20
|
+
|
21
|
+
|
22
|
+
Lint/RaiseException:
|
23
|
+
Enabled: true
|
24
|
+
|
25
|
+
Lint/StructNewOverride:
|
26
|
+
Enabled: true
|
27
|
+
|
28
|
+
|
18
29
|
Metrics/AbcSize:
|
19
30
|
Max: 30
|
20
31
|
|
@@ -28,9 +39,6 @@ Metrics/ClassLength:
|
|
28
39
|
Metrics/CyclomaticComplexity:
|
29
40
|
Max: 9
|
30
41
|
|
31
|
-
Metrics/LineLength:
|
32
|
-
Enabled: false
|
33
|
-
|
34
42
|
Metrics/MethodLength:
|
35
43
|
Enabled: false
|
36
44
|
|
@@ -52,7 +60,7 @@ RSpec/DescribedClass:
|
|
52
60
|
EnforcedStyle: explicit
|
53
61
|
|
54
62
|
RSpec/ExampleLength:
|
55
|
-
Max:
|
63
|
+
Max: 17
|
56
64
|
|
57
65
|
RSpec/MultipleExpectations:
|
58
66
|
Max: 12
|
@@ -77,6 +85,15 @@ Style/ExpandPathArguments:
|
|
77
85
|
Style/GuardClause:
|
78
86
|
Enabled: false
|
79
87
|
|
88
|
+
Style/HashEachMethods:
|
89
|
+
Enabled: true
|
90
|
+
|
91
|
+
Style/HashTransformKeys:
|
92
|
+
Enabled: true
|
93
|
+
|
94
|
+
Style/HashTransformValues:
|
95
|
+
Enabled: true
|
96
|
+
|
80
97
|
Style/IfUnlessModifier:
|
81
98
|
Enabled: false
|
82
99
|
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,27 +1,33 @@
|
|
1
1
|
# Buckaruby changelog
|
2
2
|
|
3
|
+
## 1.4.0 (2020-04-06)
|
4
|
+
|
5
|
+
- Add `payment_methods` to retrieve all payment methods enabled by Buckaroo and supported by this library.
|
6
|
+
- Add `specify_transaction` to get a specification for setting up a transaction.
|
7
|
+
- Fix calcuating the signature for long responses and indexed fields.
|
8
|
+
|
3
9
|
## 1.3.1 (2019-12-04)
|
4
10
|
|
5
11
|
- Update list of credit card transaction types.
|
6
12
|
|
7
13
|
## 1.3.0 (2019-10-08)
|
8
14
|
|
9
|
-
-
|
15
|
+
- Add payment method American Express.
|
10
16
|
|
11
17
|
## 1.2.0 (2019-08-06)
|
12
18
|
|
13
|
-
-
|
19
|
+
- Add support for sending custom & additional variables with the request.
|
14
20
|
|
15
21
|
## 1.1.1 (2018-11-30)
|
16
22
|
|
17
|
-
-
|
23
|
+
- Add Handelsbanken to the list of iDEAL issuers.
|
18
24
|
|
19
25
|
## 1.1.0 (2018-06-01)
|
20
26
|
|
21
|
-
-
|
22
|
-
-
|
23
|
-
-
|
24
|
-
-
|
27
|
+
- Add payment method iDEAL processing.
|
28
|
+
- Add Moneyou to the list of iDEAL issuers.
|
29
|
+
- Implement refund transaction.
|
30
|
+
- Implement cancel transaction.
|
25
31
|
|
26
32
|
## 1.0.2 (2017-08-25)
|
27
33
|
|
data/Gemfile
CHANGED
@@ -6,7 +6,7 @@ source 'https://rubygems.org'
|
|
6
6
|
gemspec
|
7
7
|
|
8
8
|
group :test do
|
9
|
-
gem 'rubocop', '~> 0.
|
10
|
-
gem 'rubocop-performance', '~> 1.5.
|
11
|
-
gem 'rubocop-rspec', '~> 1.
|
9
|
+
gem 'rubocop', '~> 0.81.0'
|
10
|
+
gem 'rubocop-performance', '~> 1.5.2'
|
11
|
+
gem 'rubocop-rspec', '~> 1.38.1'
|
12
12
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
buckaruby (1.
|
4
|
+
buckaruby (1.4.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -15,11 +15,12 @@ GEM
|
|
15
15
|
hashdiff (1.0.0)
|
16
16
|
jaro_winkler (1.5.4)
|
17
17
|
parallel (1.19.1)
|
18
|
-
parser (2.
|
18
|
+
parser (2.7.0.5)
|
19
19
|
ast (~> 2.4.0)
|
20
20
|
public_suffix (3.1.1)
|
21
21
|
rainbow (3.0.0)
|
22
|
-
rake (
|
22
|
+
rake (12.3.3)
|
23
|
+
rexml (3.2.4)
|
23
24
|
rspec (3.8.0)
|
24
25
|
rspec-core (~> 3.8.0)
|
25
26
|
rspec-expectations (~> 3.8.0)
|
@@ -33,20 +34,21 @@ GEM
|
|
33
34
|
diff-lcs (>= 1.2.0, < 2.0)
|
34
35
|
rspec-support (~> 3.8.0)
|
35
36
|
rspec-support (3.8.2)
|
36
|
-
rubocop (0.
|
37
|
+
rubocop (0.81.0)
|
37
38
|
jaro_winkler (~> 1.5.1)
|
38
39
|
parallel (~> 1.10)
|
39
|
-
parser (>= 2.
|
40
|
+
parser (>= 2.7.0.1)
|
40
41
|
rainbow (>= 2.2.2, < 4.0)
|
42
|
+
rexml
|
41
43
|
ruby-progressbar (~> 1.7)
|
42
|
-
unicode-display_width (>= 1.4.0, <
|
43
|
-
rubocop-performance (1.5.
|
44
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
45
|
+
rubocop-performance (1.5.2)
|
44
46
|
rubocop (>= 0.71.0)
|
45
|
-
rubocop-rspec (1.
|
47
|
+
rubocop-rspec (1.38.1)
|
46
48
|
rubocop (>= 0.68.1)
|
47
49
|
ruby-progressbar (1.10.1)
|
48
50
|
safe_yaml (1.0.5)
|
49
|
-
unicode-display_width (1.
|
51
|
+
unicode-display_width (1.7.0)
|
50
52
|
webmock (2.3.2)
|
51
53
|
addressable (>= 2.3.6)
|
52
54
|
crack (>= 0.3.2)
|
@@ -58,11 +60,11 @@ PLATFORMS
|
|
58
60
|
DEPENDENCIES
|
59
61
|
buckaruby!
|
60
62
|
bundler (~> 1.7)
|
61
|
-
rake (~>
|
63
|
+
rake (~> 12.3)
|
62
64
|
rspec (~> 3.0)
|
63
|
-
rubocop (~> 0.
|
64
|
-
rubocop-performance (~> 1.5.
|
65
|
-
rubocop-rspec (~> 1.
|
65
|
+
rubocop (~> 0.81.0)
|
66
|
+
rubocop-performance (~> 1.5.2)
|
67
|
+
rubocop-rspec (~> 1.38.1)
|
66
68
|
webmock (~> 2.3)
|
67
69
|
|
68
70
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -51,6 +51,14 @@ gateway = Buckaruby::Gateway.new(
|
|
51
51
|
|
52
52
|
You can override the default mode with the parameter `mode`.
|
53
53
|
|
54
|
+
### Payment methods
|
55
|
+
|
56
|
+
To retrieve the payment methods enabled in Buckaroo and supported by this library, you can use the method `payment_methods`. This method will return an array with all payment methods that can be used. See also `Buckaruby::PaymentMethod` for predefined constants.
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
payment_methods = gateway.payment_methods
|
60
|
+
```
|
61
|
+
|
54
62
|
### Start transaction
|
55
63
|
|
56
64
|
To start a new transaction, use the method `setup_transaction`:
|
@@ -203,6 +211,18 @@ puts response.custom[:foo]
|
|
203
211
|
puts response.additional[:myreference]
|
204
212
|
````
|
205
213
|
|
214
|
+
### Transaction request specification
|
215
|
+
|
216
|
+
To retrieve a specification about what needs to be sent with transaction request, you can use the method `specify_transaction`. The parameter `payment_method` is optional. When supplied it will only send the specification for that payment method.
|
217
|
+
|
218
|
+
This request is also used by the `payment_methods` method to determine which services (payment methods) are enabled in Buckaroo.
|
219
|
+
|
220
|
+
```ruby
|
221
|
+
response = gateway.specify_transaction(payment_method: Buckaruby::PaymentMethod::IDEAL)
|
222
|
+
```
|
223
|
+
|
224
|
+
See `Buckaruby::TransactionSpecificationResponse` for more details.
|
225
|
+
|
206
226
|
### Error handling
|
207
227
|
|
208
228
|
When missing or invalid parameters are passed to any method, an `ArgumentError` will be raised.
|
data/buckaruby.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.required_ruby_version = ">= 2.0.0"
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
25
|
-
spec.add_development_dependency "rake", "~>
|
25
|
+
spec.add_development_dependency "rake", "~> 12.3"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
27
27
|
spec.add_development_dependency "webmock", "~> 2.3"
|
28
28
|
end
|
data/lib/buckaruby.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative 'buckaruby/support/case_insensitive_hash'
|
4
|
-
|
5
3
|
require_relative 'buckaruby/action'
|
6
4
|
require_relative 'buckaruby/currency'
|
7
5
|
require_relative 'buckaruby/ideal'
|
@@ -13,6 +11,7 @@ require_relative 'buckaruby/transaction_type'
|
|
13
11
|
|
14
12
|
require_relative 'buckaruby/configuration'
|
15
13
|
require_relative 'buckaruby/exception'
|
14
|
+
require_relative 'buckaruby/field_mapper'
|
16
15
|
require_relative 'buckaruby/gateway'
|
17
16
|
require_relative 'buckaruby/iban'
|
18
17
|
require_relative 'buckaruby/request'
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'support/case_insensitive_hash'
|
4
|
+
|
5
|
+
module Buckaruby
|
6
|
+
# Map NVP fields to hashes and multiple values (with index) to arrays.
|
7
|
+
class FieldMapper
|
8
|
+
def self.map_fields(params, prefix)
|
9
|
+
results = []
|
10
|
+
index = 1
|
11
|
+
|
12
|
+
loop do
|
13
|
+
index_key = "#{prefix}_#{index}_" # brq_services_1_
|
14
|
+
index_length = index_key.split(/_[0-9]*_/).length # 1
|
15
|
+
|
16
|
+
# Get all fields starting with prefix and index.
|
17
|
+
fields = params.select { |key| key.to_s.start_with?(index_key) }
|
18
|
+
|
19
|
+
break if fields.empty?
|
20
|
+
|
21
|
+
result = Support::CaseInsensitiveHash.new
|
22
|
+
|
23
|
+
fields.each do |key, value|
|
24
|
+
splitted_key = key.to_s.split(/_[0-9]*_/) # ["brq_services", "name"]
|
25
|
+
key_length = splitted_key.length # 2
|
26
|
+
new_key = splitted_key[index_length] # name
|
27
|
+
|
28
|
+
if key_length == index_length + 1
|
29
|
+
# Add normal fields to the result.
|
30
|
+
result[new_key] = value
|
31
|
+
else
|
32
|
+
# Recursively map indexed fields.
|
33
|
+
result[new_key] ||= begin
|
34
|
+
new_prefix = [index_key, new_key].join
|
35
|
+
map_fields(fields, new_prefix)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
break if result.empty?
|
41
|
+
|
42
|
+
results << result
|
43
|
+
|
44
|
+
index += 1
|
45
|
+
end
|
46
|
+
|
47
|
+
results
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/buckaruby/gateway.rb
CHANGED
@@ -17,7 +17,21 @@ module Buckaruby
|
|
17
17
|
@logger = config.logger
|
18
18
|
end
|
19
19
|
|
20
|
-
#
|
20
|
+
# Returns the payment methods enabled by Buckaroo and supported by this library.
|
21
|
+
def payment_methods
|
22
|
+
valid_payment_methods = [
|
23
|
+
PaymentMethod::IDEAL, PaymentMethod::IDEAL_PROCESSING, PaymentMethod::VISA, PaymentMethod::MASTER_CARD,
|
24
|
+
PaymentMethod::MAESTRO, PaymentMethod::AMERICAN_EXPRESS, PaymentMethod::SEPA_DIRECT_DEBIT,
|
25
|
+
PaymentMethod::PAYPAL, PaymentMethod::BANCONTACT_MISTER_CASH
|
26
|
+
]
|
27
|
+
|
28
|
+
response = execute_request(:specify_transaction)
|
29
|
+
services = response.services.map { |service| service[:name] }
|
30
|
+
|
31
|
+
services & valid_payment_methods
|
32
|
+
end
|
33
|
+
|
34
|
+
# Get a list with payment issuers (currently only iDEAL).
|
21
35
|
def issuers(payment_method)
|
22
36
|
if payment_method != PaymentMethod::IDEAL && payment_method != PaymentMethod::IDEAL_PROCESSING
|
23
37
|
raise ArgumentError, "Invalid payment method, only iDEAL is supported."
|
@@ -46,6 +60,13 @@ module Buckaruby
|
|
46
60
|
execute_request(:recurrent_transaction, options)
|
47
61
|
end
|
48
62
|
|
63
|
+
# Retrieve the specification for setting up a transaction.
|
64
|
+
def specify_transaction(options = {})
|
65
|
+
@logger.debug("[specify_transaction] options=#{options.inspect}")
|
66
|
+
|
67
|
+
execute_request(:specify_transaction, options)
|
68
|
+
end
|
69
|
+
|
49
70
|
# Checks if a transaction is refundable.
|
50
71
|
def refundable?(options = {})
|
51
72
|
@logger.debug("[refundable?] options=#{options.inspect}")
|
@@ -150,8 +171,9 @@ module Buckaruby
|
|
150
171
|
validate_amount!(options)
|
151
172
|
|
152
173
|
valid_payment_methods = [
|
153
|
-
PaymentMethod::IDEAL, PaymentMethod::IDEAL_PROCESSING, PaymentMethod::VISA, PaymentMethod::MASTER_CARD,
|
154
|
-
PaymentMethod::
|
174
|
+
PaymentMethod::IDEAL, PaymentMethod::IDEAL_PROCESSING, PaymentMethod::VISA, PaymentMethod::MASTER_CARD,
|
175
|
+
PaymentMethod::MAESTRO, PaymentMethod::AMERICAN_EXPRESS, PaymentMethod::SEPA_DIRECT_DEBIT,
|
176
|
+
PaymentMethod::PAYPAL, PaymentMethod::BANCONTACT_MISTER_CASH
|
155
177
|
]
|
156
178
|
validate_payment_method!(options, valid_payment_methods)
|
157
179
|
|
@@ -223,7 +245,7 @@ module Buckaruby
|
|
223
245
|
end
|
224
246
|
|
225
247
|
# Build and execute a request.
|
226
|
-
def execute_request(request_type, options)
|
248
|
+
def execute_request(request_type, options = {})
|
227
249
|
request = build_request(request_type)
|
228
250
|
response = request.execute(options)
|
229
251
|
|
@@ -232,6 +254,8 @@ module Buckaruby
|
|
232
254
|
SetupTransactionResponse.new(response, config)
|
233
255
|
when :recurrent_transaction
|
234
256
|
RecurrentTransactionResponse.new(response, config)
|
257
|
+
when :specify_transaction
|
258
|
+
TransactionSpecificationResponse.new(response, config)
|
235
259
|
when :refund_transaction
|
236
260
|
RefundTransactionResponse.new(response, config)
|
237
261
|
when :refund_info
|
@@ -250,6 +274,8 @@ module Buckaruby
|
|
250
274
|
SetupTransactionRequest.new(config)
|
251
275
|
when :recurrent_transaction
|
252
276
|
RecurrentTransactionRequest.new(config)
|
277
|
+
when :specify_transaction
|
278
|
+
TransactionSpecificationRequest.new(config)
|
253
279
|
when :refund_transaction
|
254
280
|
RefundTransactionRequest.new(config)
|
255
281
|
when :refund_info
|
data/lib/buckaruby/operation.rb
CHANGED
@@ -4,6 +4,7 @@ module Buckaruby
|
|
4
4
|
module Operation
|
5
5
|
TRANSACTION_REQUEST = "TransactionRequest"
|
6
6
|
TRANSACTION_STATUS = "TransactionStatus"
|
7
|
+
TRANSACTION_REQUEST_SPECIFICATION = "TransactionRequestSpecification"
|
7
8
|
REFUND_INFO = "RefundInfo"
|
8
9
|
CANCEL_TRANSACTION = "CancelTransaction"
|
9
10
|
end
|
data/lib/buckaruby/request.rb
CHANGED
@@ -159,6 +159,30 @@ module Buckaruby
|
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
162
|
+
# Request for a creating a transaction specification.
|
163
|
+
class TransactionSpecificationRequest < Request
|
164
|
+
def execute(options)
|
165
|
+
super(options.merge(operation: Operation::TRANSACTION_REQUEST_SPECIFICATION))
|
166
|
+
end
|
167
|
+
|
168
|
+
def build_request_params(options)
|
169
|
+
params = {}
|
170
|
+
|
171
|
+
if options[:payment_method]
|
172
|
+
if options[:payment_method].respond_to?(:join)
|
173
|
+
params[:brq_services] = options[:payment_method].join(",")
|
174
|
+
else
|
175
|
+
params[:brq_services] = options[:payment_method]
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
params[:brq_latestversiononly] = "true"
|
180
|
+
params[:brq_culture] = options[:culture] || Language::DUTCH
|
181
|
+
|
182
|
+
params
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
162
186
|
# Request for a creating a recurrent transaction.
|
163
187
|
class RecurrentTransactionRequest < TransactionRequest
|
164
188
|
def build_transaction_request_params(options)
|
data/lib/buckaruby/response.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'support/case_insensitive_hash'
|
4
|
+
|
3
5
|
require 'cgi'
|
4
6
|
require 'date'
|
5
7
|
|
@@ -83,7 +85,7 @@ module Buckaruby
|
|
83
85
|
end
|
84
86
|
|
85
87
|
def verify_signature!(response, config)
|
86
|
-
if params[:brq_apiresult]
|
88
|
+
if params[:brq_apiresult].nil? || !params[:brq_apiresult].casecmp("fail").zero?
|
87
89
|
sent_signature = params[:brq_signature]
|
88
90
|
generated_signature = Signature.generate_signature(response, config)
|
89
91
|
|
@@ -348,4 +350,19 @@ module Buckaruby
|
|
348
350
|
class CallbackResponse < Response
|
349
351
|
include TransactionResponse
|
350
352
|
end
|
353
|
+
|
354
|
+
# Response when retrieving the specification for a transaction.
|
355
|
+
class TransactionSpecificationResponse < ApiResponse
|
356
|
+
def services
|
357
|
+
@services ||= FieldMapper.map_fields(params, :brq_services)
|
358
|
+
end
|
359
|
+
|
360
|
+
def basic_fields
|
361
|
+
@basic_fields ||= FieldMapper.map_fields(params, :brq_basicfields)
|
362
|
+
end
|
363
|
+
|
364
|
+
def custom_parameters
|
365
|
+
@custom_parameters ||= FieldMapper.map_fields(params, :brq_customparameters)
|
366
|
+
end
|
367
|
+
end
|
351
368
|
end
|
data/lib/buckaruby/signature.rb
CHANGED
@@ -21,9 +21,25 @@ module Buckaruby
|
|
21
21
|
|
22
22
|
def self.generate_signature_string(params, secret)
|
23
23
|
sign_params = params.select { |key, _value| key.to_s.upcase.start_with?("BRQ_", "ADD_", "CUST_") && key.to_s.casecmp("BRQ_SIGNATURE").nonzero? }
|
24
|
-
|
24
|
+
sign_params = order_signature_params(sign_params)
|
25
|
+
|
26
|
+
string = sign_params.map { |param| "#{param[0]}=#{param[1]}" }.join
|
25
27
|
string << secret
|
26
28
|
string
|
27
29
|
end
|
30
|
+
|
31
|
+
# Excerpt from the Buckaroo documentation, chapter 4 'Digital Signature':
|
32
|
+
# In the payment engine, the used lexical sort algorithm uses the following order:
|
33
|
+
# symbols first, then numbers, then case insensitive letters. Also, a shorter string
|
34
|
+
# that is identical to the beginning of a longer string, comes before the longer string.
|
35
|
+
# Take for example the following, comma separated, list which has been sorted:
|
36
|
+
# a_a, a0, a0a, a1a, aaA, aab, aba, aCa
|
37
|
+
CHAR_ORDER = "_01234567890abcdefghijklmnopqrstuvwxyz"
|
38
|
+
|
39
|
+
def self.order_signature_params(params)
|
40
|
+
params.sort_by do |key, _value|
|
41
|
+
key.to_s.downcase.each_char.map { |c| CHAR_ORDER.index(c) }
|
42
|
+
end
|
43
|
+
end
|
28
44
|
end
|
29
45
|
end
|
data/lib/buckaruby/version.rb
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Buckaruby::FieldMapper do
|
6
|
+
describe '.map_fields' do
|
7
|
+
let(:fields) do
|
8
|
+
{
|
9
|
+
brq_services_1_description: "iDEAL",
|
10
|
+
brq_services_1_name: "ideal",
|
11
|
+
brq_services_1_version: "2",
|
12
|
+
brq_services_1_supportedcurrencies_1_code: "EUR",
|
13
|
+
brq_services_1_supportedcurrencies_1_isonumber: "978",
|
14
|
+
brq_services_1_supportedcurrencies_1_name: "Euro",
|
15
|
+
brq_services_2_description: "Visa",
|
16
|
+
brq_services_2_name: "visa",
|
17
|
+
brq_services_2_version: "1",
|
18
|
+
brq_services_2_supportedcurrencies_1_code: "GBP",
|
19
|
+
brq_services_2_supportedcurrencies_1_isonumber: "826",
|
20
|
+
brq_services_2_supportedcurrencies_1_name: "Pond",
|
21
|
+
brq_services_2_supportedcurrencies_2_code: "USD",
|
22
|
+
brq_services_2_supportedcurrencies_2_isonumber: "840",
|
23
|
+
brq_services_2_supportedcurrencies_2_name: "US Dollar"
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'maps NVP fields to arrays and hashes' do
|
28
|
+
services = Buckaruby::FieldMapper.map_fields(fields, :brq_services)
|
29
|
+
expect(services).to be_an_instance_of(Array)
|
30
|
+
expect(services.count).to eq(2)
|
31
|
+
|
32
|
+
ideal = services.first
|
33
|
+
expect(ideal).to be_an_instance_of(Buckaruby::Support::CaseInsensitiveHash)
|
34
|
+
expect(ideal[:description]).to eq("iDEAL")
|
35
|
+
expect(ideal[:name]).to eq("ideal")
|
36
|
+
expect(ideal[:version]).to eq("2")
|
37
|
+
|
38
|
+
visa = services.last
|
39
|
+
expect(visa).to be_an_instance_of(Buckaruby::Support::CaseInsensitiveHash)
|
40
|
+
expect(visa[:description]).to eq("Visa")
|
41
|
+
expect(visa[:name]).to eq("visa")
|
42
|
+
expect(visa[:version]).to eq("1")
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'maps NVP subfields to arrays and hashes' do
|
46
|
+
services = Buckaruby::FieldMapper.map_fields(fields, :brq_services)
|
47
|
+
|
48
|
+
currencies = services.first[:supportedcurrencies]
|
49
|
+
expect(currencies).to be_an_instance_of(Array)
|
50
|
+
expect(currencies.count).to eq(1)
|
51
|
+
|
52
|
+
currency = currencies.first
|
53
|
+
expect(currency).to be_an_instance_of(Buckaruby::Support::CaseInsensitiveHash)
|
54
|
+
expect(currency[:code]).to eq("EUR")
|
55
|
+
expect(currency[:isonumber]).to eq("978")
|
56
|
+
expect(currency[:name]).to eq("Euro")
|
57
|
+
|
58
|
+
currencies = services.last[:supportedcurrencies]
|
59
|
+
expect(currencies).to be_an_instance_of(Array)
|
60
|
+
expect(currencies.count).to eq(2)
|
61
|
+
|
62
|
+
currency = currencies.first
|
63
|
+
expect(currency).to be_an_instance_of(Buckaruby::Support::CaseInsensitiveHash)
|
64
|
+
expect(currency[:code]).to eq("GBP")
|
65
|
+
expect(currency[:isonumber]).to eq("826")
|
66
|
+
expect(currency[:name]).to eq("Pond")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -29,6 +29,17 @@ RSpec.describe Buckaruby::Gateway do
|
|
29
29
|
|
30
30
|
it { expect(subject).to be_an_instance_of(Buckaruby::Gateway) }
|
31
31
|
|
32
|
+
describe '#payment_methods' do
|
33
|
+
before do
|
34
|
+
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequestSpecification").to_return(body: File.read("spec/fixtures/responses/specify_transaction_success.txt"))
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'returns the payment methods enabled by Buckaroo and supported by this library' do
|
38
|
+
payment_methods = subject.payment_methods
|
39
|
+
expect(payment_methods).to eq([Buckaruby::PaymentMethod::IDEAL, Buckaruby::PaymentMethod::VISA])
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
32
43
|
describe '#issuers' do
|
33
44
|
context 'when no or false parameters are passed' do
|
34
45
|
it 'raises an ArgumentError' do
|
@@ -215,7 +226,7 @@ RSpec.describe Buckaruby::Gateway do
|
|
215
226
|
expect(response.custom[:quux]).to eq("42")
|
216
227
|
|
217
228
|
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=
|
229
|
+
.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=8a51fbebb05a3f0ac47d92c509328baa1c7ea265")
|
219
230
|
end
|
220
231
|
end
|
221
232
|
|
@@ -227,7 +238,7 @@ RSpec.describe Buckaruby::Gateway do
|
|
227
238
|
expect(response.additional[:myreference]).to eq("12345")
|
228
239
|
|
229
240
|
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=
|
241
|
+
.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=e34adab910c42df19d7b25aff26a749dc90697ad")
|
231
242
|
end
|
232
243
|
end
|
233
244
|
end
|
@@ -402,6 +413,36 @@ RSpec.describe Buckaruby::Gateway do
|
|
402
413
|
end
|
403
414
|
end
|
404
415
|
|
416
|
+
describe '#specify_transaction' do
|
417
|
+
before do
|
418
|
+
stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequestSpecification").to_return(body: File.read("spec/fixtures/responses/specify_transaction_success.txt"))
|
419
|
+
end
|
420
|
+
|
421
|
+
it 'retrieves the specification for setting up a transaction' do
|
422
|
+
response = subject.specify_transaction
|
423
|
+
expect(response).to be_an_instance_of(Buckaruby::TransactionSpecificationResponse)
|
424
|
+
|
425
|
+
services = response.services
|
426
|
+
expect(services).to be_an_instance_of(Array)
|
427
|
+
expect(services.length).to eq(2)
|
428
|
+
|
429
|
+
service = services.last
|
430
|
+
expect(service).to be_an_instance_of(Buckaruby::Support::CaseInsensitiveHash)
|
431
|
+
expect(service[:name]).to eq(Buckaruby::PaymentMethod::VISA)
|
432
|
+
expect(service[:description]).to eq("Visa")
|
433
|
+
expect(service[:version]).to eq("1")
|
434
|
+
|
435
|
+
currencies = service[:supportedcurrencies]
|
436
|
+
expect(currencies).to be_an_instance_of(Array)
|
437
|
+
expect(currencies.length).to eq(21)
|
438
|
+
|
439
|
+
currency = currencies.last
|
440
|
+
expect(currency).to be_an_instance_of(Buckaruby::Support::CaseInsensitiveHash)
|
441
|
+
expect(currency[:name]).to eq("US Dollar")
|
442
|
+
expect(currency[:code]).to eq(Buckaruby::Currency::US_DOLLAR)
|
443
|
+
end
|
444
|
+
end
|
445
|
+
|
405
446
|
describe '#callback' do
|
406
447
|
it 'raises an exception when parameters are missing' do
|
407
448
|
expect {
|
@@ -33,6 +33,12 @@ RSpec.describe Buckaruby::Signature do
|
|
33
33
|
string = Buckaruby::Signature.generate_signature_string(params, 'secret')
|
34
34
|
expect(string).to eq('brq_testA=FoobarBRQ_TESTB=abcDEFBRQ_TestC=testsecret')
|
35
35
|
end
|
36
|
+
|
37
|
+
it 'sorts symbols first, then numbers, then case insensitive letters' do
|
38
|
+
params = { 'brq_a_a': 'foo', brq_a0: 'foo', brq_a0a: 'foo', brq_a1a: 'foo', brq_aaA: 'foo', brq_aab: 'foo', brq_aba: 'foo', brq_aCa: 'foo' }
|
39
|
+
string = Buckaruby::Signature.generate_signature_string(params, 'secret')
|
40
|
+
expect(string).to eq('brq_a_a=foobrq_a0=foobrq_a0a=foobrq_a1a=foobrq_aaA=foobrq_aab=foobrq_aba=foobrq_aCa=foosecret')
|
41
|
+
end
|
36
42
|
end
|
37
43
|
|
38
44
|
describe 'generate_signature' do
|
@@ -0,0 +1 @@
|
|
1
|
+
BRQ_APIRESULT=Success&BRQ_BASICFIELDS_1_DATATYPE=String&BRQ_BASICFIELDS_1_DESCRIPTION=The+currency+for+the+transaction&BRQ_BASICFIELDS_1_MAXLENGTH=3&BRQ_BASICFIELDS_1_NAME=Currency&BRQ_BASICFIELDS_1_REQUIRED=True&BRQ_BASICFIELDS_10_DATATYPE=String&BRQ_BASICFIELDS_10_DESCRIPTION=The+url+in+the+webshop+where+the+customer+should+return+after+the+transaction+results+in+an+error.&BRQ_BASICFIELDS_10_MAXLENGTH=2048&BRQ_BASICFIELDS_10_NAME=ReturnURLError&BRQ_BASICFIELDS_10_REQUIRED=False&BRQ_BASICFIELDS_11_DATATYPE=String&BRQ_BASICFIELDS_11_DESCRIPTION=The+url+in+the+webshop+where+the+customer+should+return+after+the+transaction+is+cancelled.&BRQ_BASICFIELDS_11_MAXLENGTH=2048&BRQ_BASICFIELDS_11_NAME=ReturnURLReject&BRQ_BASICFIELDS_11_REQUIRED=False&BRQ_BASICFIELDS_12_DATATYPE=String&BRQ_BASICFIELDS_12_DESCRIPTION=The+transaction+key+of+the+original+transaction+for+which+this+transaction+request+is+a+follow+up.+For+example+when+requesting+a+Refund+or+doing+a+recurring+charge.&BRQ_BASICFIELDS_12_MAXLENGTH=32&BRQ_BASICFIELDS_12_NAME=OriginalTransactionKey&BRQ_BASICFIELDS_12_REQUIRED=False&BRQ_BASICFIELDS_13_DATATYPE=Boolean&BRQ_BASICFIELDS_13_DESCRIPTION=Specifies+if+the+current+transaction+is+the+start+of+a+recurrent+payment+sequence.+The+default+is+false.&BRQ_BASICFIELDS_13_MAXLENGTH=1&BRQ_BASICFIELDS_13_NAME=StartRecurrent&BRQ_BASICFIELDS_13_REQUIRED=False&BRQ_BASICFIELDS_14_DATATYPE=String&BRQ_BASICFIELDS_14_DESCRIPTION=Specifies+if+a+redirecturl+to+a+payment+form+will+be+returned+to+which+a+customer+should+be+sent+if+no+paymentmethod+is+selected+or+if+any+required+parameter+which+the+customer+may+provide+is+missing+or+incorrect.&BRQ_BASICFIELDS_14_LIST=Single&BRQ_BASICFIELDS_14_LISTITEMDESCRIPTION_1_DESCRIPTION=No+automatic+redirect+(Default)&BRQ_BASICFIELDS_14_LISTITEMDESCRIPTION_1_VALUE=No&BRQ_BASICFIELDS_14_LISTITEMDESCRIPTION_2_DESCRIPTION=Redirect+to+HTML+gateway&BRQ_BASICFIELDS_14_LISTITEMDESCRIPTION_2_VALUE=RedirectToHTML&BRQ_BASICFIELDS_14_NAME=ContinueOnIncomplete&BRQ_BASICFIELDS_14_REQUIRED=False&BRQ_BASICFIELDS_15_DATATYPE=String&BRQ_BASICFIELDS_15_DESCRIPTION=If+no+primary+service+is+provided+and+ContinueOnIncomplete+is+set%2c+this+list+of+comma+separated+servicescodes+can+be+used+to+limit+the+number+of+services+from+which+the+customer+may+choose+once+he+is+redirected+to+the+payment+form.+This+field+is+optional+and+when+empty+or+missing%2c+the+customer+may+choose+any+of+the+available+services.&BRQ_BASICFIELDS_15_NAME=ServicesSelectableByClient&BRQ_BASICFIELDS_15_REQUIRED=False&BRQ_BASICFIELDS_16_DATATYPE=String&BRQ_BASICFIELDS_16_DESCRIPTION=The+url+in+the+webshop+where+the+push+messages+for+this+transaction+should+be+delivered.&BRQ_BASICFIELDS_16_MAXLENGTH=2048&BRQ_BASICFIELDS_16_NAME=PushURL&BRQ_BASICFIELDS_16_REQUIRED=False&BRQ_BASICFIELDS_17_DATATYPE=String&BRQ_BASICFIELDS_17_DESCRIPTION=The+url+in+the+webshop+where+the+push+messages+for+this+transaction+should+be+delivered+for+failure+statuses.&BRQ_BASICFIELDS_17_MAXLENGTH=2048&BRQ_BASICFIELDS_17_NAME=PushURLFailure&BRQ_BASICFIELDS_17_REQUIRED=False&BRQ_BASICFIELDS_18_DATATYPE=String&BRQ_BASICFIELDS_18_DESCRIPTION=The+browser+user+agent+of+the+consumer.&BRQ_BASICFIELDS_18_NAME=ClientUserAgent&BRQ_BASICFIELDS_18_REQUIRED=False&BRQ_BASICFIELDS_2_DATATYPE=Decimal&BRQ_BASICFIELDS_2_DESCRIPTION=The+transaction+debit+amount+(Either+this+or+AmountCredit+is+required)&BRQ_BASICFIELDS_2_NAME=AmountDebit&BRQ_BASICFIELDS_2_REQUIRED=False&BRQ_BASICFIELDS_3_DATATYPE=Decimal&BRQ_BASICFIELDS_3_DESCRIPTION=The+transaction+credit+amount+(Either+this+or+AmountDebit+is+required)&BRQ_BASICFIELDS_3_NAME=AmountCredit&BRQ_BASICFIELDS_3_REQUIRED=False&BRQ_BASICFIELDS_4_DATATYPE=String&BRQ_BASICFIELDS_4_DESCRIPTION=The+invoice+number+for+the+transaction&BRQ_BASICFIELDS_4_MAXLENGTH=100&BRQ_BASICFIELDS_4_NAME=Invoice&BRQ_BASICFIELDS_4_REQUIRED=False&BRQ_BASICFIELDS_5_DATATYPE=String&BRQ_BASICFIELDS_5_DESCRIPTION=The+order+number+for+the+transaction&BRQ_BASICFIELDS_5_MAXLENGTH=256&BRQ_BASICFIELDS_5_NAME=Order&BRQ_BASICFIELDS_5_REQUIRED=False&BRQ_BASICFIELDS_6_DATATYPE=String&BRQ_BASICFIELDS_6_DESCRIPTION=The+description+for+the+transaction&BRQ_BASICFIELDS_6_MAXLENGTH=100&BRQ_BASICFIELDS_6_NAME=Description&BRQ_BASICFIELDS_6_REQUIRED=False&BRQ_BASICFIELDS_7_DATATYPE=String&BRQ_BASICFIELDS_7_DESCRIPTION=The+IP+address+of+the+customer&BRQ_BASICFIELDS_7_MAXLENGTH=39&BRQ_BASICFIELDS_7_NAME=ClientIP&BRQ_BASICFIELDS_7_REQUIRED=False&BRQ_BASICFIELDS_8_DATATYPE=String&BRQ_BASICFIELDS_8_DESCRIPTION=The+url+in+the+webshop+where+the+customer+should+return+if+the+transaction+requires+the+customer+to+be+sent+to+an+external+website.&BRQ_BASICFIELDS_8_MAXLENGTH=2048&BRQ_BASICFIELDS_8_NAME=ReturnURL&BRQ_BASICFIELDS_8_REQUIRED=False&BRQ_BASICFIELDS_9_DATATYPE=String&BRQ_BASICFIELDS_9_DESCRIPTION=The+url+in+the+webshop+where+the+customer+should+return+after+the+transaction+fails.&BRQ_BASICFIELDS_9_MAXLENGTH=2048&BRQ_BASICFIELDS_9_NAME=ReturnURLCancel&BRQ_BASICFIELDS_9_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_DEFAULT=True&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_DESCRIPTION=Pay&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_NAME=Pay&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_DESCRIPTION=Kies+hier+uw+bank.+In+de+volgende+stap+van+het+betaalproces+wordt+u+direct+naar+de+website+van+deze+bank+gestuurd.+Houd+uw+inloggegevens+daarom+bij+de+hand.&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_DISPLAYNAME=Uw+bank&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_GLOBAL=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LIST=Single&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_1_DESCRIPTION=ABN+AMRO&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_1_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_1_VALUE=ABNANL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_10_DESCRIPTION=SNS&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_10_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_10_VALUE=SNSBNL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_11_DESCRIPTION=Triodos+Bank&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_11_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_11_VALUE=TRIONL2U&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_12_DESCRIPTION=Van+Lanschot&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_12_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_12_VALUE=FVLBNL22&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_2_DESCRIPTION=ASN+Bank&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_2_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_2_VALUE=ASNBNL21&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_3_DESCRIPTION=bunq&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_3_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_3_VALUE=BUNQNL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_4_DESCRIPTION=Handelsbanken&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_4_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_4_VALUE=HANDNL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_5_DESCRIPTION=ING&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_5_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_5_VALUE=INGBNL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_6_DESCRIPTION=Knab&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_6_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_6_VALUE=KNABNL2H&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_7_DESCRIPTION=Moneyou&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_7_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_7_VALUE=MOYONL21&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_8_DESCRIPTION=Rabobank&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_8_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_8_VALUE=RABONL2U&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_9_DESCRIPTION=RegioBank&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_9_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_9_VALUE=RBRBNL21&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_NAME=issuer&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_REQUIRED=True&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_DISPLAYNAME=BIC-code&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_NAME=consumerBIC&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_DISPLAYNAME=Naam+rekeninghouder&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_MAXLENGTH=255&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_NAME=consumerName&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_DISPLAYNAME=Issuer+(bank)&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_MAXLENGTH=255&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_NAME=consumerIssuer&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_4_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_4_DISPLAYNAME=IBAN-nummer&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_4_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_4_NAME=consumerIBAN&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_4_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_1_TYPE=Primary&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_DEFAULT=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_DESCRIPTION=Refund&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_NAME=Refund&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_1_DISPLAYNAME=Naam+rekeninghouder&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_1_GLOBAL=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_1_NAME=customeraccountname&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_2_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_2_DISPLAYNAME=BIC-code&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_2_GLOBAL=True&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_2_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_2_NAME=customerbic&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_2_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_3_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_3_DISPLAYNAME=IBAN-nummer&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_3_GLOBAL=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_3_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_3_NAME=customeriban&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_REQUESTPARAMETERS_3_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_2_TYPE=Primary&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_DEFAULT=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_DESCRIPTION=PayRemainder&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_NAME=PayRemainder&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_DESCRIPTION=Kies+hier+uw+bank.+In+de+volgende+stap+van+het+betaalproces+wordt+u+direct+naar+de+website+van+deze+bank+gestuurd.+Houd+uw+inloggegevens+daarom+bij+de+hand.&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_DISPLAYNAME=Uw+bank&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_GLOBAL=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LIST=Single&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_1_DESCRIPTION=ABN+AMRO&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_1_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_1_VALUE=ABNANL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_10_DESCRIPTION=SNS&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_10_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_10_VALUE=SNSBNL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_11_DESCRIPTION=Triodos+Bank&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_11_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_11_VALUE=TRIONL2U&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_12_DESCRIPTION=Van+Lanschot&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_12_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_12_VALUE=FVLBNL22&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_2_DESCRIPTION=ASN+Bank&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_2_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_2_VALUE=ASNBNL21&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_3_DESCRIPTION=bunq&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_3_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_3_VALUE=BUNQNL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_4_DESCRIPTION=Handelsbanken&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_4_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_4_VALUE=HANDNL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_5_DESCRIPTION=ING&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_5_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_5_VALUE=INGBNL2A&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_6_DESCRIPTION=Knab&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_6_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_6_VALUE=KNABNL2H&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_7_DESCRIPTION=Moneyou&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_7_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_7_VALUE=MOYONL21&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_8_DESCRIPTION=Rabobank&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_8_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_8_VALUE=RABONL2U&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_9_DESCRIPTION=RegioBank&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_9_GROUPNAME=Nederland&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_LISTITEMDESCRIPTION_9_VALUE=RBRBNL21&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_NAME=issuer&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_REQUIRED=True&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_DISPLAYNAME=Issuer+(bank)&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_MAXLENGTH=255&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_NAME=consumerIssuer&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_DISPLAYNAME=IBAN-nummer&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_NAME=consumerIBAN&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_DISPLAYNAME=BIC-code&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_NAME=consumerBIC&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_4_DATATYPE=String&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_4_DISPLAYNAME=Naam+rekeninghouder&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_4_MAXLENGTH=255&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_4_MAXOCCURS=1&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_4_NAME=consumerName&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_4_REQUIRED=False&BRQ_SERVICES_1_ACTIONDESCRIPTION_3_TYPE=Primary&BRQ_SERVICES_1_DESCRIPTION=iDEAL&BRQ_SERVICES_1_NAME=ideal&BRQ_SERVICES_1_SUPPORTEDCURRENCIES_1_CODE=EUR&BRQ_SERVICES_1_SUPPORTEDCURRENCIES_1_ISONUMBER=978&BRQ_SERVICES_1_SUPPORTEDCURRENCIES_1_NAME=Euro&BRQ_SERVICES_1_VERSION=2&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_DEFAULT=True&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_DESCRIPTION=Pay&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_NAME=Pay&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_DESCRIPTION=%5bresource+key+not+found+or+empty+value%5d&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_DISPLAYNAME=Klantnummer&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_GLOBAL=True&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_NAME=CustomerCode&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_REQUESTPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_DISPLAYNAME=Laatste+vier+cijfers+van+kaartnummer&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_MAXLENGTH=4&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_NAME=CardNumberEnding&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_DISPLAYNAME=3DS-versie&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_NAME=ThreeDsVersion&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_2_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_DATATYPE=ExpiryDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_DISPLAYNAME=Vervaldatum&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_NAME=CardExpirationDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_RESPONSEPARAMETERS_3_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_1_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_DESCRIPTION=PayWithSecurityCode&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_NAME=PayWithSecurityCode&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_REQUESTPARAMETERS_1_DISPLAYNAME=Versleutelde+beveiliginscode&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_REQUESTPARAMETERS_1_GLOBAL=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_REQUESTPARAMETERS_1_NAME=EncryptedSecurityCode&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_REQUESTPARAMETERS_1_REQUIRED=True&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_RESPONSEPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_RESPONSEPARAMETERS_1_DISPLAYNAME=3DS-versie&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_RESPONSEPARAMETERS_1_NAME=ThreeDsVersion&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_10_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_DESCRIPTION=AuthorizeWithSecurityCode&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_NAME=AuthorizeWithSecurityCode&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_REQUESTPARAMETERS_1_DISPLAYNAME=Versleutelde+beveiliginscode&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_REQUESTPARAMETERS_1_GLOBAL=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_REQUESTPARAMETERS_1_NAME=EncryptedSecurityCode&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_REQUESTPARAMETERS_1_REQUIRED=True&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_RESPONSEPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_RESPONSEPARAMETERS_1_DISPLAYNAME=3DS-versie&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_RESPONSEPARAMETERS_1_NAME=ThreeDsVersion&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_11_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_2_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_2_DESCRIPTION=Refund&BRQ_SERVICES_2_ACTIONDESCRIPTION_2_NAME=Refund&BRQ_SERVICES_2_ACTIONDESCRIPTION_2_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_DESCRIPTION=Authorize&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_NAME=Authorize&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_DESCRIPTION=%5bresource+key+not+found+or+empty+value%5d&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_DISPLAYNAME=Klantnummer&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_GLOBAL=True&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_NAME=CustomerCode&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_REQUESTPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_DATATYPE=ExpiryDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_DISPLAYNAME=Vervaldatum&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_NAME=CardExpirationDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_DISPLAYNAME=Laatste+vier+cijfers+van+kaartnummer&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_MAXLENGTH=4&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_NAME=CardNumberEnding&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_2_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_DISPLAYNAME=3DS-versie&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_NAME=ThreeDsVersion&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_RESPONSEPARAMETERS_3_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_3_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_DESCRIPTION=Capture&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_NAME=Capture&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_1_DISPLAYNAME=Laatste+vier+cijfers+van+kaartnummer&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_1_MAXLENGTH=4&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_1_NAME=CardNumberEnding&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_2_DATATYPE=ExpiryDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_2_DISPLAYNAME=Vervaldatum&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_2_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_2_NAME=CardExpirationDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_RESPONSEPARAMETERS_2_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_4_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_5_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_5_DESCRIPTION=CancelAuthorize&BRQ_SERVICES_2_ACTIONDESCRIPTION_5_NAME=CancelAuthorize&BRQ_SERVICES_2_ACTIONDESCRIPTION_5_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_DESCRIPTION=PayRecurrent&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_NAME=PayRecurrent&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_1_DATATYPE=ExpiryDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_1_DISPLAYNAME=Vervaldatum&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_1_NAME=CardExpirationDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_2_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_2_DISPLAYNAME=Laatste+vier+cijfers+van+kaartnummer&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_2_MAXLENGTH=4&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_2_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_2_NAME=CardNumberEnding&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_RESPONSEPARAMETERS_2_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_6_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_DESCRIPTION=PayRemainder&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_NAME=PayRemainder&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_REQUESTPARAMETERS_1_DESCRIPTION=%5bresource+key+not+found+or+empty+value%5d&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_REQUESTPARAMETERS_1_DISPLAYNAME=Klantnummer&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_REQUESTPARAMETERS_1_GLOBAL=True&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_REQUESTPARAMETERS_1_NAME=CustomerCode&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_REQUESTPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_1_DATATYPE=ExpiryDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_1_DISPLAYNAME=Vervaldatum&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_1_NAME=CardExpirationDate&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_2_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_2_DISPLAYNAME=Laatste+vier+cijfers+van+kaartnummer&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_2_MAXLENGTH=4&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_2_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_2_NAME=CardNumberEnding&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_RESPONSEPARAMETERS_2_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_7_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_DESCRIPTION=PayEncrypted&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_NAME=PayEncrypted&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_REQUESTPARAMETERS_1_DISPLAYNAME=%5bresource+key+not+found+or+empty+value%5d&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_REQUESTPARAMETERS_1_GLOBAL=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_REQUESTPARAMETERS_1_NAME=EncryptedCardData&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_REQUESTPARAMETERS_1_REQUIRED=True&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_RESPONSEPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_RESPONSEPARAMETERS_1_DISPLAYNAME=3DS-versie&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_RESPONSEPARAMETERS_1_NAME=ThreeDsVersion&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_8_TYPE=Primary&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_DEFAULT=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_DESCRIPTION=AuthorizeEncrypted&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_NAME=AuthorizeEncrypted&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_REQUESTPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_REQUESTPARAMETERS_1_DISPLAYNAME=%5bresource+key+not+found+or+empty+value%5d&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_REQUESTPARAMETERS_1_GLOBAL=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_REQUESTPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_REQUESTPARAMETERS_1_NAME=EncryptedCardData&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_REQUESTPARAMETERS_1_REQUIRED=True&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_RESPONSEPARAMETERS_1_DATATYPE=String&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_RESPONSEPARAMETERS_1_DISPLAYNAME=3DS-versie&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_RESPONSEPARAMETERS_1_MAXOCCURS=1&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_RESPONSEPARAMETERS_1_NAME=ThreeDsVersion&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_RESPONSEPARAMETERS_1_REQUIRED=False&BRQ_SERVICES_2_ACTIONDESCRIPTION_9_TYPE=Primary&BRQ_SERVICES_2_DESCRIPTION=Visa&BRQ_SERVICES_2_NAME=visa&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_1_CODE=ARS&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_1_ISONUMBER=32&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_1_NAME=Argentijnse+Peso&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_10_CODE=GBP&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_10_ISONUMBER=826&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_10_NAME=Pond&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_11_CODE=HRK&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_11_ISONUMBER=191&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_11_NAME=Kroatische+Kuna&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_12_CODE=LTL&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_12_ISONUMBER=440&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_12_NAME=Litouwse+Litas&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_13_CODE=LVL&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_13_ISONUMBER=428&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_13_NAME=Letse+Lats&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_14_CODE=MXN&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_14_ISONUMBER=484&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_14_NAME=Mexicaanse+Peso&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_15_CODE=NOK&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_15_ISONUMBER=578&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_15_NAME=Noorse+Kronen&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_16_CODE=NZD&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_16_ISONUMBER=554&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_16_NAME=Nieuw-Zeelandse+Dollar&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_17_CODE=PLN&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_17_ISONUMBER=985&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_17_NAME=Zloty&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_18_CODE=RON&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_18_ISONUMBER=946&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_18_NAME=Leu&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_19_CODE=SEK&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_19_ISONUMBER=752&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_19_NAME=Zweedse+Kronen&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_2_CODE=AUD&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_2_ISONUMBER=36&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_2_NAME=Australische+Dollar&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_20_CODE=TRY&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_20_ISONUMBER=949&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_20_NAME=Turkse+Lira&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_21_CODE=USD&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_21_ISONUMBER=840&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_21_NAME=US+Dollar&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_3_CODE=BRL&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_3_ISONUMBER=986&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_3_NAME=Braziliaanse+Real&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_4_CODE=CAD&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_4_ISONUMBER=124&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_4_NAME=Canadese+Dollar&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_5_CODE=CHF&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_5_ISONUMBER=756&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_5_NAME=Zwitserse+Franc&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_6_CODE=CNY&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_6_ISONUMBER=156&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_6_NAME=Yuan+Renminbi&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_7_CODE=CZK&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_7_ISONUMBER=203&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_7_NAME=Tsjechische+kroon&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_8_CODE=DKK&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_8_ISONUMBER=208&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_8_NAME=Deense+Kronen&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_9_CODE=EUR&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_9_ISONUMBER=978&BRQ_SERVICES_2_SUPPORTEDCURRENCIES_9_NAME=Euro&BRQ_SERVICES_2_VERSION=1&BRQ_SIGNATURE=3c26f42e2c661a72909ca7adf4077a467f9f598a
|
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.4.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: 2020-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '12.3'
|
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
|
-
version: '
|
40
|
+
version: '12.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- lib/buckaruby/configuration.rb
|
90
90
|
- lib/buckaruby/currency.rb
|
91
91
|
- lib/buckaruby/exception.rb
|
92
|
+
- lib/buckaruby/field_mapper.rb
|
92
93
|
- lib/buckaruby/gateway.rb
|
93
94
|
- lib/buckaruby/iban.rb
|
94
95
|
- lib/buckaruby/ideal.rb
|
@@ -103,6 +104,7 @@ files:
|
|
103
104
|
- lib/buckaruby/transaction_type.rb
|
104
105
|
- lib/buckaruby/version.rb
|
105
106
|
- spec/buckaruby/configuration_spec.rb
|
107
|
+
- spec/buckaruby/field_mapper_spec.rb
|
106
108
|
- spec/buckaruby/gateway_spec.rb
|
107
109
|
- spec/buckaruby/iban_spec.rb
|
108
110
|
- spec/buckaruby/signature_spec.rb
|
@@ -131,6 +133,7 @@ files:
|
|
131
133
|
- spec/fixtures/responses/refund_info_success.txt
|
132
134
|
- spec/fixtures/responses/refund_transaction_success.txt
|
133
135
|
- spec/fixtures/responses/setup_transaction_success.txt
|
136
|
+
- spec/fixtures/responses/specify_transaction_success.txt
|
134
137
|
- spec/fixtures/responses/status_cancellable.txt
|
135
138
|
- spec/fixtures/responses/status_noncancellable.txt
|
136
139
|
- spec/fixtures/responses/status_success.txt
|
@@ -160,6 +163,7 @@ specification_version: 4
|
|
160
163
|
summary: Ruby library for communicating with the Buckaroo Payment Engine 3.0.
|
161
164
|
test_files:
|
162
165
|
- spec/buckaruby/configuration_spec.rb
|
166
|
+
- spec/buckaruby/field_mapper_spec.rb
|
163
167
|
- spec/buckaruby/gateway_spec.rb
|
164
168
|
- spec/buckaruby/iban_spec.rb
|
165
169
|
- spec/buckaruby/signature_spec.rb
|
@@ -188,6 +192,7 @@ test_files:
|
|
188
192
|
- spec/fixtures/responses/refund_info_success.txt
|
189
193
|
- spec/fixtures/responses/refund_transaction_success.txt
|
190
194
|
- spec/fixtures/responses/setup_transaction_success.txt
|
195
|
+
- spec/fixtures/responses/specify_transaction_success.txt
|
191
196
|
- spec/fixtures/responses/status_cancellable.txt
|
192
197
|
- spec/fixtures/responses/status_noncancellable.txt
|
193
198
|
- spec/fixtures/responses/status_success.txt
|