adyen 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -108,6 +108,7 @@ module Adyen
108
108
  validate_parameters!(:merchant_account, :reference, :amount => [:currency, :value])
109
109
  content << amount_partial
110
110
  content << shopper_partial if @params[:shopper]
111
+ content << fraud_offset_partial if @params[:fraud_offset]
111
112
  LAYOUT % [@params[:merchant_account], @params[:reference], content]
112
113
  end
113
114
 
@@ -139,16 +140,25 @@ module Adyen
139
140
  end
140
141
 
141
142
  def card_partial
142
- validate_parameters!(:card => [:holder_name, :number, :cvc, :expiry_year, :expiry_month])
143
- card = @params[:card].values_at(:holder_name, :number, :cvc, :expiry_year)
144
- card << @params[:card][:expiry_month].to_i
145
- CARD_PARTIAL % card
143
+ if @params[:card] and @params[:card][:encrypted] and @params[:card][:encrypted][:json]
144
+ ENCRYPTED_CARD_PARTIAL % [@params[:card][:encrypted][:json]]
145
+ else
146
+ validate_parameters!(:card => [:holder_name, :number, :cvc, :expiry_year, :expiry_month])
147
+ card = @params[:card].values_at(:holder_name, :number, :cvc, :expiry_year)
148
+ card << @params[:card][:expiry_month].to_i
149
+ CARD_PARTIAL % card
150
+ end
146
151
  end
147
152
 
148
153
  def shopper_partial
149
154
  @params[:shopper].map { |k, v| SHOPPER_PARTIALS[k] % v }.join("\n")
150
155
  end
151
-
156
+
157
+ def fraud_offset_partial
158
+ validate_parameters!(:fraud_offset)
159
+ FRAUD_OFFSET_PARTIAL % @params[:fraud_offset]
160
+ end
161
+
152
162
  class AuthorisationResponse < Response
153
163
  ERRORS = {
154
164
  "validation 101 Invalid card number" => [:number, 'is not a valid creditcard number'],
@@ -65,6 +65,17 @@ EOS
65
65
  </payment:card>
66
66
  EOS
67
67
 
68
+ # @private
69
+ ENCRYPTED_CARD_PARTIAL = <<EOS
70
+ <additionalAmount xmlns="http://payment.services.adyen.com" xsi:nil="true" />
71
+ <additionalData xmlns="http://payment.services.adyen.com">
72
+ <entry>
73
+ <key xsi:type="xsd:string">card.encrypted.json</key>
74
+ <value xsi:type="xsd:string">%s</value>
75
+ </entry>
76
+ </additionalData>
77
+ EOS
78
+
68
79
  # @private
69
80
  ENABLE_RECURRING_CONTRACTS_PARTIAL = <<EOS
70
81
  <payment:recurring>
@@ -99,6 +110,9 @@ EOS
99
110
  :ip => ' <payment:shopperIP>%s</payment:shopperIP>',
100
111
  :statement => ' <payment:shopperStatement>%s</payment:shopperStatement>',
101
112
  }
113
+
114
+ # @private
115
+ FRAUD_OFFSET_PARTIAL = '<payment:fraudOffset>%s</payment:fraudOffset>'
102
116
  end
103
117
  end
104
118
  end
@@ -4,7 +4,7 @@ class CreateAdyenNotifications < ActiveRecord::Migration
4
4
  def self.up
5
5
  create_table :adyen_notifications do |t|
6
6
  t.boolean :live, :null => false, :default => false
7
- t.string :event_code, :null => false, :limit => 20
7
+ t.string :event_code, :null => false, :limit => 40
8
8
  t.string :psp_reference, :null => false, :limit => 50
9
9
  t.string :original_reference, :null => true
10
10
  t.string :merchant_reference, :null => false
@@ -7,7 +7,7 @@ describe Adyen::API do
7
7
  describe "shortcut methods" do
8
8
  describe "for the PaymentService" do
