buckaruby 1.0.1 → 1.0.2

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
  SHA1:
3
- metadata.gz: 4bf463fefe2e48b81e3802d81e8141a535a4f586
4
- data.tar.gz: b2192a33d06fd0c4c9cba9e9eb7969cd12fdc061
3
+ metadata.gz: bf24f7ed57a0ee1afd17a9d85d696be81c7e28f3
4
+ data.tar.gz: 472afa4186eb0cb9e6dda801b6fc80ea52ca0654
5
5
  SHA512:
6
- metadata.gz: 636784a521333470080bfaf8603bb5049e6129d94f2cd01cf20cae672c6ff84827f8a9ddb6221e3eb5b0a7bc2f484fe5788e21d5580c8303a7df5bcaa0ffcd1c
7
- data.tar.gz: 88a2da8cf30a4791535456fe99b3b06a845d42cbfcf52799558b09e0b41fa3186667f954a05633a4de401f130894a1b5c56fdcd449030c052a7cea66464df827
6
+ metadata.gz: 59deba4cfcf3006f9a20d5072619cf42550da007912cec0bf5ade166be9c9191810cf87066dcb1576c79e7d3d154e1098ba8e8d4aa1372883b1ad1fa547f8568
7
+ data.tar.gz: 11d4aa501936edcaff85f77e163ee88732ba1ecea6b52415e24783a9c477c6894a1b3453045ee030d32cb1b8bc1dcbd2b92b4b2fba1f6403f04a492f1d1a1a1f
data/.rubocop.yml CHANGED
@@ -8,11 +8,15 @@ AllCops:
8
8
  Metrics/AbcSize:
9
9
  Max: 30
10
10
 
11
+ Metrics/BlockLength:
12
+ Exclude:
13
+ - 'spec/**/*.rb'
14
+
11
15
  Metrics/ClassLength:
12
16
  Enabled: false
13
17
 
14
18
  Metrics/CyclomaticComplexity:
15
- Max: 8
19
+ Max: 9
16
20
 
17
21
  Metrics/LineLength:
18
22
  Enabled: false
@@ -21,7 +25,7 @@ Metrics/MethodLength:
21
25
  Enabled: false
22
26
 
23
27
  Metrics/PerceivedComplexity:
24
- Max: 8
28
+ Max: 9
25
29
 
26
30
  Style/AccessorMethodName:
27
31
  Enabled: false
data/.travis.yml CHANGED
@@ -2,6 +2,6 @@ language: ruby
2
2
  sudo: false
3
3
  cache: bundler
4
4
  rvm:
5
- - 2.2.6
6
- - 2.3.3
7
- - 2.4.0
5
+ - 2.2.7
6
+ - 2.3.4
7
+ - 2.4.1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Buckaruby changelog
2
2
 
3
+ ## 1.0.2 (2017-08-25)
4
+
5
+ - Recognize credit card transactions via Atos.
6
+ - Fix detection of recurrent payments.
7
+ - Minor improvements to exception handling.
8
+
3
9
  ## 1.0.1 (2017-01-05)
4
10
 
5
11
  - Recognize status codes 792 & 793 as a pending transaction.
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in buckaruby.gemspec
4
4
  gemspec
5
5
 
6
- gem 'rubocop', '~> 0.45.0', group: :test
6
+ gem 'rubocop', '~> 0.47.1', group: :test
data/README.md CHANGED
@@ -126,10 +126,14 @@ When missing or invalid parameters are passed to any method, an `ArgumentError`
126
126
 
127
127
  When a request to Buckaroo fails because of connection problems, a `Buckaruby::ConnectionException` will be raised.
128
128
 
129
+ When Buckaroo returns an invalid response (status code is not 2xx), a `Buckaruby::InvalidResponseException` will be raised.
130
+
129
131
  When an API call to Buckaroo results in a "Fail" returned, a `Buckaruby::ApiException` will be raised.
130
132
 
131
133
  When the signature could not be verified, a `Buckaruby::SignatureException` will be raised.
132
134
 
135
+ All Buckaruby exceptions listed here inherit from the class `Buckaruby::BuckarooException`.
136
+
133
137
  ## Contributing
