buckaruby 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ab1013d3e02cc89d5b23dd6ae7add4b03b35a4a78074ff7f7e73933eef6ac08
4
- data.tar.gz: 5091ec7ec11e9239e883438802f09771fbc1bcc0041408b03bf522462ea96882
3
+ metadata.gz: '0919fe881e55079692ccd64dc45cae08ce54073ec33e2176b0bbfada27a333de'
4
+ data.tar.gz: b4b3a163d7365c76191d6b7988d82a40f50686adb318dac85f37f2baca9cae10
5
5
  SHA512:
6
- metadata.gz: ed0d306e8879e68be60de01d0bac9c3f9644ebd64fa80a2d774db697c166b035b31c59edc91b8674fcc8a5fa5d4ca31725331ae03b63e52b2c5615ac6c147a55
7
- data.tar.gz: 87274e74e76ab2772420acbf89919d74b1adc5f621ff0f40e077dcc2283f2863d2be53f63da91419e54dd52e863756e6be5e7120819e95b12e230c9b91972b21
6
+ metadata.gz: f9d4e71c901fccf8fcedc932e1c7c7e0086dffad4d6611dfc45343a0b62f5ce9c2f8bff764654be3e56006baccb78225fb97e03b1bb53c86b5f1bb1bc7839120
7
+ data.tar.gz: 5a54bc947866b1973a72023dcf3092850df0d9379b03eda9a3f5e4922f93418cae8be615f03d66804c9a6ea554bb110164ca59d7a57dd549b9705b1335e30b48
@@ -5,8 +5,7 @@ before_install:
5
5
  - gem update --system
6
6
  - gem install bundler -v '< 2'
7
7
  rvm:
8
- - 2.3.8
9
- - 2.4.9
8
+ - 2.4.10
10
9
  - 2.5.8
11
10
  - 2.6.6
12
- - 2.7.1
11
+ - 2.7.2
@@ -1,10 +1,14 @@
1
1
  # Buckaruby changelog
2
2
 
3
+ ## 1.5.0 (2020-11-17)
4
+
5
+ - Add payment method Sofort.
6
+
3
7
  ## 1.4.0 (2020-04-06)
4
8
 
5
9
  - Add `payment_methods` to retrieve all payment methods enabled by Buckaroo and supported by this library.
6
10
  - Add `specify_transaction` to get a specification for setting up a transaction.
7
- - Fix calcuating the signature for long responses and indexed fields.
11
+ - Fix calculating the signature for long responses and indexed fields.
8
12
 
9
13
  ## 1.3.1 (2019-12-04)
