adyen_jpiqueras 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.travis.yml +30 -0
  4. data/CHANGELOG.md +128 -0
  5. data/CONTRIBUTING.md +85 -0
  6. data/Gemfile +11 -0
  7. data/LICENSE +21 -0
  8. data/README.md +31 -0
  9. data/Rakefile +54 -0
  10. data/adyen_jpiqueras.gemspec +44 -0
  11. data/config.ru +5 -0
  12. data/lib/adyen.rb +16 -0
  13. data/lib/adyen/api.rb +424 -0
  14. data/lib/adyen/api/cacert.pem +3894 -0
  15. data/lib/adyen/api/payment_service.rb +374 -0
  16. data/lib/adyen/api/recurring_service.rb +188 -0
  17. data/lib/adyen/api/response.rb +61 -0
  18. data/lib/adyen/api/simple_soap_client.rb +134 -0
  19. data/lib/adyen/api/templates/payment_service.rb +159 -0
  20. data/lib/adyen/api/templates/recurring_service.rb +71 -0
  21. data/lib/adyen/api/test_helpers.rb +133 -0
  22. data/lib/adyen/api/xml_querier.rb +137 -0
  23. data/lib/adyen/base.rb +17 -0
  24. data/lib/adyen/configuration.rb +179 -0
  25. data/lib/adyen/form.rb +419 -0
  26. data/lib/adyen/hpp.rb +27 -0
  27. data/lib/adyen/hpp/request.rb +192 -0
  28. data/lib/adyen/hpp/response.rb +52 -0
  29. data/lib/adyen/hpp/signature.rb +34 -0
  30. data/lib/adyen/matchers.rb +92 -0
  31. data/lib/adyen/notification_generator.rb +30 -0
  32. data/lib/adyen/railtie.rb +13 -0
  33. data/lib/adyen/rest.rb +67 -0
  34. data/lib/adyen/rest/authorise_payment.rb +234 -0
  35. data/lib/adyen/rest/authorise_recurring_payment.rb +46 -0
  36. data/lib/adyen/rest/client.rb +127 -0
  37. data/lib/adyen/rest/errors.rb +33 -0
  38. data/lib/adyen/rest/modify_payment.rb +89 -0
  39. data/lib/adyen/rest/payout.rb +89 -0
  40. data/lib/adyen/rest/request.rb +104 -0
  41. data/lib/adyen/rest/response.rb +80 -0
  42. data/lib/adyen/rest/signature.rb +27 -0
  43. data/lib/adyen/signature.rb +76 -0
  44. data/lib/adyen/templates/notification_migration.rb +29 -0
  45. data/lib/adyen/templates/notification_model.rb +69 -0
  46. data/lib/adyen/util.rb +147 -0
  47. data/lib/adyen/version.rb +5 -0
  48. data/spec/api/api_spec.rb +231 -0
  49. data/spec/api/payment_service_spec.rb +505 -0
  50. data/spec/api/recurring_service_spec.rb +236 -0
  51. data/spec/api/response_spec.rb +59 -0
  52. data/spec/api/simple_soap_client_spec.rb +133 -0
  53. data/spec/api/spec_helper.rb +463 -0
  54. data/spec/api/test_helpers_spec.rb +84 -0
  55. data/spec/functional/api_spec.rb +117 -0
  56. data/spec/functional/initializer.rb.ci +3 -0
  57. data/spec/functional/initializer.rb.sample +3 -0
  58. data/spec/spec_helper.rb +8 -0
  59. data/test/form_test.rb +303 -0
  60. data/test/functional/payment_authorisation_api_test.rb +107 -0
  61. data/test/functional/payment_modification_api_test.rb +58 -0
  62. data/test/functional/payout_api_test.rb +93 -0
  63. data/test/helpers/capybara.rb +12 -0
  64. data/test/helpers/configure_adyen.rb +6 -0
  65. data/test/helpers/example_server.rb +136 -0
  66. data/test/helpers/public/adyen.encrypt.js +679 -0
  67. data/test/helpers/public/adyen.encrypt.min.js +14 -0
  68. data/test/helpers/test_cards.rb +20 -0
  69. data/test/helpers/views/authorized.erb +7 -0
  70. data/test/helpers/views/hpp.erb +20 -0
  71. data/test/helpers/views/index.erb +6 -0
  72. data/test/helpers/views/pay.erb +36 -0
  73. data/test/helpers/views/redirect_shopper.erb +18 -0
  74. data/test/hpp/signature_test.rb +37 -0
  75. data/test/hpp_test.rb +250 -0
  76. data/test/integration/hpp_integration_test.rb +52 -0
  77. data/test/integration/payment_using_3d_secure_integration_test.rb +41 -0
  78. data/test/integration/payment_with_client_side_encryption_integration_test.rb +26 -0
  79. data/test/rest/signature_test.rb +36 -0
  80. data/test/rest_list_recurring_details_response_test.rb +22 -0
  81. data/test/rest_request_test.rb +43 -0
  82. data/test/rest_response_test.rb +19 -0
  83. data/test/signature_test.rb +76 -0
  84. data/test/test_helper.rb +45 -0
  85. data/test/util_test.rb +78 -0
  86. data/yard_extensions.rb +16 -0
  87. metadata +308 -0