9
9
  before do
10
- @payment = mock('PaymentService')
10
+ @payment = double('PaymentService')
11
11
  end
12
12
 
13
13
  def should_map_shortcut_to(method, params)
@@ -21,7 +21,8 @@ describe Adyen::API do
21
21
  :amount => { :currency => 'EUR', :value => 1234 },
22
22
  :shopper => { :reference => 'user-id', :email => 's.hopper@example.com' },
23
23
  :card => { :expiry_month => 12, :expiry_year => 2012, :holder_name => "Simon Hopper", :number => '4444333322221111', :cvc => '737' },
24
- :recurring => false
24
+ :recurring => false,
25
+ :fraud_offset => nil
25
26
  )
26
27
  Adyen::API.authorise_payment('order-id',
27
28
  { :currency => 'EUR', :value => 1234 },
@@ -29,6 +30,24 @@ describe Adyen::API do
29
30
  { :expiry_month => 12, :expiry_year => 2012, :holder_name => "Simon Hopper", :number => '4444333322221111', :cvc => '737' }
30
31
  )
31
32
  end
33
+
34
+ it "performs a `authorise payment' request with additional :fraud_offset" do
35
+ should_map_shortcut_to(:authorise_payment,
36
+ :reference => 'order-id',
37
+ :amount => { :currency => 'EUR', :value => 1234 },
38
+ :shopper => { :reference => 'user-id', :email => 's.hopper@example.com' },
39
+ :card => { :expiry_month => 12, :expiry_year => 2012, :holder_name => "Simon Hopper", :number => '4444333322221111', :cvc => '737' },
40
+ :recurring => false,
41
+ :fraud_offset => -100
42
+ )
43
+ Adyen::API.authorise_payment('order-id',
44
+ { :currency => 'EUR', :value => 1234 },
45
+ { :reference => 'user-id', :email => 's.hopper@example.com' },
46
+ { :expiry_month => 12, :expiry_year => 2012, :holder_name => "Simon Hopper", :number => '4444333322221111', :cvc => '737' },
47
+ false,
48
+ -100
49
+ )
50
+ end
32
51
 
33
52
  it "performs a `authorise payment' request with enabling :recurring" do
34
53
  should_map_shortcut_to(:authorise_payment,
@@ -36,7 +55,8 @@ describe Adyen::API do
36
55
  :amount => { :currency => 'EUR', :value => 1234 },
37
56
  :shopper => { :reference => 'user-id', :email => 's.hopper@example.com' },
38
57
  :card => { :expiry_month => 12, :expiry_year => 2012, :holder_name => "Simon Hopper", :number => '4444333322221111', :cvc => '737' },
39
- :recurring => true
58
+ :recurring => true,
59
+ :fraud_offset => nil
40
60
  )
41
61
  Adyen::API.authorise_payment('order-id',
42
62
  { :currency => 'EUR', :value => 1234 },
@@ -51,20 +71,22 @@ describe Adyen::API do
51
71
  :reference => 'order-id',
52
72
  :amount => { :currency => 'EUR', :value => 1234 },
53
73
  :shopper => { :reference => 'user-id', :email => 's.hopper@example.com' },
54
- :recurring_detail_reference => 'LATEST'
74
+ :recurring_detail_reference => 'LATEST',
75
+ :fraud_offset => nil
55
76
  )
56
77
  Adyen::API.authorise_recurring_payment('order-id',
57
78
  { :currency => 'EUR', :value => 1234 },
58
79
  { :reference => 'user-id', :email => 's.hopper@example.com' }
59
80
  )
60
81
  end
61
-
82
+
62
83
  it "performs a `authorise recurring payment' request with specific detail" do