134
138
 
135
139
  Bug reports and pull requests are welcome on GitHub at https://github.com/KentaaNL/buckaruby.
data/buckaruby.gemspec CHANGED
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'buckaruby/version'
@@ -23,4 +24,5 @@ Gem::Specification.new do |spec|
23
24
  spec.add_development_dependency "bundler", "~> 1.7"
24
25
  spec.add_development_dependency "rake", "~> 10.0"
25
26
  spec.add_development_dependency "rspec", "~> 3.5.0", ">= 3.5.0"
27
+ spec.add_development_dependency "webmock", "~> 2.3", ">= 2.3.2"
26
28
  end
@@ -38,16 +38,31 @@ module Buckaruby
38
38
  class ConnectionException < BuckarooException
39
39
  def initialize(exception)
40
40
  message = "Error connecting to Buckaroo: #{exception.message} (#{exception.class})"
41
+ super(message)
42
+ end
43
+ end
44
+
45
+ # Exception raised when the response from Buckaroo was invalid.
46
+ class InvalidResponseException < BuckarooException
47
+ attr_reader :response
41
48
 
49
+ def initialize(response)
50
+ @response = response
51
+
52
+ message = "Invalid response received from Buckaroo: #{response.message} (#{response.code})"
42
53
  super(message)
43
54
  end
44
55
  end
45
56
 
46
57
  # Exception raised when the signature could not be verified.
47
58
  class SignatureException < BuckarooException
59
+ attr_reader :sent_signature, :generated_signature
60
+
48
61
  def initialize(sent_signature = "", generated_signature = "")
49
- message = "Sent signature (#{sent_signature}) doesn't match generated signature (#{generated_signature})"
62
+ @sent_signature = sent_signature
63
+ @generated_signature = generated_signature
50
64
 
65
+ message = "Sent signature (#{sent_signature}) doesn't match generated signature (#{generated_signature})"
51
66
  super(message)
52
67
  end
53
68
  end
@@ -41,11 +41,16 @@ module Buckaruby
41
41
  end
42
42
 
43
43
  raw_response = http.post(uri.request_uri, post_data(params))
44
+
45
+ unless raw_response.is_a?(Net::HTTPSuccess)
46
+ raise InvalidResponseException, raw_response
47
+ end
48
+
44
49
  return raw_response.body
45
50
  # Try to catch some common exceptions Net::HTTP might raise
46
- rescue Errno::ETIMEDOUT, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, EOFError, IOError, SocketError,
47
- Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::OpenTimeout, Net::ProtocolError, Net::ReadTimeout,
48
- OpenSSL::SSL::SSLError => ex
51
+ rescue Errno::ETIMEDOUT, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, Errno::EHOSTUNREACH,
52
+ IOError, SocketError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::OpenTimeout,
53
+ Net::ProtocolError, Net::ReadTimeout, OpenSSL::SSL::SSLError => ex
49
54
  raise ConnectionException, ex
50
55
  end
51
56
 
@@ -19,7 +19,7 @@ module Buckaruby
19
19
  generated_signature = Signature.generate_signature(response, options)
20
20
 
21
21
  if sent_signature != generated_signature
22
- raise SignatureException, sent_signature, generated_signature
22
+ raise SignatureException.new(sent_signature, generated_signature)
23
23
  end
24
24
  end
25
25
  end
@@ -102,13 +102,18 @@ module Buckaruby
102
102
  if params[:brq_transaction_type] && !params[:brq_transaction_type].empty?
103
103
  # See http://support.buckaroo.nl/index.php/Transactietypes
104
104
  case params[:brq_transaction_type]