10
14
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- buckaruby (1.4.0)
4
+ buckaruby (1.5.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -11,7 +11,7 @@ GEM
11
11
  ast (2.4.0)
12
12
  crack (0.4.3)
13
13
  safe_yaml (~> 1.0.0)
14
- diff-lcs (1.3)
14
+ diff-lcs (1.4.4)
15
15
  hashdiff (1.0.0)
16
16
  jaro_winkler (1.5.4)
17
17
  parallel (1.19.1)
@@ -21,19 +21,19 @@ GEM
21
21
  rainbow (3.0.0)
22
22
  rake (12.3.3)
23
23
  rexml (3.2.4)
24
- rspec (3.8.0)
25
- rspec-core (~> 3.8.0)
26
- rspec-expectations (~> 3.8.0)
27
- rspec-mocks (~> 3.8.0)
28
- rspec-core (3.8.2)
29
- rspec-support (~> 3.8.0)
30
- rspec-expectations (3.8.4)
24
+ rspec (3.10.0)
25
+ rspec-core (~> 3.10.0)
26
+ rspec-expectations (~> 3.10.0)
27
+ rspec-mocks (~> 3.10.0)
28
+ rspec-core (3.10.0)
29
+ rspec-support (~> 3.10.0)
30
+ rspec-expectations (3.10.0)
31
31
  diff-lcs (>= 1.2.0, < 2.0)
32
- rspec-support (~> 3.8.0)
33
- rspec-mocks (3.8.1)
32
+ rspec-support (~> 3.10.0)
33
+ rspec-mocks (3.10.0)
34
34
  diff-lcs (>= 1.2.0, < 2.0)
35
- rspec-support (~> 3.8.0)
36
- rspec-support (3.8.2)
35
+ rspec-support (~> 3.10.0)
36
+ rspec-support (3.10.0)
37
37
  rubocop (0.81.0)
38
38
  jaro_winkler (~> 1.5.1)
39
39
  parallel (~> 1.10)
@@ -4,8 +4,10 @@ require_relative 'support/case_insensitive_hash'
4
4
 
5
5
  module Buckaruby
6
6
  # Map NVP fields to hashes and multiple values (with index) to arrays.
7
- class FieldMapper
8
- def self.map_fields(params, prefix)
7
+ module FieldMapper
8
+ module_function
9
+
10
+ def map_fields(params, prefix)
9
11
  results = []
10
12
  index = 1
11
13
 
@@ -22,7 +22,7 @@ module Buckaruby
22
22
  valid_payment_methods = [
23
23
  PaymentMethod::IDEAL, PaymentMethod::IDEAL_PROCESSING, PaymentMethod::VISA, PaymentMethod::MASTER_CARD,
24
24
  PaymentMethod::MAESTRO, PaymentMethod::AMERICAN_EXPRESS, PaymentMethod::SEPA_DIRECT_DEBIT,
25
- PaymentMethod::PAYPAL, PaymentMethod::BANCONTACT_MISTER_CASH
25
+ PaymentMethod::PAYPAL, PaymentMethod::BANCONTACT_MISTER_CASH, PaymentMethod::SOFORT
26
26
  ]
27
27
 
28
28
  response = execute_request(:specify_transaction)
@@ -173,7 +173,7 @@ module Buckaruby
173
173
  valid_payment_methods = [
174
174
  PaymentMethod::IDEAL, PaymentMethod::IDEAL_PROCESSING, PaymentMethod::VISA, PaymentMethod::MASTER_CARD,
175
175
  PaymentMethod::MAESTRO, PaymentMethod::AMERICAN_EXPRESS, PaymentMethod::SEPA_DIRECT_DEBIT,
176
- PaymentMethod::PAYPAL, PaymentMethod::BANCONTACT_MISTER_CASH
176
+ PaymentMethod::PAYPAL, PaymentMethod::BANCONTACT_MISTER_CASH, PaymentMethod::SOFORT
177
177
  ]
178
178
  validate_payment_method!(options, valid_payment_methods)
179
179
 
@@ -2,8 +2,10 @@
2
2
 
3
3
  module Buckaruby
4
4
  # Helper for calculating the IBAN for a given account number, bank code and country code.
5
- class Iban
6
- def self.calculate_iban(account_number, bank_code, country_code = "NL")
5
+ module Iban
6
+ module_function
7
+
8
+ def calculate_iban(account_number, bank_code, country_code = "NL")
7
9
  if account_number.nil? || account_number.to_s.empty?
8
10
  raise ArgumentError, "Invalid account number"
9
11
  end
@@ -8,6 +8,7 @@ module Buckaruby
8
8
  SEPA_DIRECT_DEBIT = "sepadirectdebit"
9
9
  PAYPAL = "paypal"
10
10
  BANCONTACT_MISTER_CASH = "bancontactmrcash"
11
+ SOFORT = "sofortueberweisung"
11
12
  TRANSFER = "transfer"
12
13
 
13
14
  # Credit cards
@@ -22,19 +22,7 @@ module Buckaruby
22
22
  end
23
23
 
24
24
  def status
25
- # See http://support.buckaroo.nl/index.php/Statuscodes
26
- case params[:brq_statuscode]
27
- when '190'
28
- TransactionStatus::SUCCESS
29
- when '490', '491', '492'
30
- TransactionStatus::FAILED
31
- when '690'
32
- TransactionStatus::REJECTED
33
- when '790', '791', '792', '793'
34
- TransactionStatus::PENDING
35
- when '890', '891'
36
- TransactionStatus::CANCELLED
37
- end
25
+ TransactionStatus.parse(params[:brq_statuscode])
38
26
  end
39
27
 
40
28
  def timestamp
@@ -85,7 +73,7 @@ module Buckaruby
85
73
  end
86
74
 
87
75
  def verify_signature!(response, config)
88
- if params[:brq_apiresult].nil? || !params[:brq_apiresult].casecmp("fail").zero?
76
+ if params[:brq_apiresult].nil? || params[:brq_apiresult].casecmp("fail") != 0
89
77
  sent_signature = params[:brq_signature]
90
78
  generated_signature = Signature.generate_signature(response, config)
91
79
 
@@ -176,76 +164,7 @@ module Buckaruby
176
164
  end
177
165
 
178
166
  def transaction_type
179
- if params[:brq_transaction_type] && !params[:brq_transaction_type].empty?
180
- # See http://support.buckaroo.nl/index.php/Transactietypes
181
- case params[:brq_transaction_type]
182
- when 'C021', 'V021', # iDEAL
183
- 'C002', 'C004', 'C005', # (SEPA) Direct Debit
184
- 'V010', 'V014', # PayPal
185
- 'C090', 'V090', # Bancontact
186
- 'C001', # Transfer
187
-
188
- 'C044', 'C192', 'C283', 'C293', 'C318', 'C345',
189
- 'C880', 'C963', 'V002', 'V032', 'V038', 'V044',
190
- 'V192', 'V283', 'V293', 'V313', 'V318', 'V345',
191
- 'V696', # Visa
192
-
193
- 'C043', 'C089', 'C273', 'C303', 'C328', 'C355',
194
- 'C876', 'C969', 'V001', 'V031', 'V037', 'V043',
195
- 'V089', 'V273', 'V303', 'V328', 'V355', 'V702', # MasterCard
196
-
197
- 'C046', 'C251', 'C288', 'C308', 'C333', 'C872',
198
- 'C972', 'V034', 'V040', 'V046', 'V094', 'V245',
199
- 'V288', 'V308', 'V333', 'V705', # Maestro
200
-
201
- 'V003', 'V030', 'V036', 'V042' # American Express
202
-
203
- # Check the recurring flag to detect a normal or recurring transaction.
204
- if params[:brq_recurring] && params[:brq_recurring].casecmp("true").zero?
205
- TransactionType::PAYMENT_RECURRENT
206
- else
207
- TransactionType::PAYMENT
208
- end
209
- when 'C121', # iDEAL
210
- 'C102', 'C500', # (SEPA) Direct Debit
211
- 'V110', # PayPal
212
- 'C092', 'V092', # Bancontact
213
- 'C101', # Transfer
214
-
215
- 'C080', 'C194', 'C281', 'C290', 'C315', 'C342',
216
- 'C881', 'C961', 'V068', 'V074', 'V080', 'V102',
217
- 'V194', 'V281', 'V290', 'V315', 'V342', 'V694', # Visa
218
-
219
- 'C079', 'C197', 'C300', 'C325', 'C352', 'C371',
220
- 'C877', 'C967', 'V067', 'V073', 'V079', 'V101',
221
- 'V149', 'V197', 'V300', 'V325', 'V352', 'V371',
222
- 'V700', # MasterCard
223
-
224
- 'C082', 'C252', 'C286', 'C305', 'C330', 'C873',
225
- 'C970', 'V070', 'V076', 'V082', 'V246', 'V286',
226
- 'V305', 'V330', 'V703', # Maestro
227
-
228
- 'V066', 'V072', 'V078', 'V103' # American Express
229
- TransactionType::REFUND
230
- when 'C501', 'C502', 'C562', # (SEPA) Direct Debit
231
- 'V111', # PayPal
232
-
233
- 'C554', 'C593', 'C882', 'V132', 'V138', 'V144',
234
- 'V544', 'V592', # Visa
235
-
236
- 'C553', 'C589', 'C878', 'V131', 'V137', 'V143',
237
- 'V543', 'V589', # MasterCard
238
-
239
- 'C546', 'C551', 'C874', 'V134', 'V140', 'V146',
240
- 'V545', 'V546', # Maestro
241
-
242
- 'V130', 'V136', 'V142' # American Express
243
- TransactionType::REVERSAL
244
- end
245
- else
246
- # Fallback when transaction type is not known (cancelling credit card)
247
- TransactionType::PAYMENT
248
- end
167
+ TransactionType.parse(params[:brq_transaction_type], params[:brq_recurring])
249
168
  end
250
169
 
251
170
  def transaction_status
@@ -5,8 +5,10 @@ require 'digest'
5
5
  module Buckaruby
6
6
  # Calculate a signature based on the parameters of the payment request or response.
7
7
  # -> see BPE 3.0 Gateway NVP, chapter 4 'Digital Signature'
8
- class Signature
9
- def self.generate_signature(params, config)
8
+ module Signature
9
+ module_function
10
+
11
+ def generate_signature(params, config)
10
12
  case config.hash_method
11
13
  when :sha1
12
14
  Digest::SHA1.hexdigest(generate_signature_string(params, config.secret))
@@ -19,7 +21,7 @@ module Buckaruby
19
21
  end
20
22
  end
21
23
 
22
- def self.generate_signature_string(params, secret)
24
+ def generate_signature_string(params, secret)
23
25
  sign_params = params.select { |key, _value| key.to_s.upcase.start_with?("BRQ_", "ADD_", "CUST_") && key.to_s.casecmp("BRQ_SIGNATURE").nonzero? }
24
26
  sign_params = order_signature_params(sign_params)
25
27
 
@@ -36,7 +38,7 @@ module Buckaruby
36
38
  # a_a, a0, a0a, a1a, aaA, aab, aba, aCa
37
39
  CHAR_ORDER = "_01234567890abcdefghijklmnopqrstuvwxyz"
38
40
 
39
- def self.order_signature_params(params)
41
+ def order_signature_params(params)
40
42
  params.sort_by do |key, _value|
41
43
  key.to_s.downcase.each_char.map { |c| CHAR_ORDER.index(c) }
42
44
  end
@@ -1,11 +1,30 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Buckaruby
4
+ # Parses the transaction status code from Buckaroo.
4
5
  module TransactionStatus
5
6
  SUCCESS = 1
6
7
  FAILED = 2
7
8
  REJECTED = 3
8
9
  CANCELLED = 4
9
10
  PENDING = 5
11
+
12
+ module_function
13
+
14
+ # See https://support.buckaroo.nl/categorie%C3%ABn/transacties/status
15
+ def parse(brq_statuscode)
16
+ case brq_statuscode
17
+ when '190'
18
+ TransactionStatus::SUCCESS
19
+ when '490', '491', '492'
20
+ TransactionStatus::FAILED
21
+ when '690'
22
+ TransactionStatus::REJECTED
23
+ when '790', '791', '792', '793'
24
+ TransactionStatus::PENDING
25
+ when '890', '891'
26
+ TransactionStatus::CANCELLED
27
+ end
28
+ end
10
29
  end
11
30
  end
@@ -1,10 +1,89 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Buckaruby
4
+ # Parses the transaction type from Buckaroo.
4
5
  module TransactionType
5
6
  PAYMENT = 1
6
7
  PAYMENT_RECURRENT = 2
7
8
  REFUND = 3
8
9
  REVERSAL = 4
10
+
11
+ module_function
12
+
13
+ # See https://support.buckaroo.nl/categorie%C3%ABn/integratie/transactietypes-overzicht
14
+ def parse(brq_transaction_type, brq_recurring)
15
+ if brq_transaction_type && !brq_transaction_type.empty?
16
+ case brq_transaction_type
17
+ when 'C021', 'V021', # iDEAL
18
+ 'C002', 'C004', 'C005', # (SEPA) Direct Debit
19
+ 'V010', 'V014', # PayPal
20
+ 'C090', 'V090', # Bancontact
21
+ 'N074', 'C075', # Sofort
22
+ 'C001', # Transfer
23
+
24
+ 'C044', 'C192', 'C283', 'C293', 'C318', 'C345',
25
+ 'C880', 'C963', 'V002', 'V032', 'V038', 'V044',
26
+ 'V192', 'V283', 'V293', 'V313', 'V318', 'V345',
27
+ 'V696', # Visa
28
+
29
+ 'C043', 'C089', 'C273', 'C303', 'C328', 'C355',
30
+ 'C876', 'C969', 'V001', 'V031', 'V037', 'V043',
31
+ 'V089', 'V273', 'V303', 'V328', 'V355', 'V702', # MasterCard
32
+
33
+ 'C046', 'C251', 'C288', 'C308', 'C333', 'C872',
34
+ 'C972', 'V034', 'V040', 'V046', 'V094', 'V245',
35
+ 'V288', 'V308', 'V333', 'V705', # Maestro
36
+
37
+ 'V003', 'V030', 'V036', 'V042' # American Express
38
+
39
+ # Check the recurring flag to detect a normal or recurring transaction.
40
+ if brq_recurring && brq_recurring.casecmp("true").zero?
41
+ TransactionType::PAYMENT_RECURRENT
42
+ else
43
+ TransactionType::PAYMENT
44
+ end
45
+ when 'C121', # iDEAL
46
+ 'C102', 'C500', # (SEPA) Direct Debit
47
+ 'V110', # PayPal
48
+ 'C092', 'V092', # Bancontact
49
+ 'N540', 'C543', # Sofort
50
+ 'C101', # Transfer
51
+
52
+ 'C080', 'C194', 'C281', 'C290', 'C315', 'C342',
53
+ 'C881', 'C961', 'V068', 'V074', 'V080', 'V102',
54
+ 'V194', 'V281', 'V290', 'V315', 'V342', 'V694', # Visa
55
+
56
+ 'C079', 'C197', 'C300', 'C325', 'C352', 'C371',
57
+ 'C877', 'C967', 'V067', 'V073', 'V079', 'V101',
58
+ 'V149', 'V197', 'V300', 'V325', 'V352', 'V371',
59
+ 'V700', # MasterCard
60
+
61
+ 'C082', 'C252', 'C286', 'C305', 'C330', 'C873',
62
+ 'C970', 'V070', 'V076', 'V082', 'V246', 'V286',
63
+ 'V305', 'V330', 'V703', # Maestro
64
+
65
+ 'V066', 'V072', 'V078', 'V103' # American Express
66
+ TransactionType::REFUND
67
+ when 'C501', 'C502', 'C562', # (SEPA) Direct Debit
68
+ 'V111', # PayPal
69
+ 'C544', # Sofort
70
+
71
+ 'C554', 'C593', 'C882', 'V132', 'V138', 'V144',
72
+ 'V544', 'V592', # Visa
73
+
74
+ 'C553', 'C589', 'C878', 'V131', 'V137', 'V143',
75
+ 'V543', 'V589', # MasterCard
76
+
77
+ 'C546', 'C551', 'C874', 'V134', 'V140', 'V146',
78
+ 'V545', 'V546', # Maestro
79
+
80
+ 'V130', 'V136', 'V142' # American Express
81
+ TransactionType::REVERSAL
82
+ end
83
+ else
84
+ # Fallback when transaction type is not known (e.g. cancelling credit card)
85
+ TransactionType::PAYMENT
86
+ end
87
+ end
9
88
  end
10
89
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Buckaruby
4
- VERSION = "1.4.0"
4
+ VERSION = "1.5.0"
5
5
  end
@@ -218,6 +218,16 @@ RSpec.describe Buckaruby::Gateway do
218
218
  expect(response.to_h).to be_an_instance_of(Hash)
219
219
  end
220
220
 
221
+ it 'initiates a transaction for payment method sofort' do
222
+ response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::SOFORT, invoicenumber: "12345", return_url: "http://www.return.url/")
223
+ expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
224
+ expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
225
+ expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
226
+ expect(response.redirect_url).not_to be nil
227
+ expect(response.timestamp).to be_an_instance_of(Time)
228
+ expect(response.to_h).to be_an_instance_of(Hash)
229
+ end
230
+
221
231
  context 'with custom variables' do
