adyen 1.3.2 → 1.4.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.
- checksums.yaml +7 -0
- data/.travis.yml +1 -0
- data/Gemfile +2 -2
- data/README.rdoc +1 -1
- data/Rakefile +17 -0
- data/adyen.gemspec +14 -6
- data/lib/adyen.rb +1 -1
- data/lib/adyen/api.rb +32 -23
- data/lib/adyen/api/cacert.pem +1358 -972
- data/lib/adyen/api/payment_service.rb +15 -5
- data/lib/adyen/api/templates/payment_service.rb +14 -0
- data/lib/adyen/templates/notification_migration.rb +1 -1
- data/spec/api/api_spec.rb +65 -8
- data/spec/api/payment_service_spec.rb +17 -1
- data/spec/api/response_spec.rb +3 -3
- data/spec/api/simple_soap_client_spec.rb +6 -6
- data/spec/api/spec_helper.rb +1 -1
- data/spec/form_spec.rb +1 -1
- metadata +42 -30
@@ -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
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
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 =>
|
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
|
data/spec/api/api_spec.rb
CHANGED
@@ -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 =
|
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 =
|
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]
|
data/spec/api/response_spec.rb
CHANGED
@@ -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
|
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
|
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
|
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
|
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
|
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
|
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
|
-
|
128
|
-
|
129
|
-
|
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
|
data/spec/api/spec_helper.rb
CHANGED
@@ -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
|
101
|
+
response.stub(:body).and_return(response_body)
|
102
102
|
Net::HTTP.stubbed_response = response
|
103
103
|
end
|
104
104
|
|
data/spec/form_spec.rb
CHANGED
@@ -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
|
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.
|
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
|
10
|
+
- Eloy Durán
|
12
11
|
autorequire:
|
13
12
|
bindir: bin
|
14
13
|
cert_chain: []
|
15
|
-
date: 2013-
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
53
|
-
none: false
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
54
61
|
requirements:
|
55
|
-
- -
|
62
|
+
- - ~>
|
56
63
|
- !ruby/object:Gem::Version
|
57
|
-
version:
|
64
|
+
version: 1.6.0
|
58
65
|
type: :development
|
59
66
|
prerelease: false
|
60
|
-
version_requirements:
|
61
|
-
|
62
|
-
|
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:
|
157
|
+
rubygems_version: 2.0.2
|
147
158
|
signing_key:
|
148
|
-
specification_version:
|
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:
|