adyen_jpiqueras 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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