105
- when 'C001', 'C002', 'C004', 'C021', 'C043', 'C044', 'C046', 'C090', 'V001', 'V002', 'V010', 'V021', 'V090'
106
- TransactionType::PAYMENT
107
- when 'C005', 'V014', 'V031', 'V032', 'V034', 'V043', 'V044', 'V046', 'V094'
105
+ when 'C001', 'C002', 'C004', 'C021', 'C043', 'C044', 'C046', 'C089', 'C090', 'C192', 'C251', 'V001', 'V002', 'V010', 'V021', 'V032', 'V034', 'V043', 'V044', 'V046', 'V089', 'V090', 'V192', 'V245'
106
+ # Check the recurring flag to detect a normal or recurring transaction.
107
+ if params[:brq_recurring] && params[:brq_recurring].casecmp("true").zero?
108
+ TransactionType::PAYMENT_RECURRENT
109
+ else
110
+ TransactionType::PAYMENT
111
+ end
112
+ when 'C005', 'V014', 'V031', 'V094'
108
113
  TransactionType::PAYMENT_RECURRENT
109
- when 'C079', 'C080', 'C082', 'C092', 'C101', 'C102', 'C121', 'C500', 'V067', 'V068', 'V070', 'V079', 'V080', 'V082', 'V092', 'V101', 'V102', 'V110'
114
+ when 'C079', 'C080', 'C082', 'C092', 'C101', 'C102', 'C121', 'C194', 'C197', 'C252', 'C500', 'V067', 'V068', 'V070', 'V079', 'V080', 'V082', 'V092', 'V101', 'V102', 'V110', 'V149', 'V194', 'V197', 'V246'
110
115
  TransactionType::REFUND
111
- when 'C501', 'C502', 'C562', 'V111', 'V131', 'V132', 'V134', 'V143', 'V144', 'V146'
116
+ when 'C501', 'C502', 'C546', 'C551', 'C553', 'C554', 'C562', 'C589', 'C593', 'V111', 'V131', 'V132', 'V134', 'V143', 'V144', 'V146', 'V543', 'V544', 'V545', 'V546', 'V589', 'V592'
112
117
  TransactionType::REVERSAL
113
118
  end
114
119
  else
@@ -1,3 +1,3 @@
1
1
  module Buckaruby
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -99,9 +99,8 @@ describe Buckaruby::Gateway do
99
99
 
100
100
  describe 'initiate transaction' do
101
101
  before(:each) do
102
- request = Buckaruby::SetupTransactionRequest.new(subject.options)
103
- allow(request).to receive(:post_buckaroo).and_return("BRQ_ACTIONREQUIRED=redirect&BRQ_AMOUNT=10.00&BRQ_APIRESULT=ActionRequired&BRQ_CURRENCY=EUR&BRQ_DESCRIPTION=Test&BRQ_INVOICENUMBER=12345&BRQ_PAYMENT=12345&BRQ_PAYMENT_METHOD=ideal&BRQ_REDIRECTURL=https%3A%2F%2Ftestcheckout.buckaroo.nl%2Fhtml%2Fredirect.ashx%3Fr%3D41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_SERVICE_IDEAL_CONSUMERISSUER=Rabobank&BRQ_STATUSCODE=791&BRQ_STATUSCODE_DETAIL=S002&BRQ_STATUSMESSAGE=An+additional+action+is+required%3A+RedirectToIdeal&BRQ_TEST=true&BRQ_TIMESTAMP=2014-11-05+13%3A10%3A40&BRQ_TRANSACTIONS=41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_WEBSITEKEY=12345678&BRQ_SIGNATURE=3d6ef7e249d9509d120c7b84f27f081adf06074b")
104
- allow(subject).to receive(:build_request).and_return(request)
102
+ stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
103
+ .to_return(body: "BRQ_ACTIONREQUIRED=redirect&BRQ_AMOUNT=10.00&BRQ_APIRESULT=ActionRequired&BRQ_CURRENCY=EUR&BRQ_DESCRIPTION=Test&BRQ_INVOICENUMBER=12345&BRQ_PAYMENT=12345&BRQ_PAYMENT_METHOD=ideal&BRQ_REDIRECTURL=https%3A%2F%2Ftestcheckout.buckaroo.nl%2Fhtml%2Fredirect.ashx%3Fr%3D41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_SERVICE_IDEAL_CONSUMERISSUER=Rabobank&BRQ_STATUSCODE=791&BRQ_STATUSCODE_DETAIL=S002&BRQ_STATUSMESSAGE=An+additional+action+is+required%3A+RedirectToIdeal&BRQ_TEST=true&BRQ_TIMESTAMP=2014-11-05+13%3A10%3A40&BRQ_TRANSACTIONS=41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_WEBSITEKEY=12345678&BRQ_SIGNATURE=3d6ef7e249d9509d120c7b84f27f081adf06074b")
105
104
  end
