buckaruby 1.7.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2 -54
  3. data/README.md +54 -18
  4. data/lib/buckaruby/action.rb +4 -4
  5. data/lib/buckaruby/amount.rb +25 -0
  6. data/lib/buckaruby/configuration.rb +35 -40
  7. data/lib/buckaruby/currency.rb +3 -3
  8. data/lib/buckaruby/exception.rb +9 -8
  9. data/lib/buckaruby/gateway.rb +64 -72
  10. data/lib/buckaruby/operation.rb +5 -5
  11. data/lib/buckaruby/payment_method.rb +20 -12
  12. data/lib/buckaruby/request.rb +62 -68
  13. data/lib/buckaruby/response.rb +69 -67
  14. data/lib/buckaruby/signature.rb +26 -7
  15. data/lib/buckaruby/transaction_type.rb +1 -1
  16. data/lib/buckaruby/version.rb +1 -1
  17. data/lib/buckaruby.rb +1 -2
  18. metadata +16 -97
  19. data/.github/workflows/test.yml +0 -23
  20. data/.gitignore +0 -19
  21. data/.rubocop.yml +0 -107
  22. data/Gemfile +0 -12
  23. data/Gemfile.lock +0 -71
  24. data/Rakefile +0 -10
  25. data/buckaruby.gemspec +0 -28
  26. data/lib/buckaruby/iban.rb +0 -29
  27. data/lib/buckaruby/ideal.rb +0 -21
  28. data/spec/buckaruby/configuration_spec.rb +0 -113
  29. data/spec/buckaruby/field_mapper_spec.rb +0 -69
  30. data/spec/buckaruby/gateway_spec.rb +0 -803
  31. data/spec/buckaruby/iban_spec.rb +0 -75
  32. data/spec/buckaruby/signature_spec.rb +0 -89
  33. data/spec/buckaruby/support/case_insensitive_hash_spec.rb +0 -74
  34. data/spec/fixtures/responses/callback_invalid_signature.txt +0 -1
  35. data/spec/fixtures/responses/callback_payment_amex.txt +0 -1
  36. data/spec/fixtures/responses/callback_payment_cancelled.txt +0 -1
  37. data/spec/fixtures/responses/callback_payment_empty_transaction_type.txt +0 -1
  38. data/spec/fixtures/responses/callback_payment_failed.txt +0 -1
  39. data/spec/fixtures/responses/callback_payment_giropay.txt +0 -1
  40. data/spec/fixtures/responses/callback_payment_pending.txt +0 -1
  41. data/spec/fixtures/responses/callback_payment_rejected.txt +0 -1
  42. data/spec/fixtures/responses/callback_payment_sepa.txt +0 -1
  43. data/spec/fixtures/responses/callback_payment_sofort.txt +0 -1
  44. data/spec/fixtures/responses/callback_payment_success.txt +0 -1
  45. data/spec/fixtures/responses/callback_payment_visa.txt +0 -1
  46. data/spec/fixtures/responses/callback_recurrent_sepa.txt +0 -1
  47. data/spec/fixtures/responses/callback_recurrent_visa.txt +0 -1
  48. data/spec/fixtures/responses/callback_refund_amex.txt +0 -1
  49. data/spec/fixtures/responses/callback_refund_ideal.txt +0 -1
  50. data/spec/fixtures/responses/callback_refund_paypal.txt +0 -1
  51. data/spec/fixtures/responses/callback_reversal_paypal.txt +0 -1
  52. data/spec/fixtures/responses/callback_reversal_sepa.txt +0 -1
  53. data/spec/fixtures/responses/callback_valid_signature.txt +0 -1
  54. data/spec/fixtures/responses/cancel_success.txt +0 -1
  55. data/spec/fixtures/responses/recurrent_transaction_success.txt +0 -1
  56. data/spec/fixtures/responses/refund_info_error.txt +0 -1
  57. data/spec/fixtures/responses/refund_info_success.txt +0 -1
  58. data/spec/fixtures/responses/refund_transaction_success.txt +0 -1
  59. data/spec/fixtures/responses/setup_transaction_success.txt +0 -1
  60. data/spec/fixtures/responses/specify_transaction_success.txt +0 -1
  61. data/spec/fixtures/responses/status_cancellable.txt +0 -1
  62. data/spec/fixtures/responses/status_noncancellable.txt +0 -1
  63. data/spec/fixtures/responses/status_success.txt +0 -1
  64. data/spec/spec_helper.rb +0 -16