@@ -0,0 +1,41 @@
1
+ require 'test_helper'
2
+ require 'helpers/capybara'
3
+
4
+ class PaymentUsing3DSecureIntegrationTest < Minitest::Test
5
+ extend Adyen::Test::Flaky
6
+ include Capybara::DSL
7
+
8
+ flaky_test "3D Secure payment flow" do
9
+ page.driver.headers = {
10
+ "Accept" => "text/html;q=0.9,*/*",
11
+ "User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1944.0 Safari/537.36" # UUID/#{SecureRandom.uuid}
12
+ }
13
+
14
+ visit('/pay')
15
+
16
+ fill_in('card[holder_name]', :with => Adyen::TestCards::MASTERCARD_3DSECURE[:holder_name])
17
+ fill_in('card[number]', :with => Adyen::TestCards::MASTERCARD_3DSECURE[:number])
18
+ fill_in('card[expiry_month]', :with => Adyen::TestCards::MASTERCARD_3DSECURE[:expiry_month])
19
+ fill_in('card[expiry_year]', :with => Adyen::TestCards::MASTERCARD_3DSECURE[:expiry_year])
20
+ fill_in('card[cvc]', :with => Adyen::TestCards::MASTERCARD_3DSECURE[:cvc])
21
+
22
+ click_button('Pay')
23
+
24
+ assert page.has_content?('Authenticate a transaction'), "Expected to arrive on the 3Dsecure aithentication page"
25
+ assert_equal 'https://test.adyen.com/hpp/3d/validate.shtml', page.current_url
26
+
27
+ fill_in('username', :with => Adyen::TestCards::MASTERCARD_3DSECURE[:username])
28
+ fill_in('password', :with => Adyen::TestCards::MASTERCARD_3DSECURE[:password])
29
+
30
+ click_button('Submit')
31
+
32
+ unless page.has_content?('Payment authorized')
33
+ if page.has_content?("You will now be redirected back")
34
+ page.execute_script("document.getElementById('pageform').submit()")
35
+ end
36
+ end
37
+
38
+ assert page.has_content?('Payment authorized'), "Expected to be returned back on our own hosted pages."
39
+ assert_match %r{/pay/3dsecure}, page.current_url
40
+ end
41
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+ require 'helpers/capybara'
3
+
4
+ class PaymentWithClientSideEncryptionIntegrationTest < Minitest::Test
5
+ extend Adyen::Test::Flaky
6
+ include Capybara::DSL
7
+
8
+ flaky_test "client-side encryption payment flow" do
9
+ page.driver.headers = {
10
+ "Accept" => "text/html;q=0.9,*/*",
11
+ "User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1944.0 Safari/537.36" # UUID/#{SecureRandom.uuid}
12
+ }
13
+
14
+ visit('/pay')
15
+ fill_in('card[holder_name]', :with => Adyen::TestCards::VISA[:holder_name])
16
+ fill_in('card[number]', :with => Adyen::TestCards::VISA[:number])
17
+ fill_in('card[expiry_month]', :with => Adyen::TestCards::VISA[:expiry_month])
18
+ fill_in('card[expiry_year]', :with => Adyen::TestCards::VISA[:expiry_year])
19
+ fill_in('card[cvc]', :with => Adyen::TestCards::VISA[:cvc])
20
+
21
+ click_button('Pay')
22
+
23
+ assert page.has_content?('Payment authorized')
24
+ assert_match /\A\d+\z/, find("#psp_reference").text
25
+ end
26
+ end
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+ require 'adyen/rest/signature'
3
+
4
+ class RESTSignatureTest < Minitest::Test
5
+ def setup
6
+ # values from https://docs.adyen.com/pages/viewpage.action?pageId=5376964
7
+
8
+ @expected_sig = 'S+5bAYKLd+L2A07Pal0pG/qBarnInaIe709YNzNcHOA='
9
+
10
+ @raw_params = {
11
+ 'hmacSignature' => @expected_sig,
12
+ 'pspReference' => '7914073251449896',
13
+ 'originalReference' => '',
14
+ 'eventCode' => 'AUTHORISATION',
15
+ 'merchantAccountCode' => 'TestMerchant',
16
+ 'merchantReference' => 'TestPayment-1407325143704',
17
+ 'success' => 'true',
18
+ 'value' => '8650',
19
+ 'currency' => 'EUR',
20
+ 'sharedSecret' => '009E9E92268087AAD241638D3325201AFC8AAE6F3DCD369B6D32E87129FFAB10'
21
+ }
22
+ end
23
+
24
+ def test_sign
25
+ assert_equal @expected_sig, Adyen::REST::Signature.sign(@raw_params)
26
+ end
27
+
28
+ def test_verify_succeeds_with_same_secret
29
+ assert_equal true, Adyen::REST::Signature.verify(@raw_params)
30
+ end
31
+
32
+ def test_verification_fails_with_different_secret
33
+ params = @raw_params.merge('hmacSignature' => '123')
34
+ assert_equal false, Adyen::REST::Signature.verify(params)
35
+ end
36
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+ require 'adyen/rest'
3
+
4
+ class ListRecurringDetailsResponse < Minitest::Test
5
+
6
+ def setup
7
+ @http_response = mock
8
+ @recurring_detail_reference = "8314231570619177"
9
+ @body = "shopperReference=lup%40lup.com%23555&details.0.variant=mc&details.0.card.number=1111&details.0.recurringDetailReference=#{@recurring_detail_reference}&details.0.card.expiryMonth=6&creationDate=2015-02-05T18%3A24%3A21%2B01%3A00&lastKnownShopperEmail=lup%40lup.com&details.0.creationDate=2015-02-05T18%3A24%3A21%2B01%3A00&details.0.card.expiryYear=2016&details.0.card.holderName=jose"
10
+ @expected_details = [{ recurring_detail_reference: @recurring_detail_reference, creation_date: "2015-02-05T18:24:21+01:00", variant: "mc", card_holder_name: "jose", card_expiry_month: "6", card_expiry_year: "2016", card_number: "1111" }]
11
+ @http_response.stubs(body: @body)
12
+ @response = Adyen::REST::AuthorisePayment::ListRecurringDetailsResponse.new(@http_response)
13
+ end
14
+
15
+ def test_getting_details
16
+ assert_equal @response.details, @expected_details
17
+ end
18
+
19
+ def test_getting_references
20
+ assert_equal @response.references, [@recurring_detail_reference]
21
+ end
22
+ end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+ require 'adyen/rest/request'
3
+
4
+ class RESTRequestTest < Minitest::Test
5
+
6
+ def setup
7
+ @attributes = {
8
+ test: 123,
9
+ nested: {
10
+ camel_case: '456',
11
+ },
12
+
13
+ }
14
+ end
15
+
16
+ def test_form_data
17
+ request = Adyen::REST::Request.new('Action.Test', @attributes)
18
+
19
+ form_data = request.form_data
20
+ assert_equal '123', form_data['test']
21
+ assert_equal '456', form_data['nested.camelCase']
22
+ end
23
+
24
+ def test_setting_attributes
25
+ request = Adyen::REST::Request.new('Action.Test', @attributes)
26
+ request[:nested] = { a: 1, b: 2 }
27
+ request[:c] = 'hello world'
28
+ request[:camel_case] = 'snake_case'
29
+
30
+ assert_equal '1', request.form_data['nested.a']
31
+ assert_equal '2', request.form_data['nested.b']
32
+ assert_equal 'hello world', request.form_data['c']
33
+ assert_equal 'snake_case', request.form_data['camelCase']
34
+ end
35
+
36
+ def test_getting_attributes
37
+ request = Adyen::REST::Request.new('Action.Test', @attributes)
38
+ assert_equal '123', request['test']
39
+ assert_equal '123', request[:test]
40
+ assert_equal '456', request['nested.camel_case']
41
+ assert_equal '456', request['nested.camelCase']
42
+ end
43
+ end
@@ -0,0 +1,19 @@
1
+ require 'test_helper'
2
+ require 'adyen/rest/response'
3
+
4
+ class RESTResponseTest < Minitest::Test
5
+
6
+ def setup
7
+ @http_response = mock
8
+ @http_response.stubs(body: 'result.a=123&result.b.c=456&result.camelCase=789')
9
+ @response = Adyen::REST::Response.new(@http_response, prefix: 'result')
10
+ end
11
+
12
+ def test_getting_attributes
13
+ assert_equal '123', @response[:a]
14
+ assert_equal '123', @response['a']
15
+ assert_equal '123', @response['result.a']
16
+ assert_equal '789', @response['camelCase']
17
+ assert_equal '789', @response[:camel_case]
18
+ end
19
+ end
@@ -0,0 +1,76 @@
1
+ require 'test_helper'
2
+ require 'adyen/signature'
3
+
4
+ class SignatureTest < Minitest::Test
5
+ # HPP Signature
6
+ def hpp_raw_params
7
+ {
8
+ 'merchantAccount' => 'TestMerchant',
9
+ 'currencyCode' => 'EUR',
10
+ 'paymentAmount' => '199',
11
+ 'sessionValidity' => '2015-06-25T10:31:06Z',
12
+ 'shipBeforeDate' => '2015-07-01',
13
+ 'shopperLocale' => 'en_GB',
14
+ 'merchantReference' => 'SKINTEST-1435226439255',
15
+ 'skinCode' => 'X7hsNDWp',
16
+ 'sharedSecret' => hpp_shared_secret
17
+ }
18
+ end
19
+
20
+ def hpp_expected_sig
21
+ 'GJ1asjR5VmkvihDJxCd8yE2DGYOKwWwJCBiV3R51NFg='
22
+ end
23
+
24
+ def hpp_shared_secret
25
+ '4468D9782DEF54FCD706C9100C71EC43932B1EBC2ACF6BA0560C05AAA7550C48'
26
+ end
27
+
28
+ def test_hpp_sign
29
+ signed_params = Adyen::Signature.sign(hpp_raw_params)
30
+ assert_equal hpp_expected_sig, signed_params
31
+ end
32
+
33
+ def test_hpp_verify_succeeds_with_same_secret
34
+ assert_equal true, Adyen::Signature.verify(hpp_raw_params, hpp_expected_sig)
35
+ end
36
+
37
+ def test_hpp_verification_fails_with_different_secret
38
+ assert_equal false, Adyen::Signature.verify(hpp_raw_params, '1234')
39
+ end
40
+
41
+ # Rest Signature
42
+ def rest_raw_params
43
+ {
44
+ 'pspReference' => '7914073251449896',
45
+ 'originalReference' => '',
46
+ 'eventCode' => 'AUTHORISATION',
47
+ 'merchantAccountCode' => 'TestMerchant',
48
+ 'merchantReference' => 'TestPayment-1407325143704',
49
+ 'success' => 'true',
50
+ 'value' => '8650',
51
+ 'currency' => 'EUR',
52
+ 'sharedSecret' => rest_shared_secret
53
+ }
54
+ end
55
+
56
+ def rest_expected_sig
57
+ 'S+5bAYKLd+L2A07Pal0pG/qBarnInaIe709YNzNcHOA='
58
+ end
59
+
60
+ def rest_shared_secret
61
+ '009E9E92268087AAD241638D3325201AFC8AAE6F3DCD369B6D32E87129FFAB10'
62
+ end
63
+
64
+ def test_rest_sign
65
+ signed_params = Adyen::Signature.sign(rest_raw_params, :rest)
66
+ assert_equal rest_expected_sig, signed_params
67
+ end
68
+
69
+ def test_rest_verify_succeeds_with_same_secret
70
+ assert_equal true, Adyen::Signature.verify(rest_raw_params, rest_expected_sig, :rest)
71
+ end
72
+
73
+ def test_rest_verification_fails_with_different_secret
74
+ assert_equal false, Adyen::Signature.verify(rest_raw_params, '1234', :rest)
75
+ end
76
+ end
@@ -0,0 +1,45 @@
1
+ # encoding: UTF-8
2
+ require 'minitest/autorun'
3
+ require 'minitest/pride'
4
+ require 'mocha/setup'
5
+
6
+ require 'adyen/base'
7
+ require 'adyen/matchers'
8
+
9
+ require 'helpers/configure_adyen'
10
+ require 'helpers/test_cards'
11
+
12
+ require 'pp'
13
+ require 'time'
14
+
15
+ module Adyen::Test
16
+ module Flaky
17
+ def flaky_test(name, &block)
18
+ define_method("test_#{name}") do
19
+ attempt = 0
20
+ test_instance = self
21
+ begin
22
+ attempt += 1
23
+ test_instance.instance_eval(&block)
24
+ rescue Minitest::Assertion
25
+ attempt < 3 ? retry : raise
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ module EachXMLBackend
32
+ XML_BACKENDS = [Adyen::API::XMLQuerier::NokogiriBackend, Adyen::API::XMLQuerier::REXMLBackend]
33
+
34
+ def for_each_xml_backend(&block)
35
+ XML_BACKENDS.each do |xml_backend|
36
+ begin
37
+ Adyen::API::XMLQuerier.stubs(:default_backend).returns(xml_backend.new)
38
+ block.call(xml_backend)
39
+ ensure
40
+ Adyen::API::XMLQuerier.unstub(:default_backend)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
data/test/util_test.rb ADDED
@@ -0,0 +1,78 @@
1
+ # encoding: UTF-8
2
+ require 'test_helper'
3
+ require 'adyen/util'
4
+
5
+ class UtilTest < Minitest::Test
6
+ def test_hmac_base64_encoding
7
+ encoded_str = Adyen::Util.hmac_base64('bla', 'bla')
8
+ assert_equal '6nItEkVpIYF+i1RwrEyQ7RHmrfU=', encoded_str
9
+ end
10
+
11
+ def test_gzip_base64_encoding
12
+ encoded_str = Adyen::Util.gzip_base64('bla')
13
+ assert_equal 32, encoded_str.length
14
+ end
15
+
16
+ def test_date_formatting
17
+ assert_match(/^\d{4}-\d{2}-\d{2}$/, Adyen::Util.format_date(Date.today))
18
+ assert_equal '2009-01-01', Adyen::Util.format_date('2009-01-01')
19
+
20
+ assert_raises(ArgumentError) { Adyen::Util.format_date('2009-1-1') }
21
+ assert_raises(ArgumentError) { Adyen::Util.format_timestamp(20090101) }
22
+ end
23
+
24
+ def test_timestamp_formatting
25
+ assert_match(/^\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}Z$/, Adyen::Util.format_timestamp(Time.now))
26
+ assert_match(/^\d{4}-\d{2}-\d{2}T\d{2}\:\d{2}\:\d{2}Z$/, Adyen::Util.format_timestamp(DateTime.now))
27
+ assert_equal '2009-01-01T11:11:11Z', Adyen::Util.format_timestamp('2009-01-01T11:11:11Z')
28
+
29
+ assert_raises(ArgumentError) { Adyen::Util.format_timestamp('2009-01-01 11:11:11') }
30
+ assert_raises(ArgumentError) { Adyen::Util.format_timestamp(20090101111111) }
31
+ end
32
+
33
+ def test_camelize
34
+ assert_equal 'helloCruelWorld', Adyen::Util.camelize(:hello_cruel_world)
35
+ assert_equal 'HelloWorld', Adyen::Util.camelize('_hello__world')
36
+ assert_equal 'shopperIP', Adyen::Util.camelize('shopper_ip')
37
+ end
38
+
39
+ def test_underscore
40
+ assert_equal 'hello_cruel_world', Adyen::Util.underscore('HelloCruelWorld')
41
+ assert_equal 'rest_api', Adyen::Util.underscore('RESTApi')
42
+ assert_equal 'shopper_ip', Adyen::Util.underscore('shopperIP')
43
+ end
44
+
45
+ def test_flatten
46
+ expected_hash = { 'billingAddress.street' => 'My Street' }
47
+ assert_equal expected_hash, Adyen::Util.flatten(:billing_address => { :street => 'My Street'})
48
+
49
+ assert_equal Hash.new, Adyen::Util.flatten(nil)
50
+ assert_equal Hash.new, Adyen::Util.flatten({})
51
+ end
52
+
53
+ def test_deflatten
54
+ expected_hash = {
55
+ "payment_details" => {
56
+ "billing_address" => {
57
+ "street" => "Bell Street",
58
+ "number" => 123,
59
+ "city" => "Ottawa"
60
+ },
61
+ "result" => "Authorized",
62
+ "auth_code" => "A40B8"
63
+ }
64
+ }
65
+
66
+ assert_equal expected_hash, Adyen::Util.deflatten(
67
+ 'paymentDetails.billingAddress.street' => 'Bell Street',
68
+ 'paymentDetails.billingAddress.number' => 123,
69
+ 'paymentDetails.billingAddress.city' => 'Ottawa',
70
+ 'paymentDetails.result' => 'Authorized',
71
+ 'paymentDetails.authCode' => 'A40B8',
72
+ )
73
+
74
+ assert_raises(ArgumentError) { Adyen::Util.deflatten('a' => 1, 'a.b' => 2) }
75
+ assert_equal Hash.new, Adyen::Util.deflatten(nil)
76
+ assert_equal Hash.new, Adyen::Util.deflatten({})
77
+ end
78
+ end
@@ -0,0 +1,16 @@
1
+ class ResponseAttrHandler < YARD::Handlers::Ruby::Legacy::Base
2
+ handles 'response_attrs'
3
+ namespace_only
4
+
5
+ def process
6
+ statement.tokens[1..-1].each do |token|
7
+ next unless token.text =~ /^:?(\w+)/
8
+ name = $1
9
+ object = YARD::CodeObjects::MethodObject.new(namespace, name)
10
+ register(object)
11
+ object.dynamic = true
12
+ object.docstring = "@return [String] Returns +:#{name}+ from the {#params}."
13
+ end
14
+ end
15
+ end
16
+
metadata ADDED
@@ -0,0 +1,308 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: adyen_jpiqueras
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Willem van Bergen
8
+ - Michel Barbosa
9
+ - Stefan Borsje
10
+ - Eloy Durán
11
+ - Jordi Piqueras
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+ date: 2016-08-29 00:00:00.000000000 Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: rake
19
+ requirement: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: rspec
33
+ requirement: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - "~>"
36
+ - !ruby/object:Gem::Version
37
+ version: '2.14'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - "~>"
43
+ - !ruby/object:Gem::Version
44
+ version: '2.14'
45
+ - !ruby/object:Gem::Dependency
46
+ name: minitest
47
+ requirement: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - "~>"
50
+ - !ruby/object:Gem::Version
51
+ version: '5'
52
+ type: :development
53
+ prerelease: false
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - "~>"
57
+ - !ruby/object:Gem::Version
58
+ version: '5'
59
+ - !ruby/object:Gem::Dependency
60
+ name: mocha
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: sinatra
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: poltergeist
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: railties
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '3.2'
108
+ - - "<"
109
+ - !ruby/object:Gem::Version
110
+ version: '5'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '3.2'
118
+ - - "<"
119
+ - !ruby/object:Gem::Version
120
+ version: '5'
121
+ - !ruby/object:Gem::Dependency
122
+ name: nokogiri
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 1.6.8
128
+ type: :development
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 1.6.8
135
+ description: |2
136
+ Package to simplify including the Adyen payments services into a Ruby on Rails application.
137
+ The package provides functionality to create payment forms, handling and storing notifications
138
+ sent by Adyen and consuming the SOAP services provided by Adyen. Moreover, it contains helper
139
+ methods, mocks and matchers to simpify writing tests/specs for your code.
140
+ Fork version with payouts implemented.
141
+ email:
142
+ - willem@vanbergen.org
143
+ - cicaboo@gmail.com
144
+ - mail@sborsje.nl
145
+ - eloy.de.enige@gmail.com
146
+ - jordi.piqueras@helpling.net
147
+ executables: []
148
+ extensions: []
149
+ extra_rdoc_files:
150
+ - README.md
151
+ - CHANGELOG.md
152
+ - CONTRIBUTING.md
153
+ files:
154
+ - ".gitignore"
155
+ - ".travis.yml"
156
+ - CHANGELOG.md
157
+ - CONTRIBUTING.md
158
+ - Gemfile
159
+ - LICENSE
160
+ - README.md
161
+ - Rakefile
162
+ - adyen_jpiqueras.gemspec
163
+ - config.ru
164
+ - lib/adyen.rb
165
+ - lib/adyen/api.rb
166
+ - lib/adyen/api/cacert.pem
167
+ - lib/adyen/api/payment_service.rb
168
+ - lib/adyen/api/recurring_service.rb
169
+ - lib/adyen/api/response.rb
170
+ - lib/adyen/api/simple_soap_client.rb
171
+ - lib/adyen/api/templates/payment_service.rb
172
+ - lib/adyen/api/templates/recurring_service.rb
173
+ - lib/adyen/api/test_helpers.rb
174
+ - lib/adyen/api/xml_querier.rb
175
+ - lib/adyen/base.rb
176
+ - lib/adyen/configuration.rb
177
+ - lib/adyen/form.rb
178
+ - lib/adyen/hpp.rb
179
+ - lib/adyen/hpp/request.rb
180
+ - lib/adyen/hpp/response.rb
181
+ - lib/adyen/hpp/signature.rb
182
+ - lib/adyen/matchers.rb
183
+ - lib/adyen/notification_generator.rb
184
+ - lib/adyen/railtie.rb
185
+ - lib/adyen/rest.rb
186
+ - lib/adyen/rest/authorise_payment.rb
187
+ - lib/adyen/rest/authorise_recurring_payment.rb
188
+ - lib/adyen/rest/client.rb
189
+ - lib/adyen/rest/errors.rb
190
+ - lib/adyen/rest/modify_payment.rb
191
+ - lib/adyen/rest/payout.rb
192
+ - lib/adyen/rest/request.rb
193
+ - lib/adyen/rest/response.rb
194
+ - lib/adyen/rest/signature.rb
195
+ - lib/adyen/signature.rb
196
+ - lib/adyen/templates/notification_migration.rb
197
+ - lib/adyen/templates/notification_model.rb
198
+ - lib/adyen/util.rb
199
+ - lib/adyen/version.rb
200
+ - spec/api/api_spec.rb
201
+ - spec/api/payment_service_spec.rb
202
+ - spec/api/recurring_service_spec.rb
203
+ - spec/api/response_spec.rb
204
+ - spec/api/simple_soap_client_spec.rb
205
+ - spec/api/spec_helper.rb
206
+ - spec/api/test_helpers_spec.rb
207
+ - spec/functional/api_spec.rb
208
+ - spec/functional/initializer.rb.ci
209
+ - spec/functional/initializer.rb.sample
210
+ - spec/spec_helper.rb
211
+ - test/form_test.rb
212
+ - test/functional/payment_authorisation_api_test.rb
213
+ - test/functional/payment_modification_api_test.rb
214
+ - test/functional/payout_api_test.rb
215
+ - test/helpers/capybara.rb
216
+ - test/helpers/configure_adyen.rb
217
+ - test/helpers/example_server.rb
218
+ - test/helpers/public/adyen.encrypt.js
219
+ - test/helpers/public/adyen.encrypt.min.js
220
+ - test/helpers/test_cards.rb
221
+ - test/helpers/views/authorized.erb
222
+ - test/helpers/views/hpp.erb
223
+ - test/helpers/views/index.erb
224
+ - test/helpers/views/pay.erb
225
+ - test/helpers/views/redirect_shopper.erb
226
+ - test/hpp/signature_test.rb
227
+ - test/hpp_test.rb
228
+ - test/integration/hpp_integration_test.rb
229
+ - test/integration/payment_using_3d_secure_integration_test.rb
230
+ - test/integration/payment_with_client_side_encryption_integration_test.rb
231
+ - test/rest/signature_test.rb
232
+ - test/rest_list_recurring_details_response_test.rb
233
+ - test/rest_request_test.rb
234
+ - test/rest_response_test.rb
235
+ - test/signature_test.rb
236
+ - test/test_helper.rb
237
+ - test/util_test.rb
238
+ - yard_extensions.rb
239
+ homepage: http://github.com/wvanbergen/adyen/wiki
240
+ licenses:
241
+ - MIT
242
+ metadata: {}
243
+ post_install_message:
244
+ rdoc_options:
245
+ - "--title"
246
+ - adyen_jpiqueras
247
+ - "--main"
248
+ - README.md
249
+ - "--line-numbers"
250
+ - "--inline-source"
251
+ require_paths:
252
+ - lib
253
+ required_ruby_version: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: 1.9.3
258
+ required_rubygems_version: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ requirements:
264
+ - Having Nokogiri installed will speed up XML handling when using the SOAP API.
265
+ rubyforge_project:
266
+ rubygems_version: 2.5.1
267
+ signing_key:
268
+ specification_version: 4
269
+ summary: Integrate Adyen payment services in your Ruby on Rails application.
270
+ test_files:
271
+ - spec/api/api_spec.rb
272
+ - spec/api/payment_service_spec.rb
273
+ - spec/api/recurring_service_spec.rb
274
+ - spec/api/response_spec.rb
275
+ - spec/api/simple_soap_client_spec.rb
276
+ - spec/api/spec_helper.rb
277
+ - spec/api/test_helpers_spec.rb
278
+ - spec/functional/api_spec.rb
279
+ - spec/functional/initializer.rb.ci
280
+ - spec/functional/initializer.rb.sample
281
+ - spec/spec_helper.rb
282
+ - test/form_test.rb
283
+ - test/functional/payment_authorisation_api_test.rb
284
+ - test/functional/payment_modification_api_test.rb
285
+ - test/functional/payout_api_test.rb
286
+ - test/helpers/capybara.rb
287
+ - test/helpers/configure_adyen.rb
288
+ - test/helpers/example_server.rb
289
+ - test/helpers/public/adyen.encrypt.js
290
+ - test/helpers/public/adyen.encrypt.min.js
291
+ - test/helpers/test_cards.rb
292
+ - test/helpers/views/authorized.erb
293
+ - test/helpers/views/hpp.erb
294
+ - test/helpers/views/index.erb
295
+ - test/helpers/views/pay.erb
296
+ - test/helpers/views/redirect_shopper.erb
297
+ - test/hpp/signature_test.rb
298
+ - test/hpp_test.rb
299
+ - test/integration/hpp_integration_test.rb
300
+ - test/integration/payment_using_3d_secure_integration_test.rb
301
+ - test/integration/payment_with_client_side_encryption_integration_test.rb
302
+ - test/rest/signature_test.rb
303
+ - test/rest_list_recurring_details_response_test.rb
304
+ - test/rest_request_test.rb
305
+ - test/rest_response_test.rb
306
+ - test/signature_test.rb
307
+ - test/test_helper.rb
308
+ - test/util_test.rb