63
84
  should_map_shortcut_to(:authorise_recurring_payment,
64
85
  :reference => 'order-id',
65
86
  :amount => { :currency => 'EUR', :value => 1234 },
66
87
  :shopper => { :reference => 'user-id', :email => 's.hopper@example.com' },
67
- :recurring_detail_reference => 'recurring-detail-reference'
88
+ :recurring_detail_reference => 'recurring-detail-reference',
89
+ :fraud_offset => nil
68
90
  )
69
91
  Adyen::API.authorise_recurring_payment('order-id',
70
92
  { :currency => 'EUR', :value => 1234 },
@@ -72,6 +94,22 @@ describe Adyen::API do
72
94
  'recurring-detail-reference'
73
95
  )
74
96
  end
97
+
98
+ it "performs a `authorise recurring payment' request with specific detail and fraud offset" do
99
+ should_map_shortcut_to(:authorise_recurring_payment,
100
+ :reference => 'order-id',
101
+ :amount => { :currency => 'EUR', :value => 1234 },
102
+ :shopper => { :reference => 'user-id', :email => 's.hopper@example.com' },
103
+ :recurring_detail_reference => 'recurring-detail-reference',
104
+ :fraud_offset => 50
105
+ )
106
+ Adyen::API.authorise_recurring_payment('order-id',
107
+ { :currency => 'EUR', :value => 1234 },
108
+ { :reference => 'user-id', :email => 's.hopper@example.com' },
109
+ 'recurring-detail-reference',
110
+ 50
111
+ )
112
+ end
75
113
 
76
114
  it "performs a `authorise one-click payment' request with specific detail" do
77
115
  should_map_shortcut_to(:authorise_one_click_payment,
@@ -79,7 +117,8 @@ describe Adyen::API do
79
117
  :amount => { :currency => 'EUR', :value => 1234 },
80
118
  :shopper => { :reference => 'user-id', :email => 's.hopper@example.com' },
81
119
  :card => { :cvc => '737' },
82
- :recurring_detail_reference => 'recurring-detail-reference'
120
+ :recurring_detail_reference => 'recurring-detail-reference',
121
+ :fraud_offset => nil
83
122
  )
84
123
  Adyen::API.authorise_one_click_payment('order-id',
85
124
  { :currency => 'EUR', :value => 1234 },
@@ -88,6 +127,24 @@ describe Adyen::API do
88
127
  'recurring-detail-reference'
89
128
  )
90
129
  end
130
+
131
+ it "performs a `authorise one-click payment' request with specific detail and fraud offset" do
132
+ should_map_shortcut_to(:authorise_one_click_payment,
133
+ :reference => 'order-id',
134
+ :amount => { :currency => 'EUR', :value => 1234 },
135
+ :shopper => { :reference => 'user-id', :email => 's.hopper@example.com' },
136
+ :card => { :cvc => '737' },
137
+ :recurring_detail_reference => 'recurring-detail-reference',
138
+ :fraud_offset => -10
139
+ )
140
+ Adyen::API.authorise_one_click_payment('order-id',
141
+ { :currency => 'EUR', :value => 1234 },
142
+ { :reference => 'user-id', :email => 's.hopper@example.com' },
143
+ '737',
144
+ 'recurring-detail-reference',
145
+ -10
146
+ )
147
+ end
91
148
 
92
149
  it "performs a `capture' request" do
93
150
  should_map_shortcut_to(:capture, :psp_reference => 'original-psp-reference', :amount => { :currency => 'EUR', :value => '1234' })
@@ -112,7 +169,7 @@ describe Adyen::API do
112
169
 
113
170
  describe "for the RecurringService" do
114
171
  before do
115
- @recurring = mock('RecurringService')
172
+ @recurring = double('RecurringService')
116
173
  end
117
174
 
118
175
  def should_map_shortcut_to(method, params)
@@ -23,6 +23,15 @@ shared_examples_for "payment requests" do
23
23
  text('./payment:shopperIP').should == '61.294.12.12'
24
24
  text('./payment:shopperStatement').should == 'invoice number 123456'
25
25
  end