222
232
  it 'sends the custom variables with the request' do
223
233
  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" })
@@ -226,7 +236,7 @@ RSpec.describe Buckaruby::Gateway do
226
236
  expect(response.custom[:quux]).to eq("42")
227
237
 
228
238
  expect(WebMock).to have_requested(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
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")
239
+ .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=93952aef5786f00f62e4aa33597672845b2ac8dd")
230
240
  end
231
241
  end
232
242
 
@@ -238,7 +248,7 @@ RSpec.describe Buckaruby::Gateway do
238
248
  expect(response.additional[:myreference]).to eq("12345")
239
249
 
240
250
  expect(WebMock).to have_requested(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
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")
251
+ .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=b7332fefcf5a9aeb02b9c242ef52eaad118e2da4")
242
252
  end
243
253
  end
244
254
  end
@@ -642,6 +652,20 @@ RSpec.describe Buckaruby::Gateway do
642
652
  expect(response.timestamp).to be_an_instance_of(Time)
643
653
  expect(response.to_h).to be_an_instance_of(Hash)
644
654
  end
655
+
656
+ it 'sets the transaction type to payment and payment method to Sofrt for sort callback' do
657
+ params = File.read("spec/fixtures/responses/callback_payment_sofort.txt")
658
+
659
+ response = subject.callback(params)
660
+ expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
661
+ expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
662
+ expect(response.payment_method).to eq(Buckaruby::PaymentMethod::SOFORT)
663
+ expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
664
+ expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
665
+ expect(response.invoicenumber).to eq("12345")
666
+ expect(response.timestamp).to be_an_instance_of(Time)
667
+ expect(response.to_h).to be_an_instance_of(Hash)
668
+ end
645
669
  end
646
670
 
647
671
  context 'when callback is a payment recurrent response' do
@@ -0,0 +1 @@
1
+ brq_amount=10.00&brq_currency=EUR&brq_customer_name=Warnecke+Hans-Gerd&brq_description=test&brq_invoicenumber=12345&brq_mutationtype=Collecting&brq_payment=E86256B2787EE7FF0C33D0D4C6159CD922227B79&brq_service_sofortueberweisung_bankstatementid=35DRJQ5&brq_service_sofortueberweisung_customerbic=SFRTNL20XXX&brq_service_sofortueberweisung_customeriban=NL56SFRT0012345678&brq_statuscode=791&brq_statuscode_detail=P192&brq_statusmessage=Sofort+payment+request+complete%2C+payment+not+yet+received.&brq_test=true&brq_timestamp=2020-11-16+20%3A14%3A21&brq_transaction_method=sofortueberweisung&brq_transaction_type=N074&brq_transactions=41C48B55FA9164E123CC73B1157459E840BE5D24&brq_websitekey=12345678&brq_signature=3183281d1c634b656f7879293f29d3b8c6ede8b1
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.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kentaa
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-06 00:00:00.000000000 Z
11
+ date: 2020-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -117,6 +117,7 @@ files:
117
117
  - spec/fixtures/responses/callback_payment_pending.txt
118
118
  - spec/fixtures/responses/callback_payment_rejected.txt
119
119
  - spec/fixtures/responses/callback_payment_sepa.txt
120
+ - spec/fixtures/responses/callback_payment_sofort.txt
120
121
  - spec/fixtures/responses/callback_payment_success.txt
121
122
  - spec/fixtures/responses/callback_payment_visa.txt
122
123
  - spec/fixtures/responses/callback_recurrent_sepa.txt
@@ -142,7 +143,7 @@ homepage: https://github.com/KentaaNL/buckaruby
142
143
  licenses:
143
144
  - MIT
144
145
  metadata: {}
145
- post_install_message:
146
+ post_install_message:
146
147
  rdoc_options: []
147
148
  require_paths:
148
149
  - lib
@@ -157,8 +158,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
158
  - !ruby/object:Gem::Version
158
159
  version: '0'
159
160
  requirements: []
160
- rubygems_version: 3.0.6
161
- signing_key:
161
+ rubygems_version: 3.0.8
162
+ signing_key:
162
163
  specification_version: 4
163
164
  summary: Ruby library for communicating with the Buckaroo Payment Engine 3.0.
164
165
  test_files:
@@ -176,6 +177,7 @@ test_files:
176
177
  - spec/fixtures/responses/callback_payment_pending.txt
177
178
  - spec/fixtures/responses/callback_payment_rejected.txt
178
179
  - spec/fixtures/responses/callback_payment_sepa.txt
180
+ - spec/fixtures/responses/callback_payment_sofort.txt
179
181
  - spec/fixtures/responses/callback_payment_success.txt
180
182
  - spec/fixtures/responses/callback_payment_visa.txt
181
183
  - spec/fixtures/responses/callback_recurrent_sepa.txt