@@ -1,803 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Buckaruby::Gateway do
6
- describe 'initialization' do
7
- describe 'bad parameters' do
8
- it 'raises an exception when creating a new instance with invalid parameters' do
9
- expect {
10
- Buckaruby::Gateway.new
11
- }.to raise_error(ArgumentError)
12
-
13
- expect {
14
- Buckaruby::Gateway.new(website: "12345678")
15
- }.to raise_error(ArgumentError)
16
-
17
- expect {
18
- Buckaruby::Gateway.new(secret: "7C222FB2927D828AF22F592134E8932480637C0D")
19
- }.to raise_error(ArgumentError)
20
-
21
- expect {
22
- Buckaruby::Gateway.new(website: "", secret: "")
23
- }.to raise_error(ArgumentError)
24
- end
25
- end
26
- end
27
-
28
- subject { Buckaruby::Gateway.new(website: "12345678", secret: "7C222FB2927D828AF22F592134E8932480637C0D") }
29
-
30
- it { expect(subject).to be_an_instance_of(Buckaruby::Gateway) }
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
-
43
- describe '#issuers' do
44
- context 'when no or false parameters are passed' do
45
- it 'raises an ArgumentError' do
46
- expect { subject.issuers }.to raise_error(ArgumentError)
47
- expect { subject.issuers(:wrong) }.to raise_error(ArgumentError)
48
- end
49
- end
50
-
51
- context 'when ideal is passed' do
52
- let(:issuers) { subject.issuers(Buckaruby::PaymentMethod::IDEAL) }
53
-
54
- it { expect(issuers.length).to be > 0 }
55
- it { expect(issuers).to include("INGBNL2A" => "ING") }
56
- end
57
-
58
- context 'when ideal processing is passed' do
59
- let(:issuers) { subject.issuers(Buckaruby::PaymentMethod::IDEAL_PROCESSING) }
60
-
61
- it { expect(issuers.length).to be > 0 }
62
- it { expect(issuers).to include("RABONL2U" => "Rabobank") }
63
- end
64
-
65
- context 'when visa, mastercard, maestro, bankcontact, sepa direct debit or paypal is passed' do
66
- it 'raises an ArgumentError' do
67
- expect { subject.issuers(Buckaruby::PaymentMethod::VISA) }.to raise_error(ArgumentError)
68
- expect { subject.issuers(Buckaruby::PaymentMethod::MASTER_CARD) }.to raise_error(ArgumentError)
69
- expect { subject.issuers(Buckaruby::PaymentMethod::MAESTRO) }.to raise_error(ArgumentError)
70
- expect { subject.issuers(Buckaruby::PaymentMethod::SEPA_DIRECT_DEBIT) }.to raise_error(ArgumentError)
71
- expect { subject.issuers(Buckaruby::PaymentMethod::BANCONTACT_MISTER_CASH) }.to raise_error(ArgumentError)
72
- expect { subject.issuers(Buckaruby::PaymentMethod::PAYPAL) }.to raise_error(ArgumentError)
73
- end
74
- end
75
- end
76
-
77
- describe '#setup_transaction' do
78
- before do
79
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(body: File.read("spec/fixtures/responses/setup_transaction_success.txt"))
80
- end
81
-
82
- it 'raises an exception when initiating a transaction with missing parameters' do
83
- expect {
84
- subject.setup_transaction(amount: 10)
85
- }.to raise_error(ArgumentError)
86
-
87
- expect {
88
- subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL)
89
- }.to raise_error(ArgumentError)
90
-
91
- expect {
92
- subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first)
93
- }.to raise_error(ArgumentError)
94
-
95
- expect {
96
- subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first, invoicenumber: "12345")
97
- }.to raise_error(ArgumentError)
98
- end
99
-
100
- it 'raises an exception when initiating a transaction with invalid amount' do
101
- expect {
102
- 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/")
103
- }.to raise_error(ArgumentError)
104
-
105
- expect {
106
- subject.setup_transaction(amount: -1, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first, invoicenumber: "12345", return_url: "http://www.return.url/")
107
- }.to raise_error(ArgumentError)
108
- end
109
-
110
- it 'raises an exception when initiating a transaction with invalid payment method' do
111
- expect {
112
- subject.setup_transaction(amount: 10, payment_method: "abc", payment_issuer: Buckaruby::Ideal::ISSUERS.keys.first, invoicenumber: "12345", return_url: "http://www.return.url/")
113
- }.to raise_error(ArgumentError)
114
- end
115
-
116
- it 'raises an exception when initiating a transaction with invalid payment issuer' do
117
- expect {
118
- subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, payment_issuer: "abc", invoicenumber: "12345", return_url: "http://www.return.url/")
119
- }.to raise_error(ArgumentError)
120
- end
121
-
122
- it 'raises a ConnectionException when connection the Buckaroo fails' do
123
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_raise(Errno::ECONNREFUSED)
124
-
125
- expect {
126
- 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/")
127
- }.to raise_error(Buckaruby::ConnectionException)
128
- end
129
-
130
- it 'raises an InvalidResponseException when Buckaroo returns an invalid response' do
131
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(status: 500)
132
-
133
- expect {
134
- 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/")
135
- }.to raise_error(Buckaruby::InvalidResponseException)
136
- end
137
-
138
- it 'raises an ApiException when API result Fail is returned' do
139
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(body: "BRQ_APIRESULT=Fail&BRQ_APIERRORMESSAGE=Invalid+request")
140
-
141
- expect {
142
- 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/")
143
- }.to raise_error(Buckaruby::ApiException)
144
- end
145
-
146
- describe 'initiates a transaction when amount is integer, decimal or string' do
147
- context 'when amount is an integer' do
148
- 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/") }
149
-
150
- it { expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse) }
151
- it { expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24") }
152
- it { expect(response.redirect_url).not_to be nil }
153
- end
154
-
155
- context 'when amount is a decimal' do
156
- 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/") }
157
-
158
- it { expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse) }
159
- it { expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24") }
160
- it { expect(response.redirect_url).not_to be nil }
161
- end
162
-
163
- context 'when amount is a string' do
164
- 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/") }
165
-
166
- it { expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse) }
167
- it { expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24") }
168
- it { expect(response.redirect_url).not_to be nil }
169
- end
170
- end
171
-
172
- it 'initiates a transaction for payment method ideal' do
173
- 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/")
174
- expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
175
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
176
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
177
- expect(response.redirect_url).not_to be nil
178
- expect(response.timestamp).to be_an_instance_of(Time)
179
- expect(response.to_h).to be_an_instance_of(Hash)
180
- end
181
-
182
- it 'initiates a transaction for payment method visa' do
183
- response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::VISA, invoicenumber: "12345", return_url: "http://www.return.url/")
184
- expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
185
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
186
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
187
- expect(response.redirect_url).not_to be nil
188
- expect(response.timestamp).to be_an_instance_of(Time)
189
- expect(response.to_h).to be_an_instance_of(Hash)
190
- end
191
-
192
- it 'initiates a transaction for payment method mastercard' do
193
- response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::MASTER_CARD, invoicenumber: "12345", return_url: "http://www.return.url/")
194
- expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
195
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
196
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
197
- expect(response.redirect_url).not_to be nil
198
- expect(response.timestamp).to be_an_instance_of(Time)
199
- expect(response.to_h).to be_an_instance_of(Hash)
200
- end
201
-
202
- it 'initiates a transaction for payment method sepa direct debit' do
203
- 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))
204
- expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
205
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
206
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
207
- expect(response.timestamp).to be_an_instance_of(Time)
208
- expect(response.to_h).to be_an_instance_of(Hash)
209
- end
210
-
211
- it 'initiates a transaction for payment method paypal' do
212
- response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::PAYPAL, invoicenumber: "12345", return_url: "http://www.return.url/")
213
- expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
214
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
215
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
216
- expect(response.redirect_url).not_to be nil
217
- expect(response.timestamp).to be_an_instance_of(Time)
218
- expect(response.to_h).to be_an_instance_of(Hash)
219
- end
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
-
231
- it 'initiates a transaction for payment method giropay' do
232
- response = subject.setup_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::GIROPAY, invoicenumber: "12345", return_url: "http://www.return.url/")
233
- expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
234
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
235
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
236
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
237
- expect(response.redirect_url).not_to be nil
238
- expect(response.timestamp).to be_an_instance_of(Time)
239
- end
240
-
241
- context 'with custom variables' do
242
- it 'sends the custom variables with the request' do
243
- 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" })
244
- expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
245
- expect(response.custom[:foo]).to eq("bar")
246
- expect(response.custom[:quux]).to eq("42")
247
-
248
- expect(WebMock).to have_requested(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
249
- .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=979f64bc651c9e780844c0866380fa2554897131")
250
- end
251
- end
252
-
253
- context 'with additional variables' do
254
- it 'sends the additional variables with the request' do
255
- 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" })
256
- expect(response).to be_an_instance_of(Buckaruby::SetupTransactionResponse)
257
- expect(response.additional[:buckaruby]).to eq("1.2.0")
258
- expect(response.additional[:myreference]).to eq("12345")
259
-
260
- expect(WebMock).to have_requested(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
261
- .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=b3b7db8c80ea3260f86aa916de1a057ffce3db78")
262
- end
263
- end
264
- end
265
-
266
- describe '#recurrent_transaction' do
267
- before do
268
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(body: File.read("spec/fixtures/responses/recurrent_transaction_success.txt"))
269
- end
270
-
271
- it 'raises an exception when initiating a recurrent transaction with missing parameters' do
272
- expect {
273
- subject.recurrent_transaction(amount: 10)
274
- }.to raise_error(ArgumentError)
275
-
276
- expect {
277
- subject.recurrent_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::VISA)
278
- }.to raise_error(ArgumentError)
279
-
280
- expect {
281
- subject.recurrent_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::VISA, invoicenumber: "12345")
282
- }.to raise_error(ArgumentError)
283
- end
284
-
285
- it 'raises an exception when initiating a transaction with invalid payment method' do
286
- expect {
287
- subject.recurrent_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::IDEAL, invoicenumber: "12345", transaction_id: "12345")
288
- }.to raise_error(ArgumentError)
289
- end
290
-
291
- it 'initiates a recurrent transaction for payment method visa' do
292
- response = subject.recurrent_transaction(amount: 10, payment_method: Buckaruby::PaymentMethod::VISA, invoicenumber: "12345", transaction_id: "12345")
293
- expect(response).to be_an_instance_of(Buckaruby::RecurrentTransactionResponse)
294
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
295
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
296
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::VISA)
297
- expect(response.invoicenumber).to eq("12345")
298
- expect(response.timestamp).to be_an_instance_of(Time)
299
- expect(response.to_h).to be_an_instance_of(Hash)
300
- end
301
- end
302
-
303
- describe '#refundable?' do
304
- it 'raises an exception when required parameters are missing' do
305
- expect {
306
- subject.refundable?
307
- }.to raise_error(ArgumentError)
308
- end
309
-
310
- it 'returns true when the transaction is refundable' do
311
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=RefundInfo").to_return(body: File.read("spec/fixtures/responses/refund_info_success.txt"))
312
-
313
- response = subject.refundable?(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
314
- expect(response).to be true
315
- end
316
-
317
- it 'returns false when the transaction was not found' do
318
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=RefundInfo").to_return(body: File.read("spec/fixtures/responses/refund_info_error.txt"))
319
-
320
- response = subject.refundable?(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
321
- expect(response).to be false
322
- end
323
- end
324
-
325
- describe '#refund_transaction' do
326
- it 'raises an exception when required parameters are missing' do
327
- expect {
328
- subject.refund_transaction
329
- }.to raise_error(ArgumentError)
330
- end
331
-
332
- it 'raises an exception when the transaction is not refundable' do
333
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=RefundInfo").to_return(body: File.read("spec/fixtures/responses/refund_info_error.txt"))
334
-
335
- expect {
336
- subject.refund_transaction(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
337
- }.to raise_error(Buckaruby::NonRefundableTransactionException)
338
- end
339
-
340
- it 'refunds the transaction' do
341
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=RefundInfo").to_return(body: File.read("spec/fixtures/responses/refund_info_success.txt"))
342
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest").to_return(body: File.read("spec/fixtures/responses/refund_transaction_success.txt"))
343
-
344
- response = subject.refund_transaction(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
345
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
346
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
347
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
348
- expect(response.transaction_id).to eq("8CCE4BB06339F28A506E1A328025D7DF13CCAD59")
349
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
350
- expect(response.refund_transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
351
- expect(response.invoicenumber).to eq("12345")
352
- expect(response.timestamp).to be_an_instance_of(Time)
353
- expect(response.to_h).to be_an_instance_of(Hash)
354
- end
355
- end
356
-
357
- describe '#status' do
358
- before do
359
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_success.txt"))
360
- end
361
-
362
- it 'raises an exception when required parameters are missing' do
363
- expect {
364
- subject.status
365
- }.to raise_error(ArgumentError)
366
- end
367
-
368
- it { expect(subject.status(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")).to be_an_instance_of(Buckaruby::StatusResponse) }
369
-
370
- it 'returns transaction status' do
371
- response = subject.status(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
372
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
373
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
374
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
375
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
376
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
377
- expect(response.invoicenumber).to eq("12345")
378
- expect(response.timestamp).to be_an_instance_of(Time)
379
- expect(response.to_h).to be_an_instance_of(Hash)
380
- end
381
-
382
- it 'includes account iban, bic and name for an ideal response' do
383
- response = subject.status(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
384
- expect(response.account_iban).to eq("NL44RABO0123456789")
385
- expect(response.account_bic).to eq("RABONL2U")
386
- expect(response.account_name).to eq("J. de Tester")
387
- end
388
- end
389
-
390
- describe '#cancellable?' do
391
- it 'raises an exception when required parameters are missing' do
392
- expect {
393
- subject.cancellable?
394
- }.to raise_error(ArgumentError)
395
- end
396
-
397
- it 'returns true when the transaction is cancellable' do
398
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_cancellable.txt"))
399
-
400
- response = subject.cancellable?(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
401
- expect(response).to be true
402
- end
403
-
404
- it 'returns false when the transaction is not cancellable' do
405
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_noncancellable.txt"))
406
-
407
- response = subject.cancellable?(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
408
- expect(response).to be false
409
- end
410
- end
411
-
412
- describe '#cancel_transaction' do
413
- it 'raises an exception when required parameters are missing' do
414
- expect {
415
- subject.cancel_transaction
416
- }.to raise_error(ArgumentError)
417
- end
418
-
419
- it 'raises an exception when the transaction is not cancellable' do
420
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_noncancellable.txt"))
421
-
422
- expect {
423
- subject.cancel_transaction(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
424
- }.to raise_error(Buckaruby::NonCancellableTransactionException)
425
- end
426
-
427
- it 'cancels the transaction' do
428
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus").to_return(body: File.read("spec/fixtures/responses/status_cancellable.txt"))
429
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=CancelTransaction").to_return(body: File.read("spec/fixtures/responses/cancel_success.txt"))
430
-
431
- response = subject.cancel_transaction(transaction_id: "41C48B55FA9164E123CC73B1157459E840BE5D24")
432
- expect(response).to be_an_instance_of(Buckaruby::CancelResponse)
433
- end
434
- end
435
-
436
- describe '#specify_transaction' do
437
- before do
438
- stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequestSpecification").to_return(body: File.read("spec/fixtures/responses/specify_transaction_success.txt"))
439
- end
440
-
441
- it 'retrieves the specification for setting up a transaction' do
442
- response = subject.specify_transaction
443
- expect(response).to be_an_instance_of(Buckaruby::TransactionSpecificationResponse)
444
-
445
- services = response.services
446
- expect(services).to be_an_instance_of(Array)
447
- expect(services.length).to eq(2)
448
-
449
- service = services.last
450
- expect(service).to be_an_instance_of(Buckaruby::Support::CaseInsensitiveHash)
451
- expect(service[:name]).to eq(Buckaruby::PaymentMethod::VISA)
452
- expect(service[:description]).to eq("Visa")
453
- expect(service[:version]).to eq("1")
454
-
455
- currencies = service[:supportedcurrencies]
456
- expect(currencies).to be_an_instance_of(Array)
457
- expect(currencies.length).to eq(21)
458
-
459
- currency = currencies.last
460
- expect(currency).to be_an_instance_of(Buckaruby::Support::CaseInsensitiveHash)
461
- expect(currency[:name]).to eq("US Dollar")
462
- expect(currency[:code]).to eq(Buckaruby::Currency::US_DOLLAR)
463
- end
464
- end
465
-
466
- describe '#callback' do
467
- it 'raises an exception when parameters are missing' do
468
- expect {
469
- subject.callback
470
- }.to raise_error(ArgumentError)
471
- end
472
-
473
- it 'raises an exception when parameter is an empty Hash' do
474
- expect {
475
- subject.callback({})
476
- }.to raise_error(ArgumentError)
477
- end
478
-
479
- it 'raises an exception when parameter is an empty String' do
480
- expect {
481
- subject.callback("")
482
- }.to raise_error(ArgumentError)
483
- end
484
-
485
- it 'raises a SignatureException when the signature is invalid' do
486
- params = File.read("spec/fixtures/responses/callback_invalid_signature.txt")
487
-
488
- expect {
489
- subject.callback(params)
490
- }.to raise_error(Buckaruby::SignatureException, "Sent signature (abcdefgh1234567890abcdefgh1234567890) doesn't match generated signature (0a74bba15fccd8094f33678c001b44851643876d)")
491
- end
492
-
493
- it 'returns the status when the signature is valid' do
494
- params = File.read("spec/fixtures/responses/callback_valid_signature.txt")
495
-
496
- response = subject.callback(params)
497
- expect(response).to be_an_instance_of(Buckaruby::CallbackResponse)
498
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
499
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
500
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
501
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
502
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
503
- expect(response.invoicenumber).to eq("12345")
504
- expect(response.timestamp).to be_an_instance_of(Time)
505
- expect(response.to_h).to be_an_instance_of(Hash)
506
- end
507
-
508
- it 'accepts a Hash as parameters' do
509
- 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" }
510
-
511
- response = subject.callback(params)
512
- expect(response).to be_an_instance_of(Buckaruby::CallbackResponse)
513
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
514
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
515
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
516
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
517
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
518
- expect(response.invoicenumber).to eq("12345")
519
- expect(response.timestamp).to be_an_instance_of(Time)
520
- expect(response.to_h).to be_an_instance_of(Hash)
521
- end
522
-
523
- context 'when callback is a payment response' do
524
- it 'sets the success status when payment status is success' do
525
- params = File.read("spec/fixtures/responses/callback_payment_success.txt")
526
-
527
- response = subject.callback(params)
528
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
529
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
530
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
531
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
532
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
533
- expect(response.invoicenumber).to eq("12345")
534
- expect(response.timestamp).to be_an_instance_of(Time)
535
- expect(response.to_h).to be_an_instance_of(Hash)
536
- end
537
-
538
- it 'sets the failed status when payment status is failed' do
539
- params = File.read("spec/fixtures/responses/callback_payment_failed.txt")
540
-
541
- response = subject.callback(params)
542
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::FAILED)
543
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
544
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
545
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
546
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
547
- expect(response.invoicenumber).to eq("12345")
548
- expect(response.timestamp).to be_an_instance_of(Time)
549
- expect(response.to_h).to be_an_instance_of(Hash)
550
- end
551
-
552
- it 'sets the rejected status when payment status is rejected' do
553
- params = File.read("spec/fixtures/responses/callback_payment_rejected.txt")
554
-
555
- response = subject.callback(params)
556
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::REJECTED)
557
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
558
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
559
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
560
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
561
- expect(response.invoicenumber).to eq("12345")
562
- expect(response.timestamp).to be_an_instance_of(Time)
563
- expect(response.to_h).to be_an_instance_of(Hash)
564
- end
565
-
566
- it 'sets the cancelled status when payment status is cancelled' do
567
- params = File.read("spec/fixtures/responses/callback_payment_cancelled.txt")
568
-
569
- response = subject.callback(params)
570
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::CANCELLED)
571
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
572
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
573
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
574
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
575
- expect(response.invoicenumber).to eq("12345")
576
- expect(response.timestamp).to be_an_instance_of(Time)
577
- expect(response.to_h).to be_an_instance_of(Hash)
578
- end
579
-
580
- it 'sets the pending status when payment status is pending' do
581
- params = File.read("spec/fixtures/responses/callback_payment_pending.txt")
582
-
583
- response = subject.callback(params)
584
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
585
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
586
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
587
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
588
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
589
- expect(response.invoicenumber).to eq("12345")
590
- expect(response.timestamp).to be_an_instance_of(Time)
591
- expect(response.to_h).to be_an_instance_of(Hash)
592
- end
593
-
594
- it 'includes account iban, bic and name for an ideal response' do
595
- params = File.read("spec/fixtures/responses/callback_payment_success.txt")
596
-
597
- response = subject.callback(params)
598
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
599
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
600
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
601
- expect(response.account_iban).to eq("NL44RABO0123456789")
602
- expect(response.account_bic).to eq("RABONL2U")
603
- expect(response.account_name).to eq("J. de Tester")
604
- expect(response.timestamp).to be_an_instance_of(Time)
605
- expect(response.to_h).to be_an_instance_of(Hash)
606
- end
607
-
608
- it 'includes account iban, name, mandate reference and collect date for a sepa direct debit response' do
609
- params = File.read("spec/fixtures/responses/callback_payment_sepa.txt")
610
-
611
- response = subject.callback(params)
612
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
613
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
614
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::SEPA_DIRECT_DEBIT)
615
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
616
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
617
- expect(response.invoicenumber).to eq("12345")
618
- expect(response.account_iban).to eq("NL13TEST0123456789")
619
- expect(response.account_name).to eq("J. Tester")
620
- expect(response.mandate_reference).to eq("012345")
621
- expect(response.collect_date).to eq(Date.new(2014, 11, 13))
622
- expect(response.timestamp).to be_an_instance_of(Time)
623
- expect(response.to_h).to be_an_instance_of(Hash)
624
- end
625
-
626
- it 'returns transaction type payment when cancelling a visa or mastercard transaction (empty transaction type)' do
627
- params = File.read("spec/fixtures/responses/callback_payment_empty_transaction_type.txt")
628
-
629
- response = subject.callback(params)
630
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::CANCELLED)
631
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
632
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
633
- expect(response.invoicenumber).to eq("12345")
634
- expect(response.timestamp).to be_an_instance_of(Time)
635
- expect(response.to_h).to be_an_instance_of(Hash)
636
- end
637
-
638
- it 'sets the transaction type to payment and payment method to VISA for visa callback' do
639
- params = File.read("spec/fixtures/responses/callback_payment_visa.txt")
640
-
641
- response = subject.callback(params)
642
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
643
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
644
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::VISA)
645
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
646
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
647
- expect(response.invoicenumber).to eq("12345")
648
- expect(response.timestamp).to be_an_instance_of(Time)
649
- expect(response.to_h).to be_an_instance_of(Hash)
650
- end
651
-
652
- it 'sets the transaction type to payment and payment method to American Express for amex callback' do
653
- params = File.read("spec/fixtures/responses/callback_payment_amex.txt")
654
-
655
- response = subject.callback(params)
656
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
657
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
658
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::AMERICAN_EXPRESS)
659
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
660
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
661
- expect(response.invoicenumber).to eq("12345")
662
- expect(response.timestamp).to be_an_instance_of(Time)
663
- expect(response.to_h).to be_an_instance_of(Hash)
664
- end
665
-
666
- it 'sets the transaction type to payment and payment method to Sofrt for sort callback' do
667
- params = File.read("spec/fixtures/responses/callback_payment_sofort.txt")
668
-
669
- response = subject.callback(params)
670
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::PENDING)
671
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
672
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::SOFORT)
673
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
674
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
675
- expect(response.invoicenumber).to eq("12345")
676
- expect(response.timestamp).to be_an_instance_of(Time)
677
- expect(response.to_h).to be_an_instance_of(Hash)
678
- end
679
-
680
- it 'sets the transaction type to payment and payment method to Giropay for giropay callback' do
681
- params = File.read("spec/fixtures/responses/callback_payment_giropay.txt")
682
-
683
- response = subject.callback(params)
684
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
685
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT)
686
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::GIROPAY)
687
- expect(response.transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
688
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
689
- expect(response.invoicenumber).to eq("12345")
690
- expect(response.timestamp).to be_an_instance_of(Time)
691
- end
692
- end
693
-
694
- context 'when callback is a payment recurrent response' do
695
- it 'recognizes a visa payment recurrent response' do
696
- params = File.read("spec/fixtures/responses/callback_recurrent_visa.txt")
697
-
698
- response = subject.callback(params)
699
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
700
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT_RECURRENT)
701
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::VISA)
702
- expect(response.transaction_id).to eq("B51118F58785274E117EFE1BF99D4D50CCB96949")
703
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
704
- expect(response.invoicenumber).to eq("12345")
705
- expect(response.timestamp).to be_an_instance_of(Time)
706
- expect(response.to_h).to be_an_instance_of(Hash)
707
- end
708
-
709
- it 'recognizes a sepa direct debit payment recurrent response' do
710
- params = File.read("spec/fixtures/responses/callback_recurrent_sepa.txt")
711
-
712
- response = subject.callback(params)
713
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
714
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT_RECURRENT)
715
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::SEPA_DIRECT_DEBIT)
716
- expect(response.transaction_id).to eq("B51118F58785274E117EFE1BF99D4D50CCB96949")
717
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
718
- expect(response.invoicenumber).to eq("12345")
719
- expect(response.timestamp).to be_an_instance_of(Time)
720
- expect(response.to_h).to be_an_instance_of(Hash)
721
- end
722
- end
723
-
724
- context 'when callback is a refund response' do
725
- it 'recognizes an ideal refund response' do
726
- params = File.read("spec/fixtures/responses/callback_refund_ideal.txt")
727
-
728
- response = subject.callback(params)
729
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
730
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::REFUND)
731
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::IDEAL)
732
- expect(response.transaction_id).to eq("B51118F58785274E117EFE1BF99D4D50CCB96949")
733
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
734
- expect(response.invoicenumber).to eq("12345")
735
- expect(response.refund_transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
736
- expect(response.timestamp).to be_an_instance_of(Time)
737
- expect(response.to_h).to be_an_instance_of(Hash)
738
- end
739
-
740
- it 'recognizes a paypal refund response' do
741
- params = File.read("spec/fixtures/responses/callback_refund_paypal.txt")
742
-
743
- response = subject.callback(params)
744
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
745
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::REFUND)
746
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::PAYPAL)
747
- expect(response.transaction_id).to eq("B51118F58785274E117EFE1BF99D4D50CCB96949")
748
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
749
- expect(response.invoicenumber).to eq("12345")
750
- expect(response.refund_transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
751
- expect(response.timestamp).to be_an_instance_of(Time)
752
- expect(response.to_h).to be_an_instance_of(Hash)
753
- end
754
-
755
- it 'recognizes an amex refund response' do
756
- params = File.read("spec/fixtures/responses/callback_refund_amex.txt")
757
-
758
- response = subject.callback(params)
759
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
760
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::REFUND)
761
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::AMERICAN_EXPRESS)
762
- expect(response.transaction_id).to eq("B51118F58785274E117EFE1BF99D4D50CCB96949")
763
- expect(response.payment_id).to be nil
764
- expect(response.invoicenumber).to eq("12345")
765
- expect(response.refund_transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
766
- expect(response.timestamp).to be_an_instance_of(Time)
767
- expect(response.to_h).to be_an_instance_of(Hash)
768
- end
769
- end
770
-
771
- context 'when callback is a reversal response' do
772
- it 'recognizes a sepa direct debit reversal response' do
773
- params = File.read("spec/fixtures/responses/callback_reversal_sepa.txt")
774
-
775
- response = subject.callback(params)
776
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
777
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::REVERSAL)
778
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::SEPA_DIRECT_DEBIT)
779
- expect(response.transaction_id).to eq("8CCE4BB06339F28A506E1A328025D7DF13CCAD59")
780
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
781
- expect(response.invoicenumber).to eq("12345")
782
- expect(response.reversal_transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
783
- expect(response.timestamp).to be_an_instance_of(Time)
784
- expect(response.to_h).to be_an_instance_of(Hash)
785
- end
786
-
787
- it 'recognizes a paypal reversal response' do
788
- params = File.read("spec/fixtures/responses/callback_reversal_paypal.txt")
789
-
790
- response = subject.callback(params)
791
- expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
792
- expect(response.transaction_type).to eq(Buckaruby::TransactionType::REVERSAL)
793
- expect(response.payment_method).to eq(Buckaruby::PaymentMethod::PAYPAL)
794
- expect(response.transaction_id).to eq("8CCE4BB06339F28A506E1A328025D7DF13CCAD59")
795
- expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
796
- expect(response.invoicenumber).to eq("12345")
797
- expect(response.reversal_transaction_id).to eq("41C48B55FA9164E123CC73B1157459E840BE5D24")
798
- expect(response.timestamp).to be_an_instance_of(Time)
799
- expect(response.to_h).to be_an_instance_of(Hash)
800
- end
801
- end
802
- end
803
- end