26
+
27
+ it "includes the fraud offset" do
28
+ text('./payment:fraudOffset').should == '30'
29
+ end
30
+
31
+ it "does not include the fraud offset if none is given" do
32
+ @payment.params.delete(:fraud_offset)
33
+ xpath('./payment:fraudOffset').should be_empty
34
+ end
26
35
 
27
36
  it "only includes shopper details for given parameters" do
28
37
  # TODO pretty lame, but for now it will do
@@ -86,7 +95,8 @@ describe Adyen::API::PaymentService do
86
95
  #:start_month => ,
87
96
  #:start_year => ,
88
97
  },
89
- :recurring_detail_reference => 'RecurringDetailReference1'
98
+ :recurring_detail_reference => 'RecurringDetailReference1',
99
+ :fraud_offset => 30
90
100
  }
91
101
  @payment = @object = Adyen::API::PaymentService.new(@params)
92
102
  end
@@ -103,6 +113,10 @@ describe Adyen::API::PaymentService do
103
113
  @payment.params[:recurring] = true
104
114
  @payment.params[:shopper] = nil
105
115
  end
116
+
117
+ it_should_validate_request_param(:fraud_offset) do
118
+ @payment.params[:fraud_offset] = ''
119
+ end
106
120
 
107
121
  [:reference, :email].each do |attr|
108
122
  it_should_validate_request_param(:shopper) do
@@ -233,6 +247,7 @@ describe Adyen::API::PaymentService do
233
247
 
234
248
  it_should_validate_request_parameters :merchant_account,
235
249
  :reference,
250
+ :fraud_offset,
236
251
  :amount => [:currency, :value],
237
252
  :shopper => [:reference, :email]
238
253
 
@@ -269,6 +284,7 @@ describe Adyen::API::PaymentService do
269
284
  it_should_validate_request_parameters :merchant_account,
270
285
  :reference,
271
286
  :recurring_detail_reference,
287
+ :fraud_offset,
272
288
  :amount => [:currency, :value],
273
289
  :shopper => [:reference, :email],
274
290
  :card => [:cvc]
@@ -5,7 +5,7 @@ describe Adyen::API::Response do
5
5
  before do
6
6
  http_response = Net::HTTPOK.new('1.1', '200', 'OK')
7
7
  http_response.add_field('Content-type', 'text/xml')
8
- http_response.stub!(:body).and_return(AUTHORISE_RESPONSE)
8
+ http_response.stub(:body).and_return(AUTHORISE_RESPONSE)
9
9
  @response = Adyen::API::Response.new(http_response)
10
10
  end
11
11
 
@@ -36,7 +36,7 @@ describe Adyen::API::Response do
36
36
  describe "with a server error HTTP response and _no_ SOAP fault message" do
37
37
  before do
38
38
  http_response = Net::HTTPServerError.new('1.1', '500', 'Internal Server Error')
39
- http_response.stub!(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body></soap:Body></soap:Envelope>})
39
+ http_response.stub(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body></soap:Body></soap:Envelope>})
40
40
  @response = Adyen::API::Response.new(http_response)
41
41
  end
42
42
 
@@ -48,7 +48,7 @@ describe Adyen::API::Response do
48
48
  describe "with a server error HTTP response _and_ SOAP fault message" do
49
49
  before do
50
50
  http_response = Net::HTTPServerError.new('1.1', '500', 'Internal Server Error')
51
- http_response.stub!(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Illegal argument. For input string: "100.0"</faultstring></soap:Fault></soap:Body></soap:Envelope>})
51
+ http_response.stub(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Illegal argument. For input string: "100.0"</faultstring></soap:Fault></soap:Body></soap:Envelope>})
52
52
  @response = Adyen::API::Response.new(http_response)
53
53
  end
54
54
 
@@ -84,7 +84,7 @@ describe Adyen::API::SimpleSOAPClient do
84
84
  ]
85
85
  ].each do |label, response, expected_exception|
86
86
  it "raises when the HTTP response is a subclass of #{response.class.name}" do
87
- response.stub!(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Illegal argument. For input string: "100.0"</faultstring></soap:Fault></soap:Body></soap:Envelope>})
87
+ response.stub(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Illegal argument. For input string: "100.0"</faultstring></soap:Fault></soap:Body></soap:Envelope>})
88
88
  Net::HTTP.stubbed_response = response
89
89
 
90
90
  exception = nil
@@ -107,7 +107,7 @@ describe Adyen::API::SimpleSOAPClient do
107
107
  ["[505 HTTP Version Not Supported] A server", Net::HTTPBadGateway.new('1.1', '505', 'HTTP Version Not Supported')],
108
108
  ].each do |label, response|
109
109
  it "is raised when the HTTP response is a `real` server error by status code" do
110
- response.stub!(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body></soap:Body></soap:Envelope>})
110
+ response.stub(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body></soap:Body></soap:Envelope>})
111
111
  Net::HTTP.stubbed_response = response
112
112
 
113
113
  exception = nil
@@ -122,11 +122,11 @@ describe Adyen::API::SimpleSOAPClient do
122
122
 
123
123
  it "is not raised when the HTTP response has a 500 status code with a fault message" do
124
124
  response = Net::HTTPServerError.new('1.1', '500', 'Internal Server Error')
125
- response.stub!(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Illegal argument. For input string: "100.0"</faultstring></soap:Fault></soap:Body></soap:Envelope>})
125
+ response.stub(:body).and_return(%{<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Illegal argument. For input string: "100.0"</faultstring></soap:Fault></soap:Body></soap:Envelope>})
126
126
 
127
- lambda do
128
- @client.call_webservice_action('Action', '<bananas>Yes, please</bananas>', Adyen::API::Response)
129
- end.should_not raise_error Adyen::API::SimpleSOAPClient::ServerError
127
+ lambda do
128
+ @client.call_webservice_action('Action', '<bananas>Yes, please</bananas>', Adyen::API::Response)
129
+ end.should_not raise_error
130
130
  end
131
131
  end
132
132
  end
@@ -98,7 +98,7 @@ module APISpecHelper
98
98
  def stub_net_http(response_body)
99
99
  Net::HTTP.stubbing_enabled = true
100
100
  response = Net::HTTPOK.new('1.1', '200', 'OK')
101
- response.stub!(:body).and_return(response_body)
101
+ response.stub(:body).and_return(response_body)
102
102
  Net::HTTP.stubbed_response = response
103
103
  end
104
104
 
@@ -28,7 +28,7 @@ describe Adyen::Form do
28
28
  end
29
29
 
30
30
  it "should generate correct live url in a production environment" do
31
- Adyen.configuration.stub!(:autodetect_environment).and_return('live')
31
+ Adyen.configuration.stub(:autodetect_environment).and_return('live')
32
32
  Adyen::Form.url.should. == 'https://live.adyen.com/hpp/select.shtml'
33
33
  end
34
34
 
metadata CHANGED
@@ -1,65 +1,76 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adyen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
5
- prerelease:
4
+ version: 1.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Willem van Bergen
9
8
  - Michel Barbosa
10
9
  - Stefan Borsje
11
- - Eloy Duran
10
+ - Eloy Durán
12
11
  autorequire:
13
12
  bindir: bin
14
13
  cert_chain: []
15
- date: 2013-01-14 00:00:00.000000000 Z
14
+ date: 2013-07-28 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: rake
19
- requirement: &70260598824500 !ruby/object:Gem::Requirement
20
- none: false
18
+ requirement: !ruby/object:Gem::Requirement
21
19
  requirements:
22
- - - ! '>='
20
+ - - '>='
23
21
  - !ruby/object:Gem::Version
24
22
  version: '0'
25
23
  type: :development
26
24
  prerelease: false