106
105
 
107
106
  it 'should raise an exception when initiating a transaction with missing parameters' do
@@ -144,10 +143,27 @@ describe Buckaruby::Gateway do
144
143
  }.to raise_error(ArgumentError)
145
144
  end
146
145
 
147
- it 'should raise an exception when API result Fail is returned' do
148
- request = Buckaruby::SetupTransactionRequest.new(subject.options)
149
- allow(request).to receive(:post_buckaroo).and_return("BRQ_APIRESULT=Fail&BRQ_APIERRORMESSAGE=Invalid+request")
150
- allow(subject).to receive(:build_request).and_return(request)
146
+ it 'should raise a ConnectionException when connection the Buckaroo fails' do
147
+ stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
148
+ .to_raise(Errno::ECONNREFUSED)
149
+
150
+ expect {
151
+ 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/")
152
+ }.to raise_error(Buckaruby::ConnectionException)
153
+ end
154
+
155
+ it 'should raise an InvalidResponseException when Buckaroo returns an invalid response' do
156
+ stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
157
+ .to_return(status: 500)
158
+
159
+ expect {
160
+ 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/")
161
+ }.to raise_error(Buckaruby::InvalidResponseException)
162
+ end
163
+
164
+ it 'should raise an ApiException when API result Fail is returned' do
165
+ stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
166
+ .to_return(body: "BRQ_APIRESULT=Fail&BRQ_APIERRORMESSAGE=Invalid+request")
151
167
 
152
168
  expect {
153
169
  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/")
@@ -229,9 +245,9 @@ describe Buckaruby::Gateway do
229
245
 
230
246
  describe 'initiate recurrent transaction' do
231
247
  before(:each) do
232
- request = Buckaruby::RecurrentTransactionRequest.new(subject.options)
233
- allow(request).to receive(:post_buckaroo).and_return("BRQ_AMOUNT=10.00&BRQ_APIRESULT=Success&BRQ_CURRENCY=EUR&BRQ_CUSTOMER_NAME=Test&BRQ_DESCRIPTION=Test&BRQ_INVOICENUMBER=12345&BRQ_ISSUING_COUNTRY=IE&BRQ_PAYMENT=8EE820309AA9455C91350DD5D3160362&BRQ_PAYMENT_METHOD=visa&BRQ_RECURRING=True&BRQ_SERVICE_VISA_CARDEXPIRATIONDATE=2016-01&BRQ_SERVICE_VISA_CARDNUMBERENDING=0969&BRQ_SERVICE_VISA_MASKEDCARDNUMBER=491611%2A%2A%2A%2A%2A%2A0969&BRQ_STATUSCODE=190&BRQ_STATUSCODE_DETAIL=S001&BRQ_STATUSMESSAGE=Transaction+successfully+processed&BRQ_TEST=true&BRQ_TIMESTAMP=2016-01-19+15%3A13%3A44&BRQ_TRANSACTIONS=41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_WEBSITEKEY=12345678&BRQ_SIGNATURE=b6a5a54c7e0d731f211c2080519e7aabc9775f47")
234
- allow(subject).to receive(:build_request).and_return(request)
248
+ stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionRequest")
249
+ .to_return(body:
250
+ "BRQ_AMOUNT=10.00&BRQ_APIRESULT=Success&BRQ_CURRENCY=EUR&BRQ_CUSTOMER_NAME=Test&BRQ_DESCRIPTION=Test&BRQ_INVOICENUMBER=12345&BRQ_ISSUING_COUNTRY=IE&BRQ_PAYMENT=8EE820309AA9455C91350DD5D3160362&BRQ_PAYMENT_METHOD=visa&BRQ_RECURRING=True&BRQ_SERVICE_VISA_CARDEXPIRATIONDATE=2016-01&BRQ_SERVICE_VISA_CARDNUMBERENDING=0969&BRQ_SERVICE_VISA_MASKEDCARDNUMBER=491611%2A%2A%2A%2A%2A%2A0969&BRQ_STATUSCODE=190&BRQ_STATUSCODE_DETAIL=S001&BRQ_STATUSMESSAGE=Transaction+successfully+processed&BRQ_TEST=true&BRQ_TIMESTAMP=2016-01-19+15%3A13%3A44&BRQ_TRANSACTIONS=41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_WEBSITEKEY=12345678&BRQ_SIGNATURE=b6a5a54c7e0d731f211c2080519e7aabc9775f47")
235
251
  end
236
252
 
237
253
  it 'should raise an exception when initiating a recurrent transaction with missing parameters' do
@@ -268,9 +284,9 @@ describe Buckaruby::Gateway do
268
284
 
269
285
  describe 'get transaction status' do
270
286
  before(:each) do
271
- request = Buckaruby::StatusRequest.new(subject.options)
272
- allow(request).to receive(:post_buckaroo).and_return("BRQ_AMOUNT=10.00&BRQ_APIRESULT=Success&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=ING&BRQ_SERVICE_IDEAL_CONSUMERNAME=J.+de+Tester&BRQ_STATUSCODE=190&BRQ_STATUSCODE_DETAIL=S001&BRQ_STATUSMESSAGE=Transaction+successfully+processed&BRQ_TEST=true&BRQ_TIMESTAMP=2015-02-16+13%3A25%3A58&BRQ_TRANSACTION_CANCELABLE=False&BRQ_TRANSACTION_METHOD=ideal&BRQ_TRANSACTION_TYPE=C021&BRQ_TRANSACTIONS=41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_WEBSITEKEY=12345678&BRQ_SIGNATURE=b92de342cc863acd0c46ed3c8cb6add87668e22f")
273
- allow(subject).to receive(:build_request).and_return(request)
287
+ stub_request(:post, "https://testcheckout.buckaroo.nl/nvp/?op=TransactionStatus")
288
+ .to_return(body:
289
+ "BRQ_AMOUNT=10.00&BRQ_APIRESULT=Success&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=ING&BRQ_SERVICE_IDEAL_CONSUMERNAME=J.+de+Tester&BRQ_STATUSCODE=190&BRQ_STATUSCODE_DETAIL=S001&BRQ_STATUSMESSAGE=Transaction+successfully+processed&BRQ_TEST=true&BRQ_TIMESTAMP=2015-02-16+13%3A25%3A58&BRQ_TRANSACTION_CANCELABLE=False&BRQ_TRANSACTION_METHOD=ideal&BRQ_TRANSACTION_TYPE=C021&BRQ_TRANSACTIONS=41C48B55FA9164E123CC73B1157459E840BE5D24&BRQ_WEBSITEKEY=12345678&BRQ_SIGNATURE=b92de342cc863acd0c46ed3c8cb6add87668e22f")
274
290
  end
275
291
 
276
292
  it 'should raise an exception when initiating a transaction with missing parameters' do
@@ -308,15 +324,15 @@ describe Buckaruby::Gateway do
308
324
  }.to raise_error(ArgumentError)
309
325
  end
310
326
 
311
- it 'should raise an exception when signature is invalid' do
327
+ it 'should raise a SignatureException when the signature is invalid' do
312
328
  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" => "abcdefgh1234567890abcdefgh1234567890" }
313
329
 
314
330
  expect {
315
331
  subject.callback(params)
316
- }.to raise_error(Buckaruby::SignatureException)
332
+ }.to raise_error(Buckaruby::SignatureException, "Sent signature (abcdefgh1234567890abcdefgh1234567890) doesn't match generated signature (0a74bba15fccd8094f33678c001b44851643876d)")
317
333
  end
318
334
 
319
- it 'should return the status when signature is valid' do
335
+ it 'should return the status when the signature is valid' do
320
336
  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" }
321
337
 
322
338
  response = subject.callback(params)
@@ -447,6 +463,20 @@ describe Buckaruby::Gateway do
447
463
  end
448
464
 
449
465
  context 'payment recurrent response' do
466
+ it 'should recognize a visa payment recurrent response' do
467
+ params = { "brq_amount" => "10.00", "brq_currency" => "EUR", "brq_customer_name" => "Test", "brq_description" => "test", "brq_invoicenumber" => "12345", "brq_issuing_country" => "NL", "brq_mutationtype" => "Collecting", "brq_payment" => "E86256B2787EE7FF0C33D0D4C6159CD922227B79", "brq_recurring" => "True", "brq_SERVICE_visa_CardExpirationDate" => "2017-08", "brq_SERVICE_visa_CardNumberEnding" => "0005", "brq_SERVICE_visa_MaskedCreditcardNumber" => "456355******0005", "brq_statuscode" => "190", "brq_statuscode_detail" => "S001", "brq_statusmessage" => "Transaction successfully processed", "brq_test" => "true", "brq_timestamp" => "2017-08-08 15:01:23", "brq_transaction_method" => "visa", "brq_transaction_type" => "C044", "brq_transactions" => "B51118F58785274E117EFE1BF99D4D50CCB96949", "brq_websitekey" => "12345678", "brq_signature" => "2d445ce39320a10e6637b6ace6896559ce040cb3" }
468
+
469
+ response = subject.callback(params)
470
+ expect(response.transaction_status).to eq(Buckaruby::TransactionStatus::SUCCESS)
471
+ expect(response.transaction_type).to eq(Buckaruby::TransactionType::PAYMENT_RECURRENT)
472
+ expect(response.payment_method).to eq(Buckaruby::PaymentMethod::VISA)
473
+ expect(response.transaction_id).to eq("B51118F58785274E117EFE1BF99D4D50CCB96949")
474
+ expect(response.payment_id).to eq("E86256B2787EE7FF0C33D0D4C6159CD922227B79")
475
+ expect(response.invoicenumber).to eq("12345")
476
+ expect(response.timestamp).to be_an_instance_of(Time)
477
+ expect(response.to_h).to be_an_instance_of(Hash)
478
+ end
479
+
450
480
  it 'should recognize a sepa direct debit payment recurrent response' do
451
481
  params = { "brq_amount" => "1.00", "brq_currency" => "EUR", "brq_customer_name" => "J. Tester", "brq_description" => "Recurrent: Test", "brq_invoicenumber" => "12345", "brq_mutationtype" => "Collecting", "brq_payment" => "E86256B2787EE7FF0C33D0D4C6159CD922227B79", "brq_recurring" => "True", "brq_SERVICE_sepadirectdebit_CollectDate" => "2016-09-16", "brq_SERVICE_sepadirectdebit_CustomerIBAN" => "NL13TEST0123456789", "brq_SERVICE_sepadirectdebit_DirectDebitType" => "First", "brq_SERVICE_sepadirectdebit_MandateDate" => "2016-09-07", "brq_SERVICE_sepadirectdebit_MandateReference" => "e1a31b3e461ab74cdbacf16bccd5290f9a284618", "brq_statuscode" => "190", "brq_statusmessage" => "Success", "brq_test" => "false", "brq_timestamp" => "2016-09-16 00:26:03", "brq_transaction_method" => "SepaDirectDebit", "brq_transaction_type" => "C005", "brq_transactions" => "B51118F58785274E117EFE1BF99D4D50CCB96949", "brq_websitekey" => "12345678", "brq_signature" => "851d0eacc314ceb9070abeb83d1853270459d81a" }
452
482
 
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
+ require 'webmock/rspec'
3
4
 
4
5
  require 'buckaruby'
5
6
 
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.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kentaa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-05 00:00:00.000000000 Z
11
+ date: 2017-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,6 +58,26 @@ dependencies:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: 3.5.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: webmock
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.3'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 2.3.2
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '2.3'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 2.3.2
61
81
  description: The Buckaruby gem provides a Ruby library for communicating with the
62
82
  Buckaroo Payment Engine 3.0.
63
83
  email: