solidus-adyen 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +26 -0
- data/.rubocop.yml +9 -0
- data/.rubocop_todo.yml +325 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +22 -0
- data/README.md +238 -0
- data/Rakefile +16 -0
- data/app/assets/javascripts/spree/backend/solidus-adyen.js +1 -0
- data/app/assets/javascripts/spree/checkout/payment/adyen.js +10 -0
- data/app/assets/javascripts/spree/frontend/solidus-adyen.js +1 -0
- data/app/assets/stylesheets/spree/backend/solidus-adyen/buttons.scss +15 -0
- data/app/assets/stylesheets/spree/backend/solidus-adyen/communication.scss +121 -0
- data/app/assets/stylesheets/spree/backend/solidus-adyen/variables.scss +4 -0
- data/app/assets/stylesheets/spree/backend/solidus-adyen.css +5 -0
- data/app/assets/stylesheets/spree/frontend/solidus-adyen.css +3 -0
- data/app/controllers/concerns/spree/adyen/admin/refunds_controller.rb +59 -0
- data/app/controllers/spree/adyen/hpps_controller.rb +22 -0
- data/app/controllers/spree/adyen_notifications_controller.rb +34 -0
- data/app/controllers/spree/adyen_redirect_controller.rb +90 -0
- data/app/models/adyen_notification.rb +159 -0
- data/app/models/concerns/spree/adyen/order.rb +11 -0
- data/app/models/concerns/spree/adyen/payment.rb +95 -0
- data/app/models/spree/adyen/hpp_source.rb +101 -0
- data/app/models/spree/adyen/notification_processor.rb +102 -0
- data/app/models/spree/adyen/presenters/communication.rb +31 -0
- data/app/models/spree/adyen/presenters/communications/adyen_notification.rb +26 -0
- data/app/models/spree/adyen/presenters/communications/base.rb +50 -0
- data/app/models/spree/adyen/presenters/communications/hpp_source.rb +31 -0
- data/app/models/spree/adyen/presenters/communications/log_entry.rb +28 -0
- data/app/models/spree/adyen/presenters/communications.rb +9 -0
- data/app/models/spree/gateway/adyen_hpp.rb +95 -0
- data/app/overrides/spree/admin/shared/_order_summary.rb +6 -0
- data/app/views/spree/admin/payments/source_forms/_adyen.html.erb +1 -0
- data/app/views/spree/admin/payments/source_views/_adyen.html.erb +14 -0
- data/app/views/spree/adyen/_manual_refund.html.erb +9 -0
- data/app/views/spree/adyen/communication/_communication.html.erb +42 -0
- data/app/views/spree/adyen/hpps/directory.html.erb +10 -0
- data/app/views/spree/checkout/payment/_adyen.html.erb +33 -0
- data/bin/checkout.rb +111 -0
- data/bin/regen.sh +1 -0
- data/config/initializers/solidus_adyen.rb +1 -0
- data/config/locales/en.yml +23 -0
- data/config/routes.rb +13 -0
- data/db/migrate/20131017040945_create_adyen_notifications.rb +29 -0
- data/db/migrate/20150911201942_add_index_adyen_notifications_psp_reference.rb +5 -0
- data/db/migrate/20150914162539_create_spree_adyen_hpp_sources.rb +21 -0
- data/db/migrate/20151007090519_add_days_to_ship_to_config.rb +5 -0
- data/db/migrate/20151020230830_remove_indices_on_adyen_notifications.rb +6 -0
- data/db/migrate/20151106093023_allow_merchant_reference_to_be_null_for_adyen_notification.rb +5 -0
- data/lib/solidus-adyen.rb +1 -0
- data/lib/spree/adyen/engine.rb +32 -0
- data/lib/spree/adyen/form.rb +135 -0
- data/lib/spree/adyen/hpp_check.rb +11 -0
- data/lib/spree/adyen/url.rb +30 -0
- data/lib/spree/adyen/version.rb +5 -0
- data/lib/spree/adyen.rb +6 -0
- data/solidus-adyen.gemspec +51 -0
- data/spec/controllers/concerns/spree/adyen/admin/refunds_controller_spec.rb +76 -0
- data/spec/controllers/spree/adyen/hpps_controller_spec.rb +43 -0
- data/spec/controllers/spree/adyen_notifications_controller_spec.rb +118 -0
- data/spec/controllers/spree/adyen_redirect_controller_spec.rb +154 -0
- data/spec/factories/active_merchant_billing_response.rb +23 -0
- data/spec/factories/adyen_notification.rb +91 -0
- data/spec/factories/spree_adyen_hpp_source.rb +15 -0
- data/spec/factories/spree_gateway_adyen_hpp.rb +23 -0
- data/spec/factories/spree_payment.rb +13 -0
- data/spec/lib/spree/adyen/form_spec.rb +214 -0
- data/spec/models/adyen_notification_spec.rb +86 -0
- data/spec/models/concerns/spree/adyen/order_spec.rb +22 -0
- data/spec/models/concerns/spree/adyen/payment_spec.rb +93 -0
- data/spec/models/spree/adyen/hpp_source_spec.rb +101 -0
- data/spec/models/spree/adyen/notification_processor_spec.rb +205 -0
- data/spec/models/spree/adyen/presenters/communication_spec.rb +62 -0
- data/spec/models/spree/gateway/adyen_hpp_spec.rb +76 -0
- data/spec/spec_helper.rb +65 -0
- data/spec/support/shared_contexts/mock_adyen_api.rb +47 -0
- metadata +463 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d25ff04beda14b6f6f753c04115a9d76cdc3a647
|
4
|
+
data.tar.gz: 5d8805603afd3248f6cd697d4427ef485f97ef91
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 315134e5e8c44eb5923a6c7aeb57061879608ab459e149afdeafb11663302f156209fbd51a60ad98151deb98f2ae736e6d646cc47b9d37a804e959d5d98c634c
|
7
|
+
data.tar.gz: 2c13cddda66a8387274be8a075c13e82a35c03479f5cd6de6fa98ab357e7d1d07328749fc9d9a84fe8171c647fc61a53ce2847387ac99f79f212089f31a440dc
|
data/.gitignore
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
*.rbc
|
2
|
+
*.sassc
|
3
|
+
.sass-cache
|
4
|
+
capybara-*.html
|
5
|
+
.rspec
|
6
|
+
.rvmrc
|
7
|
+
/.bundle
|
8
|
+
/vendor/bundle
|
9
|
+
/log/*
|
10
|
+
/tmp/*
|
11
|
+
/db/*.sqlite3
|
12
|
+
/public/system/*
|
13
|
+
/coverage/
|
14
|
+
/spec/tmp/*
|
15
|
+
**.orig
|
16
|
+
rerun.txt
|
17
|
+
pickle-email-*.html
|
18
|
+
.project
|
19
|
+
config/initializers/secret_token.rb
|
20
|
+
|
21
|
+
Gemfile.lock
|
22
|
+
spec/dummy
|
23
|
+
config/credentials.yml
|
24
|
+
|
25
|
+
spec/cassettes
|
26
|
+
spec/examples.txt
|
data/.rubocop.yml
ADDED
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,325 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2015-10-25 21:33:15 -0700 using RuboCop version 0.34.2.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 1
|
10
|
+
# Offense count: 13
|
11
|
+
# Cop supports --auto-correct.
|
12
|
+
Lint/UnusedMethodArgument:
|
13
|
+
Exclude:
|
14
|
+
- 'app/models/spree/gateway/adyen_hpp.rb'
|
15
|
+
- 'app/models/spree/gateway/adyen_hpp_bogus.rb'
|
16
|
+
|
17
|
+
# Offense count: 24
|
18
|
+
Metrics/AbcSize:
|
19
|
+
Max: 364
|
20
|
+
|
21
|
+
# Offense count: 1
|
22
|
+
# Configuration parameters: CountComments.
|
23
|
+
Metrics/ClassLength:
|
24
|
+
Max: 412
|
25
|
+
|
26
|
+
# Offense count: 468
|
27
|
+
# Configuration parameters: AllowURI, URISchemes.
|
28
|
+
Metrics/LineLength:
|
29
|
+
Max: 243
|
30
|
+
|
31
|
+
# Offense count: 40
|
32
|
+
# Configuration parameters: CountComments.
|
33
|
+
Metrics/MethodLength:
|
34
|
+
Max: 410
|
35
|
+
|
36
|
+
# Offense count: 4
|
37
|
+
# Cop supports --auto-correct.
|
38
|
+
# Configuration parameters: EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle, SupportedLastArgumentHashStyles.
|
39
|
+
Style/AlignHash:
|
40
|
+
Exclude:
|
41
|
+
- 'app/models/spree/adyen/hpp_source.rb'
|
42
|
+
- 'spec/controllers/spree/adyen_notifications_controller_spec.rb'
|
43
|
+
- 'spec/factories/spree_gateway_adyen_hpp.rb'
|
44
|
+
|
45
|
+
# Offense count: 9
|
46
|
+
# Cop supports --auto-correct.
|
47
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
48
|
+
Style/AlignParameters:
|
49
|
+
Exclude:
|
50
|
+
- 'app/models/adyen_notification.rb'
|
51
|
+
- 'app/models/spree/adyen/hpp_source.rb'
|
52
|
+
- 'app/models/spree/gateway/adyen_hpp_bogus.rb'
|
53
|
+
- 'spec/controllers/spree/adyen/hpps_controller_spec.rb'
|
54
|
+
- 'spec/models/spree/adyen/hpp_source_spec.rb'
|
55
|
+
|
56
|
+
# Offense count: 1
|
57
|
+
# Cop supports --auto-correct.
|
58
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
59
|
+
Style/AndOr:
|
60
|
+
Exclude:
|
61
|
+
- 'app/controllers/spree/adyen_notifications_controller.rb'
|
62
|
+
|
63
|
+
# Offense count: 10
|
64
|
+
# Cop supports --auto-correct.
|
65
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles, ProceduralMethods, FunctionalMethods, IgnoredMethods.
|
66
|
+
Style/BlockDelimiters:
|
67
|
+
Enabled: false
|
68
|
+
|
69
|
+
# Offense count: 5
|
70
|
+
# Cop supports --auto-correct.
|
71
|
+
Style/BlockEndNewline:
|
72
|
+
Exclude:
|
73
|
+
- 'spec/controllers/spree/adyen/hpps_controller_spec.rb'
|
74
|
+
- 'spec/lib/spree/adyen/form_spec.rb'
|
75
|
+
- 'spec/models/spree/adyen/hpp_source_spec.rb'
|
76
|
+
|
77
|
+
# Offense count: 4
|
78
|
+
# Cop supports --auto-correct.
|
79
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
80
|
+
Style/BracesAroundHashParameters:
|
81
|
+
Exclude:
|
82
|
+
- 'lib/spree/adyen/form.rb'
|
83
|
+
- 'spec/lib/spree/adyen/form_spec.rb'
|
84
|
+
|
85
|
+
# Offense count: 4
|
86
|
+
# Cop supports --auto-correct.
|
87
|
+
Style/ColonMethodCall:
|
88
|
+
Exclude:
|
89
|
+
- 'lib/spree/adyen/form.rb'
|
90
|
+
- 'spec/controllers/spree/adyen_notifications_controller_spec.rb'
|
91
|
+
- 'spec/lib/spree/adyen/form_spec.rb'
|
92
|
+
- 'spec/spec_helper.rb'
|
93
|
+
|
94
|
+
# Offense count: 6
|
95
|
+
# Cop supports --auto-correct.
|
96
|
+
# Configuration parameters: Keywords.
|
97
|
+
Style/CommentAnnotation:
|
98
|
+
Exclude:
|
99
|
+
- 'app/controllers/spree/adyen_redirect_controller.rb'
|
100
|
+
- 'app/models/adyen_notification.rb'
|
101
|
+
- 'app/models/spree/adyen/hpp_source.rb'
|
102
|
+
- 'app/models/spree/gateway/adyen_hpp.rb'
|
103
|
+
- 'lib/spree/adyen/form.rb'
|
104
|
+
|
105
|
+
# Offense count: 12
|
106
|
+
# Configuration parameters: Exclude.
|
107
|
+
Style/Documentation:
|
108
|
+
Exclude:
|
109
|
+
- 'app/controllers/spree/adyen/hpps_controller.rb'
|
110
|
+
- 'app/controllers/spree/adyen_notifications_controller.rb'
|
111
|
+
- 'app/controllers/spree/adyen_redirect_controller.rb'
|
112
|
+
- 'app/models/spree/adyen/notification_processor.rb'
|
113
|
+
- 'bin/checkout.rb'
|
114
|
+
- 'db/migrate/20150911201942_add_index_adyen_notifications_psp_reference.rb'
|
115
|
+
- 'db/migrate/20151007090519_add_days_to_ship_to_config.rb'
|
116
|
+
- 'db/migrate/20151020230830_remove_indices_on_adyen_notifications.rb'
|
117
|
+
- 'lib/spree/adyen/engine.rb'
|
118
|
+
- 'lib/spree/adyen/form.rb'
|
119
|
+
- 'lib/spree/adyen/url.rb'
|
120
|
+
- 'lib/spree/adyen/version.rb'
|
121
|
+
|
122
|
+
# Offense count: 56
|
123
|
+
# Cop supports --auto-correct.
|
124
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
125
|
+
Style/DotPosition:
|
126
|
+
Enabled: false
|
127
|
+
|
128
|
+
# Offense count: 7
|
129
|
+
# Cop supports --auto-correct.
|
130
|
+
Style/EmptyLines:
|
131
|
+
Exclude:
|
132
|
+
- 'solidus-adyen.gemspec'
|
133
|
+
|
134
|
+
# Offense count: 5
|
135
|
+
# Cop supports --auto-correct.
|
136
|
+
Style/EmptyLinesAroundAccessModifier:
|
137
|
+
Exclude:
|
138
|
+
- 'app/controllers/spree/adyen_notifications_controller.rb'
|
139
|
+
- 'app/models/spree/adyen/hpp_source.rb'
|
140
|
+
- 'lib/spree/adyen/form.rb'
|
141
|
+
|
142
|
+
# Offense count: 6
|
143
|
+
# Cop supports --auto-correct.
|
144
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
145
|
+
Style/EmptyLinesAroundBlockBody:
|
146
|
+
Exclude:
|
147
|
+
- 'spec/factories/spree_gateway_adyen_hpp_bogus.rb'
|
148
|
+
- 'spec/lib/spree/adyen/form_spec.rb'
|
149
|
+
|
150
|
+
# Offense count: 2
|
151
|
+
# Cop supports --auto-correct.
|
152
|
+
Style/EmptyLiteral:
|
153
|
+
Exclude:
|
154
|
+
- 'spec/factories/active_merchant_billing_response.rb'
|
155
|
+
|
156
|
+
# Offense count: 105
|
157
|
+
# Cop supports --auto-correct.
|
158
|
+
# Configuration parameters: AllowForAlignment.
|
159
|
+
Style/ExtraSpacing:
|
160
|
+
Exclude:
|
161
|
+
- 'spec/lib/spree/adyen/form_spec.rb'
|
162
|
+
- 'spec/spec_helper.rb'
|
163
|
+
|
164
|
+
# Offense count: 1
|
165
|
+
# Configuration parameters: Exclude.
|
166
|
+
Style/FileName:
|
167
|
+
Exclude:
|
168
|
+
- 'lib/solidus-adyen.rb'
|
169
|
+
|
170
|
+
# Offense count: 16
|
171
|
+
# Configuration parameters: MinBodyLength.
|
172
|
+
Style/GuardClause:
|
173
|
+
Enabled: false
|
174
|
+
|
175
|
+
# Offense count: 347
|
176
|
+
# Cop supports --auto-correct.
|
177
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles, UseHashRocketsWithSymbolValues.
|
178
|
+
Style/HashSyntax:
|
179
|
+
Enabled: false
|
180
|
+
|
181
|
+
# Offense count: 4
|
182
|
+
# Cop supports --auto-correct.
|
183
|
+
# Configuration parameters: MaxLineLength.
|
184
|
+
Style/IfUnlessModifier:
|
185
|
+
Exclude:
|
186
|
+
- 'app/controllers/spree/adyen_notifications_controller.rb'
|
187
|
+
- 'app/models/spree/adyen/notification_processor.rb'
|
188
|
+
|
189
|
+
# Offense count: 2
|
190
|
+
# Cop supports --auto-correct.
|
191
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
192
|
+
Style/IndentationConsistency:
|
193
|
+
Exclude:
|
194
|
+
- 'spec/lib/spree/adyen/form_spec.rb'
|
195
|
+
|
196
|
+
# Offense count: 9
|
197
|
+
# Cop supports --auto-correct.
|
198
|
+
# Configuration parameters: Width.
|
199
|
+
Style/IndentationWidth:
|
200
|
+
Exclude:
|
201
|
+
- 'spec/factories/adyen_notification.rb'
|
202
|
+
|
203
|
+
# Offense count: 1
|
204
|
+
# Cop supports --auto-correct.
|
205
|
+
Style/LeadingCommentSpace:
|
206
|
+
Exclude:
|
207
|
+
- 'app/controllers/spree/adyen_redirect_controller.rb'
|
208
|
+
|
209
|
+
# Offense count: 20
|
210
|
+
# Cop supports --auto-correct.
|
211
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
212
|
+
Style/MethodDefParentheses:
|
213
|
+
Enabled: false
|
214
|
+
|
215
|
+
# Offense count: 3
|
216
|
+
# Cop supports --auto-correct.
|
217
|
+
Style/MultilineBlockLayout:
|
218
|
+
Exclude:
|
219
|
+
- 'spec/controllers/spree/adyen/hpps_controller_spec.rb'
|
220
|
+
- 'spec/lib/spree/adyen/form_spec.rb'
|
221
|
+
- 'spec/models/spree/adyen/hpp_source_spec.rb'
|
222
|
+
|
223
|
+
# Offense count: 7
|
224
|
+
# Cop supports --auto-correct.
|
225
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
226
|
+
Style/MultilineOperationIndentation:
|
227
|
+
Enabled: false
|
228
|
+
|
229
|
+
# Offense count: 1
|
230
|
+
# Cop supports --auto-correct.
|
231
|
+
Style/NumericLiterals:
|
232
|
+
MinDigits: 15
|
233
|
+
|
234
|
+
# Offense count: 3
|
235
|
+
# Cop supports --auto-correct.
|
236
|
+
# Configuration parameters: PreferredDelimiters.
|
237
|
+
Style/PercentLiteralDelimiters:
|
238
|
+
Exclude:
|
239
|
+
- 'spec/models/spree/adyen/hpp_source_spec.rb'
|
240
|
+
- 'spec/spec_helper.rb'
|
241
|
+
|
242
|
+
# Offense count: 1
|
243
|
+
# Cop supports --auto-correct.
|
244
|
+
# Configuration parameters: AllowMultipleReturnValues.
|
245
|
+
Style/RedundantReturn:
|
246
|
+
Exclude:
|
247
|
+
- 'app/models/spree/adyen/notification_processor.rb'
|
248
|
+
|
249
|
+
# Offense count: 10
|
250
|
+
# Cop supports --auto-correct.
|
251
|
+
Style/RedundantSelf:
|
252
|
+
Exclude:
|
253
|
+
- 'app/models/adyen_notification.rb'
|
254
|
+
- 'app/models/spree/adyen/hpp_source.rb'
|
255
|
+
|
256
|
+
# Offense count: 10
|
257
|
+
# Cop supports --auto-correct.
|
258
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
259
|
+
Style/SignalException:
|
260
|
+
Exclude:
|
261
|
+
- 'app/controllers/spree/adyen_redirect_controller.rb'
|
262
|
+
- 'app/models/spree/gateway/adyen_hpp_bogus.rb'
|
263
|
+
- 'lib/spree/adyen/payment.rb'
|
264
|
+
|
265
|
+
# Offense count: 2
|
266
|
+
# Cop supports --auto-correct.
|
267
|
+
# Configuration parameters: AllowIfMethodIsEmpty.
|
268
|
+
Style/SingleLineMethods:
|
269
|
+
Exclude:
|
270
|
+
- 'app/models/spree/gateway/adyen_hpp.rb'
|
271
|
+
|
272
|
+
# Offense count: 738
|
273
|
+
# Cop supports --auto-correct.
|
274
|
+
Style/SingleSpaceBeforeFirstArg:
|
275
|
+
Enabled: false
|
276
|
+
|
277
|
+
# Offense count: 30
|
278
|
+
# Cop supports --auto-correct.
|
279
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
280
|
+
Style/SpaceBeforeBlockBraces:
|
281
|
+
Enabled: false
|
282
|
+
|
283
|
+
# Offense count: 1
|
284
|
+
# Cop supports --auto-correct.
|
285
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
|
286
|
+
Style/SpaceInsideBlockBraces:
|
287
|
+
Enabled: false
|
288
|
+
|
289
|
+
# Offense count: 1
|
290
|
+
# Cop supports --auto-correct.
|
291
|
+
Style/SpaceInsideBrackets:
|
292
|
+
Exclude:
|
293
|
+
- 'app/models/adyen_notification.rb'
|
294
|
+
|
295
|
+
# Offense count: 3
|
296
|
+
# Cop supports --auto-correct.
|
297
|
+
# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SupportedStyles.
|
298
|
+
Style/SpaceInsideHashLiteralBraces:
|
299
|
+
Enabled: false
|
300
|
+
|
301
|
+
# Offense count: 1
|
302
|
+
# Cop supports --auto-correct.
|
303
|
+
Style/SpecialGlobalVars:
|
304
|
+
Exclude:
|
305
|
+
- 'solidus-adyen.gemspec'
|
306
|
+
|
307
|
+
# Offense count: 4
|
308
|
+
# Cop supports --auto-correct.
|
309
|
+
# Configuration parameters: EnforcedStyleForMultiline, SupportedStyles.
|
310
|
+
Style/TrailingComma:
|
311
|
+
Exclude:
|
312
|
+
- 'spec/models/adyen_notification_spec.rb'
|
313
|
+
|
314
|
+
# Offense count: 17
|
315
|
+
# Cop supports --auto-correct.
|
316
|
+
Style/TrailingWhitespace:
|
317
|
+
Exclude:
|
318
|
+
- 'db/migrate/20131017040945_create_adyen_notifications.rb'
|
319
|
+
- 'spec/controllers/spree/adyen/hpps_controller_spec.rb'
|
320
|
+
|
321
|
+
# Offense count: 23
|
322
|
+
# Cop supports --auto-correct.
|
323
|
+
# Configuration parameters: WordRegex.
|
324
|
+
Style/WordArray:
|
325
|
+
MinSize: 3
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Washington Luiz
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,238 @@
|
|
1
|
+
# Solidus-Adyen
|
2
|
+
Adds support for Adyen Hosted Payment Page payments to Solidus stores using the
|
3
|
+
[Adyen](https://github.com/wvanbergen/adyen/) gem.
|
4
|
+
|
5
|
+
Due to the way Adyen's payment API works, the payments created using the
|
6
|
+
AdyenHPP method's behavior differ significantly from normal payments.
|
7
|
+
|
8
|
+
Adyen's API is totally asynchronous, Solidus makes a request to modify a
|
9
|
+
payment, and some time in the future Adyen responds to a specified endpoint
|
10
|
+
with the result of the action. After capture/refund/cancellation the payment
|
11
|
+
will move to a `processing` state, and will be change to the new state after the
|
12
|
+
notification is received from Adyen.
|
13
|
+
|
14
|
+
# Installation
|
15
|
+
Add this line to your application's Gemfile:
|
16
|
+
```ruby
|
17
|
+
gem 'solidus-adyen', github: 'StemboltHQ/solidus-adyen', tag: 'v0.1.1'
|
18
|
+
```
|
19
|
+
|
20
|
+
Then run:
|
21
|
+
```bash
|
22
|
+
$ bundle install
|
23
|
+
$ bundle exec rake spree_adyen:install:migrations
|
24
|
+
$ bundle exec rake db:migrate
|
25
|
+
```
|
26
|
+
|
27
|
+
# Usage
|
28
|
+
|
29
|
+
To integrate with Adyen payments you'll need to request API credentials by
|
30
|
+
signing up at Adyen's [website](https://www.adyen.com/).
|
31
|
+
|
32
|
+
This gem only supports Adyen HPP payment methods. At this time there are no plans
|
33
|
+
to support the direct payment methods.
|
34
|
+
|
35
|
+
A payment method called `AdyenHPP` added to the list of available payment methods
|
36
|
+
allowing stores to authorize payments using Adyen Hosted Payments Page solution. This works much
|
37
|
+
like paypal and similar services where the customer is redirected to Adyen at
|
38
|
+
the payment step, and is redirected back to your store after they have
|
39
|
+
completed payment.
|
40
|
+
|
41
|
+
Please look into the Adyen gem wiki https://github.com/wvanbergen/adyen/wiki and
|
42
|
+
Adyen Integration Manual for further info https://www.adyen.com/developers/api/
|
43
|
+
|
44
|
+
# Configuration
|
45
|
+
## Application Server
|
46
|
+
Define two environment variables `$ADYEN_NOTIFY_USER` and `$ADYEN_NOTIFY_PASSWD`
|
47
|
+
that are available to the rails server. These will be used Adyen to authenticate
|
48
|
+
with the application server when it `POST`'s notifications which will update
|
49
|
+
the state of a payment.
|
50
|
+
|
51
|
+
Obviously these should be kept secret as they will be used to update the state
|
52
|
+
of payments.
|
53
|
+
|
54
|
+
## Server Communication
|
55
|
+
To receive notifications from Adyen about the outcome of payment modifications
|
56
|
+
(authorization, capture, refund, cancellation) you will need to configure your merchant
|
57
|
+
account with Adyen with the proper url to the
|
58
|
+
`Spree::AdyenNotifications#notify` action.
|
59
|
+
```bash
|
60
|
+
$ rake routes | grep spree/adyen_notifications#notify
|
61
|
+
adyen_notify POST /adyen/notify(.:format) spree/adyen_notifications#notify
|
62
|
+
```
|
63
|
+
is the default path for the endpoint.
|
64
|
+
|
65
|
+
It is worth noting that Adyen will only issue notifications to servers that
|
66
|
+
are running on standard HTTP ports, so your rails server must be accessible on
|
67
|
+
port 80, 8080, [or some other http-alternative
|
68
|
+
port](https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers).
|
69
|
+
|
70
|
+
Visit [Settings > Server
|
71
|
+
Communication](https://ca-test.adyen.com/ca/ca/config/configurethirdparty.shtml)
|
72
|
+
and click 'edit & test' for 'Standard Notification', the other notifications
|
73
|
+
are not used by this integration and may cause undefined behavior if enabled.
|
74
|
+
|
75
|
+
Use the following configuration:
|
76
|
+
|
77
|
+
Field | Value
|
78
|
+
----------------------------|---------------------------------------------------
|
79
|
+
URL | http://your.server/adyen/notify *or whatever you have changed the previous path to*
|
80
|
+
SSL Version | SSL
|
81
|
+
Active | checked
|
82
|
+
Service Version | 1
|
83
|
+
Method | HTTP POST
|
84
|
+
Populate SOAP Action header | unchecked
|
85
|
+
User name | $ADYEN_NOTIFY_USER
|
86
|
+
Password | $ADYEN_NOTIFY_PASSWD
|
87
|
+
|
88
|
+
Save your changes and click 'Test Configuration', everything should be successful.
|
89
|
+
|
90
|
+
If you get errors saying that it was unauthorized you forgot to set the username
|
91
|
+
and password environment variables on the server.
|
92
|
+
|
93
|
+
## Skin
|
94
|
+
A skin defines the look, feel, and behavior of the hosted payment page.
|
95
|
+
|
96
|
+
To set one up visit [Skins](https://ca-test.adyen.com/ca/ca/skin/skins.shtml)
|
97
|
+
and edit an existing skin or create a new one.
|
98
|
+
|
99
|
+
Fill in
|
100
|
+
|
101
|
+
field | Test platform | Live platform
|
102
|
+
------------|-----------------------------------------|-------------------------
|
103
|
+
HMAC Keys | *some secure key* | *some secure key*
|
104
|
+
Result URLs | http://your.site/checkout/payment/adyen | http://your.site/checkout/payment/adyen
|
105
|
+
|
106
|
+
Write down the values you use for HMAC keys as you'll be using them later when
|
107
|
+
your create the payment method.
|
108
|
+
|
109
|
+
## AdyenHPP Payment Method
|
110
|
+
In the Solidus admin, go to your payment methods and create a new payment method
|
111
|
+
using the `Spree::Gateway::AdyenHPP` provider.
|
112
|
+
|
113
|
+
It is *very* important to note if any of the following values entered have any
|
114
|
+
trailing or leading whitespace everything will break.
|
115
|
+
|
116
|
+
Use the following config
|
117
|
+
|
118
|
+
Field | Value
|
119
|
+
-------------|------------------------------------------------------------------
|
120
|
+
Server | test
|
121
|
+
Auto Capture | false
|
122
|
+
Environment | Development
|
123
|
+
Display | Front End
|
124
|
+
Active | Yes
|
125
|
+
|
126
|
+
Fill in `Api username`, `Api password`, `Merchant Account`, `Shared
|
127
|
+
Secret`, and `Skin Code` with the values found using the steps below.
|
128
|
+
|
129
|
+
To find your `Api Username` and `Api password`:
|
130
|
+
+ Log into your Adyen account
|
131
|
+
+ Click [Settings > Users](https://ca-test.adyen.com/ca/ca/config/users.shtml)
|
132
|
+
from the left hand navigation
|
133
|
+
+ In the table, change the filter by selecting `System` from the select on
|
134
|
+
the left hand side of table header (`Customer` is highlighted by default)
|
135
|
+
+ Click the linked value in the `Name` column you wish to use.
|
136
|
+
+ Under the `User Account Details` fieldset the value of `User Name` is
|
137
|
+
your `Api Username` and the value of `Password` will be your `Api
|
138
|
+
Password`
|
139
|
+
|
140
|
+
To find your `Merchant Account`:
|
141
|
+
+ Log into your Adyen account
|
142
|
+
+ In the top navigation bar beside the magnifying class click on the box that's text
|
143
|
+
is the same as your username
|
144
|
+
+ In the table, under the column called `Account Code` is your `merchant
|
145
|
+
account` name
|
146
|
+
|
147
|
+
To find your `Skin Code` and `Shared Secret`:
|
148
|
+
+ Log into your Adyen account
|
149
|
+
+ click [Skins](https://ca-test.adyen.com/ca/ca/skin/skins.shtml) from the left hand nav
|
150
|
+
+ Click the link under the `skin code` column whose value for the column `valid
|
151
|
+
accounts` matches your `Merchant Account`
|
152
|
+
+ Within the `Skin details` field-set
|
153
|
+
+ The value for `Skin Code` is the value of text input with the same name
|
154
|
+
+ The value for `Shared Secret` is the value of text input labeled `HMAC Keys`
|
155
|
+
|
156
|
+
To verify that your payment method is configured properly:
|
157
|
+
+ Go to your Solidus store's homepage
|
158
|
+
+ Add an item to cart
|
159
|
+
+ Click Check out
|
160
|
+
+ Enter an Address
|
161
|
+
+ On the Payment step, select your Adyen payment method, and then 'pay with
|
162
|
+
Adyen'
|
163
|
+
*if no payment methods show up here check your server logs, you likely don't
|
164
|
+
have the payment method configured properly.*
|
165
|
+
+ You should be redirected to Adyen's portal
|
166
|
+
+ Congratulations!
|
167
|
+
|
168
|
+
# HPP Directory Lookup
|
169
|
+
This gem supports [adyen directory look ups](https://docs.adyen.com/display/TD/Directory+lookup+-+Skip+HPP).
|
170
|
+
The [default checkout view](../master/app/views/spree/checkout/payment/_adyen.html.erb#L10-L13)
|
171
|
+
does provide the functionality to asynchronously load the payment methods, but
|
172
|
+
if you want to include this feature in your own custom checkout views you can
|
173
|
+
follow the instructions below.
|
174
|
+
|
175
|
+
Include [spree/checkout/payment/adyen.js](../master/app/assets/javascripts/spree/checkout/payment/adyen.js)
|
176
|
+
on your checkout page. Add an element that has an id of `adyen-hpp-details` and
|
177
|
+
has
|
178
|
+
|
179
|
+
```ruby
|
180
|
+
data: {
|
181
|
+
url: directory_adyen_hpp_path(
|
182
|
+
order_id: @order.id,
|
183
|
+
payment_method_id: payment_method.id)}
|
184
|
+
```
|
185
|
+
|
186
|
+
You can also skip using the provided js if you really want to! Important
|
187
|
+
thing here is just to make a `get` to `directory_adyen_hpp_path` with the `order_id`
|
188
|
+
and `payment_method_id` and then insert the resultant html somewhere in the DOM.
|
189
|
+
This will then make the request to adyen to get a list of payment methods that
|
190
|
+
are supported and then render the payment links.
|
191
|
+
|
192
|
+
If you just want to style the list of Adyen payment methods, just override the
|
193
|
+
[spree/adyen/hpps/directory](../master/app/views/spree/adyen/hpps/directory.html.erb)
|
194
|
+
view. Take a look at the existing version to get an idea of what is available
|
195
|
+
in the view.
|
196
|
+
|
197
|
+
# Testing
|
198
|
+
```bash
|
199
|
+
$ bundle exec rake test_app
|
200
|
+
$ rspec
|
201
|
+
```
|
202
|
+
|
203
|
+
# Development
|
204
|
+
My prefered method of setting up a sandbox is with
|
205
|
+
```bash
|
206
|
+
$ rake test_app
|
207
|
+
$ cd spec/dummy
|
208
|
+
$ rake railties:install:migrations
|
209
|
+
$ rake db:migrate
|
210
|
+
$ rake db:seed
|
211
|
+
$ rake db:spree_sample:load
|
212
|
+
$ ./bin/rails s
|
213
|
+
```
|
214
|
+
You will need to reverse tunnel or make your server publicly available by some
|
215
|
+
other means - and update the server communication as well as the skin's url
|
216
|
+
with the proper end point to receive notifications.
|
217
|
+
|
218
|
+
# Test Credit Card Info
|
219
|
+
|
220
|
+
https://support.adyen.com/index.php?/Knowledgebase/Article/View/11/0/test-card-numbers
|
221
|
+
|
222
|
+
# Terminology and other API information
|
223
|
+
[More info about Adyen can be found here](https://docs.adyen.com/display/TD/3D+Secure).
|
224
|
+
Includes information about the adyen soap api and the parameters that it accepts.
|
225
|
+
|
226
|
+
**e.g.**
|
227
|
+
> paRequest, md, issuerUrl, resultCode, PaReq, MD, TermUrL, etc.
|
228
|
+
|
229
|
+
If you find some variable that is not documented in the gem, it's likely
|
230
|
+
defined here.
|
231
|
+
|
232
|
+
# Contributing
|
233
|
+
|
234
|
+
1. Fork it
|
235
|
+
2. Create your feature branch (`git checkout -b feature/bug/refactor-thing`)
|
236
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
237
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
238
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "rake"
|
3
|
+
require "rake/testtask"
|
4
|
+
require "rake/packagetask"
|
5
|
+
require "rubygems/package_task"
|
6
|
+
require "rspec/core"
|
7
|
+
require "rspec/core/rake_task"
|
8
|
+
require "spree/testing_support/extension_rake"
|
9
|
+
|
10
|
+
task default: [:spec]
|
11
|
+
|
12
|
+
desc "Generates a dummy app for testing"
|
13
|
+
task :test_app do
|
14
|
+
ENV["LIB_NAME"] = "solidus-adyen"
|
15
|
+
Rake::Task["extension:test_app"].invoke
|
16
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require spree/backend
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require spree/frontend
|
@@ -0,0 +1,15 @@
|
|
1
|
+
@import 'variables';
|
2
|
+
|
3
|
+
.button-error {
|
4
|
+
background-color: $color-error;
|
5
|
+
|
6
|
+
&.fa:before {
|
7
|
+
color: $color-warning;
|
8
|
+
}
|
9
|
+
&:hover {
|
10
|
+
background-color: lighten($color-error, 5%);
|
11
|
+
}
|
12
|
+
&:active {
|
13
|
+
background-color: darken($color-error, 5%);
|
14
|
+
}
|
15
|
+
}
|