27
- version_requirements: *70260598824500
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
28
30
  - !ruby/object:Gem::Dependency
29
31
  name: rspec
30
- requirement: &70260598798280 !ruby/object:Gem::Requirement
31
- none: false
32
+ requirement: !ruby/object:Gem::Requirement
32
33
  requirements:
33
34
  - - ~>
34
35
  - !ruby/object:Gem::Version
35
- version: '2'
36
+ version: '2.14'
36
37
  type: :development
37
38
  prerelease: false
38
- version_requirements: *70260598798280
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '2.14'
39
44
  - !ruby/object:Gem::Dependency
40
45
  name: rails
41
- requirement: &70260598790820 !ruby/object:Gem::Requirement
42
- none: false
46
+ requirement: !ruby/object:Gem::Requirement
43
47
  requirements:
44
- - - ! '>='
48
+ - - '>='
45
49
  - !ruby/object:Gem::Version
46
50
  version: '2.3'
47
51
  type: :development
48
52
  prerelease: false
49
- version_requirements: *70260598790820
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '2.3'
50
58
  - !ruby/object:Gem::Dependency
51
59
  name: nokogiri
52
- requirement: &70260598661900 !ruby/object:Gem::Requirement
53
- none: false
60
+ requirement: !ruby/object:Gem::Requirement
54
61
  requirements:
55
- - - ! '>='
62
+ - - ~>
56
63
  - !ruby/object:Gem::Version
57
- version: '0'
64
+ version: 1.6.0
58
65
  type: :development
59
66
  prerelease: false
60
- version_requirements: *70260598661900
61
- description: ! " Package to simplify including the Adyen payments services into
62
- a Ruby on Rails application.\n The package provides functionality to create payment
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ~>
70
+ - !ruby/object:Gem::Version
71
+ version: 1.6.0
72
+ description: " Package to simplify including the Adyen payments services into a
73
+ Ruby on Rails application.\n The package provides functionality to create payment
63
74
  forms, handling and storing notifications \n sent by Adyen and consuming the
64
75
  SOAP services provided by Adyen. Moreover, it contains helper\n methods, mocks
65
76
  and matchers to simpify writing tests/specs for your code.\n"
@@ -117,7 +128,9 @@ files:
117
128
  - tasks/github-gem.rake
118
129
  - yard_extensions.rb
119
130
  homepage: http://github.com/wvanbergen/adyen/wiki
120
- licenses: []
131
+ licenses:
132
+ - MIT
133
+ metadata: {}
121
134
  post_install_message:
122
135
  rdoc_options:
123
136
  - --title
@@ -129,23 +142,21 @@ rdoc_options:
129
142
  require_paths:
130
143
  - lib
131
144
  required_ruby_version: !ruby/object:Gem::Requirement
132
- none: false
133
145
  requirements:
134
- - - ! '>='
146
+ - - '>='
135
147
  - !ruby/object:Gem::Version
136
148
  version: '0'
137
149
  required_rubygems_version: !ruby/object:Gem::Requirement
138
- none: false
139
150
  requirements:
140
- - - ! '>='
151
+ - - '>='
141
152
  - !ruby/object:Gem::Version
142
153
  version: '0'
143
154
  requirements:
144
155
  - Having Nokogiri installed will speed up XML handling when using the SOAP API.
145
156
  rubyforge_project:
146
- rubygems_version: 1.8.16
157
+ rubygems_version: 2.0.2
147
158
  signing_key:
148
- specification_version: 3
159
+ specification_version: 4
149
160
  summary: Integrate Adyen payment services in your Ruby on Rails application.
150
161
  test_files:
151
162
  - spec/adyen_spec.rb
@@ -157,3 +168,4 @@ test_files:
157
168
  - spec/api/test_helpers_spec.rb
158
169
  - spec/form_spec.rb
159
170
  - spec/functional/api_spec.rb
171
+ has_rdoc: