offsite_payments 2.0.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 (59) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +70 -0
  4. data/lib/offsite_payments.rb +46 -0
  5. data/lib/offsite_payments/action_view_helper.rb +72 -0
  6. data/lib/offsite_payments/helper.rb +119 -0
  7. data/lib/offsite_payments/integrations.rb +14 -0
  8. data/lib/offsite_payments/integrations/a1agregator.rb +245 -0
  9. data/lib/offsite_payments/integrations/authorize_net_sim.rb +580 -0
  10. data/lib/offsite_payments/integrations/bit_pay.rb +150 -0
  11. data/lib/offsite_payments/integrations/bogus.rb +32 -0
  12. data/lib/offsite_payments/integrations/chronopay.rb +283 -0
  13. data/lib/offsite_payments/integrations/citrus.rb +227 -0
  14. data/lib/offsite_payments/integrations/direc_pay.rb +339 -0
  15. data/lib/offsite_payments/integrations/directebanking.rb +237 -0
  16. data/lib/offsite_payments/integrations/doku.rb +171 -0
  17. data/lib/offsite_payments/integrations/dotpay.rb +166 -0
  18. data/lib/offsite_payments/integrations/dwolla.rb +160 -0
  19. data/lib/offsite_payments/integrations/e_payment_plans.rb +146 -0
  20. data/lib/offsite_payments/integrations/easy_pay.rb +137 -0
  21. data/lib/offsite_payments/integrations/epay.rb +161 -0
  22. data/lib/offsite_payments/integrations/first_data.rb +133 -0
  23. data/lib/offsite_payments/integrations/gestpay.rb +201 -0
  24. data/lib/offsite_payments/integrations/hi_trust.rb +179 -0
  25. data/lib/offsite_payments/integrations/ipay88.rb +240 -0
  26. data/lib/offsite_payments/integrations/klarna.rb +291 -0
  27. data/lib/offsite_payments/integrations/liqpay.rb +216 -0
  28. data/lib/offsite_payments/integrations/maksuturva.rb +231 -0
  29. data/lib/offsite_payments/integrations/mollie_ideal.rb +213 -0
  30. data/lib/offsite_payments/integrations/moneybookers.rb +199 -0
  31. data/lib/offsite_payments/integrations/nochex.rb +228 -0
  32. data/lib/offsite_payments/integrations/pag_seguro.rb +255 -0
  33. data/lib/offsite_payments/integrations/paxum.rb +114 -0
  34. data/lib/offsite_payments/integrations/pay_fast.rb +269 -0
  35. data/lib/offsite_payments/integrations/paydollar.rb +142 -0
  36. data/lib/offsite_payments/integrations/payflow_link.rb +194 -0
  37. data/lib/offsite_payments/integrations/paypal.rb +362 -0
  38. data/lib/offsite_payments/integrations/paypal_payments_advanced.rb +23 -0
  39. data/lib/offsite_payments/integrations/paysbuy.rb +71 -0
  40. data/lib/offsite_payments/integrations/payu_in.rb +266 -0
  41. data/lib/offsite_payments/integrations/payu_in_paisa.rb +46 -0
  42. data/lib/offsite_payments/integrations/platron.rb +153 -0
  43. data/lib/offsite_payments/integrations/pxpay.rb +271 -0
  44. data/lib/offsite_payments/integrations/quickpay.rb +232 -0
  45. data/lib/offsite_payments/integrations/rbkmoney.rb +110 -0
  46. data/lib/offsite_payments/integrations/robokassa.rb +154 -0
  47. data/lib/offsite_payments/integrations/sage_pay_form.rb +425 -0
  48. data/lib/offsite_payments/integrations/two_checkout.rb +332 -0
  49. data/lib/offsite_payments/integrations/universal.rb +180 -0
  50. data/lib/offsite_payments/integrations/valitor.rb +200 -0
  51. data/lib/offsite_payments/integrations/verkkomaksut.rb +143 -0
  52. data/lib/offsite_payments/integrations/web_pay.rb +186 -0
  53. data/lib/offsite_payments/integrations/webmoney.rb +119 -0
  54. data/lib/offsite_payments/integrations/wirecard_checkout_page.rb +359 -0
  55. data/lib/offsite_payments/integrations/world_pay.rb +273 -0
  56. data/lib/offsite_payments/notification.rb +71 -0
  57. data/lib/offsite_payments/return.rb +37 -0
  58. data/lib/offsite_payments/version.rb +3 -0
  59. metadata +270 -0
@@ -0,0 +1,273 @@
1
+ module OffsitePayments #:nodoc:
2
+ module Integrations #:nodoc:
3
+ module WorldPay
4
+ mattr_accessor :production_url, :test_url
5
+ self.production_url = 'https://secure.worldpay.com/wcc/purchase'
6
+ self.test_url = 'https://secure-test.worldpay.com/wcc/purchase'
7
+
8
+ def self.service_url
9
+ case OffsitePayments.mode
10
+ when :production
11
+ self.production_url
12
+ when :test
13
+ self.test_url
14
+ else
15
+ raise StandardError, "Integration mode set to an invalid value: #{mode}"
16
+ end
17
+ end
18
+
19
+ def self.notification(post, options = {})
20
+ Notification.new(post, options)
21
+ end
22
+
23
+ def self.return(post, options = {})
24
+ Return.new(post, options)
25
+ end
26
+
27
+ class Helper < OffsitePayments::Helper
28
+ mapping :account, 'instId'
29
+ mapping :amount, 'amount'
30
+ mapping :order, 'cartId'
31
+ mapping :currency, 'currency'
32
+
33
+ mapping :customer, :email => 'email',
34
+ :phone => 'tel'
35
+
36
+ mapping :billing_address, :zip => 'postcode',
37
+ :country => 'country'
38
+
39
+ mapping :description, 'desc'
40
+ mapping :notify_url, 'MC_callback'
41
+ mapping :return_url, 'MC_return'
42
+
43
+ # WorldPay supports two different test modes - :always_succeed and :always_fail
44
+ def initialize(order, account, options = {})
45
+ super
46
+
47
+ if OffsitePayments.mode == :test || options[:test]
48
+ test_mode = case options[:test]
49
+ when :always_fail
50
+ 101
51
+ when false
52
+ 0
53
+ else
54
+ 100
55
+ end
56
+ add_field('testMode', test_mode.to_s)
57
+ elsif OffsitePayments.mode == :always_succeed
58
+ add_field('testMode', '100')
59
+ elsif OffsitePayments.mode == :always_fail
60
+ add_field('testMode', '101')
61
+ end
62
+ end
63
+
64
+ # WorldPay only supports a single address field so we
65
+ # have to concat together - lines are separated using &#10;
66
+ def billing_address(params={})
67
+ add_field(mappings[:billing_address][:zip], params[:zip])
68
+ add_field(mappings[:billing_address][:country], lookup_country_code(params[:country]))
69
+
70
+ address = [params[:address1], params[:address2], params[:city], params[:state]].compact
71
+ add_field('address', address.join('&#10;'))
72
+ end
73
+
74
+ # WorldPay only supports a single name field so we have to concat
75
+ def customer(params={})
76
+ add_field(mappings[:customer][:email], params[:email])
77
+ add_field(mappings[:customer][:phone], params[:phone])
78
+ add_field('name', "#{params[:first_name]} #{params[:last_name]}")
79
+ end
80
+
81
+ # Support for a MD5 hash of selected fields to prevent tampering
82
+ # For further information read the tech note at the address below:
83
+ # http://support.worldpay.com/kb/integration_guides/junior/integration/help/tech_notes/sjig_tn_009.html
84
+ def encrypt(secret, fields = [:amount, :currency, :account, :order])
85
+ signature_fields = fields.collect{ |field| mappings[field] }
86
+ add_field('signatureFields', signature_fields.join(':'))
87
+
88
+ field_values = fields.collect{ |field| form_fields[mappings[field]] }
89
+ signature = "#{secret}:#{field_values.join(':')}"
90
+ add_field('signature', Digest::MD5.hexdigest(signature))
91
+ end
92
+
93
+ # Add a time window for which the payment can be completed. Read the link below for how they work
94
+ # http://support.worldpay.com/kb/integration_guides/junior/integration/help/appendicies/sjig_10100.html
95
+ def valid_from(from_time)
96
+ add_field('authValidFrom', from_time.to_i.to_s + '000')
97
+ end
98
+
99
+ def valid_to(to_time)
100
+ add_field('authValidTo', to_time.to_i.to_s + '000')
101
+ end
102
+
103
+ # WorldPay supports the passing of custom parameters prefixed with the following:
104
+ # C_ : These parameters can be used in the response pages hosted on WorldPay's site
105
+ # M_ : These parameters are passed through to the callback script (if enabled)
106
+ # MC_ or CM_ : These parameters are availble both in the response and callback contexts
107
+ def response_params(params={})
108
+ params.each{|k,v| add_field("C_#{k}",v)}
109
+ end
110
+
111
+ def callback_params(params={})
112
+ params.each{|k,v| add_field("M_#{k}",v)}
113
+ end
114
+
115
+ def combined_params(params={})
116
+ params.each{|k,v| add_field("MC_#{k}",v)}
117
+ end
118
+ end
119
+
120
+ class Notification < OffsitePayments::Notification
121
+ def complete?
122
+ status == 'Completed'
123
+ end
124
+
125
+ def account
126
+ params['instId']
127
+ end
128
+
129
+ def item_id
130
+ params['cartId']
131
+ end
132
+
133
+ def transaction_id
134
+ params['transId']
135
+ end
136
+
137
+ # Time this payment was received by the client in UTC time.
138
+ def received_at
139
+ Time.at(params['transTime'].to_i / 1000).utc
140
+ end
141
+
142
+ # Callback password set in the WorldPay CMS
143
+ def security_key
144
+ params['callbackPW']
145
+ end
146
+
147
+ # the money amount we received in X.2 decimal.
148
+ def gross
149
+ params['authAmount']
150
+ end
151
+
152
+ def currency
153
+ params['authCurrency']
154
+ end
155
+
156
+ # Was this a test transaction?
157
+ def test?
158
+ params.key?('testMode') && params['testMode'] != '0'
159
+ end
160
+
161
+ def status
162
+ params['transStatus'] == 'Y' ? 'Completed' : 'Cancelled'
163
+ end
164
+
165
+ def name
166
+ params['name']
167
+ end
168
+
169
+ def address
170
+ params['address']
171
+ end
172
+
173
+ def postcode
174
+ params['postcode']
175
+ end
176
+
177
+ def country
178
+ params['country']
179
+ end
180
+
181
+ def phone_number
182
+ params['tel']
183
+ end
184
+
185
+ def fax_number
186
+ params['fax']
187
+ end
188
+
189
+ def email_address
190
+ params['email']
191
+ end
192
+
193
+ def card_type
194
+ params['cardType']
195
+ end
196
+
197
+ # WorldPay extended fraud checks returned as a 4 character string
198
+ # 1st char: Credit card CVV check
199
+ # 2nd char: Postcode AVS check
200
+ # 3rd char: Address AVS check
201
+ # 4th char: Country comparison check
202
+ # Possible values are:
203
+ # :not_supported - 0
204
+ # :not_checked - 1
205
+ # :matched - 2
206
+ # :not_matched - 4
207
+ # :partial_match - 8
208
+ def cvv_status
209
+ return avs_value_to_symbol(params['AVS'][0].chr)
210
+ end
211
+
212
+ def postcode_status
213
+ return avs_value_to_symbol(params['AVS'][1].chr)
214
+ end
215
+
216
+ def address_status
217
+ return avs_value_to_symbol(params['AVS'][2].chr)
218
+ end
219
+
220
+ def country_status
221
+ return avs_value_to_symbol(params['AVS'][3].chr)
222
+ end
223
+
224
+ def acknowledge(authcode = nil)
225
+ return true
226
+ end
227
+
228
+ # WorldPay supports the passing of custom parameters through to the callback script
229
+ def custom_params
230
+ return @custom_params ||= read_custom_params
231
+ end
232
+
233
+ private
234
+
235
+ # Take the posted data and move the relevant data into a hash
236
+ def parse(post)
237
+ @raw = post
238
+ for line in post.split('&')
239
+ key, value = *line.scan( %r{^(\w+)\=(.*)$} ).flatten
240
+ params[key] = value
241
+ end
242
+ end
243
+
244
+ # Read the custom params into a hash
245
+ def read_custom_params
246
+ custom = {}
247
+ params.each do |key, value|
248
+ if /\A(M_|MC_|CM_)/ === key
249
+ custom[key.gsub(/\A(M_|MC_|CM_)/, '').to_sym] = value
250
+ end
251
+ end
252
+ custom
253
+ end
254
+
255
+ # Convert a AVS value to a symbol - see above for more about AVS
256
+ def avs_value_to_symbol(value)
257
+ case value.to_s
258
+ when '8'
259
+ :partial_match
260
+ when '4'
261
+ :no_match
262
+ when '2'
263
+ :matched
264
+ when '1'
265
+ :not_checked
266
+ else
267
+ :not_supported
268
+ end
269
+ end
270
+ end
271
+ end
272
+ end
273
+ end
@@ -0,0 +1,71 @@
1
+ module OffsitePayments #:nodoc:
2
+ class Notification
3
+ attr_accessor :params
4
+ attr_accessor :raw
5
+
6
+ # set this to an array in the subclass, to specify which IPs are allowed
7
+ # to send requests
8
+ class_attribute :production_ips
9
+
10
+ # * *Args* :
11
+ # - +doc+ -> raw post string
12
+ # - +options+ -> custom options which individual implementations can
13
+ # utilize
14
+ def initialize(post, options = {})
15
+ @options = options
16
+ empty!
17
+ parse(post)
18
+ end
19
+
20
+ def status
21
+ raise NotImplementedError, "Must implement this method in the subclass"
22
+ end
23
+
24
+ # the money amount we received in X.2 decimal.
25
+ def gross
26
+ raise NotImplementedError, "Must implement this method in the subclass"
27
+ end
28
+
29
+ def gross_cents
30
+ (gross.to_f * 100.0).round
31
+ end
32
+
33
+ # This combines the gross and currency and returns a proper Money object.
34
+ # this requires the money library located at http://rubymoney.github.io/money/
35
+ def amount
36
+ return Money.new(gross_cents, currency) rescue ArgumentError
37
+ return Money.new(gross_cents) # maybe you have an own money object which doesn't take a currency?
38
+ end
39
+
40
+ # reset the notification.
41
+ def empty!
42
+ @params = Hash.new
43
+ @raw = ""
44
+ end
45
+
46
+ # Check if the request comes from an official IP
47
+ def valid_sender?(ip)
48
+ return true if OffsitePayments.mode == :test || production_ips.blank?
49
+ production_ips.include?(ip)
50
+ end
51
+
52
+ def test?
53
+ false
54
+ end
55
+
56
+ def iso_currency
57
+ ActiveMerchant::CurrencyCode.standardize(currency)
58
+ end
59
+
60
+ private
61
+
62
+ # Take the posted data and move the relevant data into a hash
63
+ def parse(post)
64
+ @raw = post.to_s
65
+ for line in @raw.split('&')
66
+ key, value = *line.scan( %r{^([A-Za-z0-9_.-]+)\=(.*)$} ).flatten
67
+ params[key] = CGI.unescape(value.to_s) if key.present?
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,37 @@
1
+ module OffsitePayments #:nodoc:
2
+ class Return
3
+ attr_accessor :params
4
+ attr_reader :notification
5
+
6
+ def initialize(query_string, options = {})
7
+ @params = parse(query_string)
8
+ @options = options
9
+ end
10
+
11
+ # Successful by default. Overridden in the child class
12
+ def success?
13
+ true
14
+ end
15
+
16
+ # Not cancelled by default. Overridden in the child class.
17
+ def cancelled?
18
+ false
19
+ end
20
+
21
+ def message
22
+ end
23
+
24
+ def parse(query_string)
25
+ return {} if query_string.blank?
26
+
27
+ query_string.split('&').inject({}) do |memo, chunk|
28
+ next if chunk.empty?
29
+ key, value = chunk.split('=', 2)
30
+ next if key.empty?
31
+ value = value.nil? ? nil : CGI.unescape(value)
32
+ memo[CGI.unescape(key)] = value
33
+ memo
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ module OffsitePayments
2
+ VERSION = "2.0.0"
3
+ end
metadata ADDED
@@ -0,0 +1,270 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: offsite_payments
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Tobias Luetke
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.14
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 5.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.14
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 5.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: i18n
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.5'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: money
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: 7.0.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: 7.0.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: builder
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 2.1.2
68
+ - - "<"
69
+ - !ruby/object:Gem::Version
70
+ version: 4.0.0
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: 2.1.2
78
+ - - "<"
79
+ - !ruby/object:Gem::Version
80
+ version: 4.0.0
81
+ - !ruby/object:Gem::Dependency
82
+ name: json
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.7'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.7'
95
+ - !ruby/object:Gem::Dependency
96
+ name: active_utils
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 2.2.0
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 2.2.0
109
+ - !ruby/object:Gem::Dependency
110
+ name: nokogiri
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '1.4'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '1.4'
123
+ - !ruby/object:Gem::Dependency
124
+ name: rake
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: mocha
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: 0.13.0
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: 0.13.0
151
+ - !ruby/object:Gem::Dependency
152
+ name: rails
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: 3.2.14
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: 3.2.14
165
+ - !ruby/object:Gem::Dependency
166
+ name: thor
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ description: Offsite Payments is a simple abstraction library used in and sponsored
180
+ by Shopify. It is written by Tobias Luetke, Cody Fauser, and contributors. The aim
181
+ of the project is to put as simple an abstraction as possible on top of offsite
182
+ (often called hosted) payment pages, and allow contributors to easily help services
183
+ such as Shopify extend the number of offsite payment services they support.
184
+ email: tobi@shopify.com
185
+ executables: []
186
+ extensions: []
187
+ extra_rdoc_files: []
188
+ files:
189
+ - MIT-LICENSE
190
+ - README.md
191
+ - lib/offsite_payments.rb
192
+ - lib/offsite_payments/action_view_helper.rb
193
+ - lib/offsite_payments/helper.rb
194
+ - lib/offsite_payments/integrations.rb
195
+ - lib/offsite_payments/integrations/a1agregator.rb
196
+ - lib/offsite_payments/integrations/authorize_net_sim.rb
197
+ - lib/offsite_payments/integrations/bit_pay.rb
198
+ - lib/offsite_payments/integrations/bogus.rb
199
+ - lib/offsite_payments/integrations/chronopay.rb
200
+ - lib/offsite_payments/integrations/citrus.rb
201
+ - lib/offsite_payments/integrations/direc_pay.rb
202
+ - lib/offsite_payments/integrations/directebanking.rb
203
+ - lib/offsite_payments/integrations/doku.rb
204
+ - lib/offsite_payments/integrations/dotpay.rb
205
+ - lib/offsite_payments/integrations/dwolla.rb
206
+ - lib/offsite_payments/integrations/e_payment_plans.rb
207
+ - lib/offsite_payments/integrations/easy_pay.rb
208
+ - lib/offsite_payments/integrations/epay.rb
209
+ - lib/offsite_payments/integrations/first_data.rb
210
+ - lib/offsite_payments/integrations/gestpay.rb
211
+ - lib/offsite_payments/integrations/hi_trust.rb
212
+ - lib/offsite_payments/integrations/ipay88.rb
213
+ - lib/offsite_payments/integrations/klarna.rb
214
+ - lib/offsite_payments/integrations/liqpay.rb
215
+ - lib/offsite_payments/integrations/maksuturva.rb
216
+ - lib/offsite_payments/integrations/mollie_ideal.rb
217
+ - lib/offsite_payments/integrations/moneybookers.rb
218
+ - lib/offsite_payments/integrations/nochex.rb
219
+ - lib/offsite_payments/integrations/pag_seguro.rb
220
+ - lib/offsite_payments/integrations/paxum.rb
221
+ - lib/offsite_payments/integrations/pay_fast.rb
222
+ - lib/offsite_payments/integrations/paydollar.rb
223
+ - lib/offsite_payments/integrations/payflow_link.rb
224
+ - lib/offsite_payments/integrations/paypal.rb
225
+ - lib/offsite_payments/integrations/paypal_payments_advanced.rb
226
+ - lib/offsite_payments/integrations/paysbuy.rb
227
+ - lib/offsite_payments/integrations/payu_in.rb
228
+ - lib/offsite_payments/integrations/payu_in_paisa.rb
229
+ - lib/offsite_payments/integrations/platron.rb
230
+ - lib/offsite_payments/integrations/pxpay.rb
231
+ - lib/offsite_payments/integrations/quickpay.rb
232
+ - lib/offsite_payments/integrations/rbkmoney.rb
233
+ - lib/offsite_payments/integrations/robokassa.rb
234
+ - lib/offsite_payments/integrations/sage_pay_form.rb
235
+ - lib/offsite_payments/integrations/two_checkout.rb
236
+ - lib/offsite_payments/integrations/universal.rb
237
+ - lib/offsite_payments/integrations/valitor.rb
238
+ - lib/offsite_payments/integrations/verkkomaksut.rb
239
+ - lib/offsite_payments/integrations/web_pay.rb
240
+ - lib/offsite_payments/integrations/webmoney.rb
241
+ - lib/offsite_payments/integrations/wirecard_checkout_page.rb
242
+ - lib/offsite_payments/integrations/world_pay.rb
243
+ - lib/offsite_payments/notification.rb
244
+ - lib/offsite_payments/return.rb
245
+ - lib/offsite_payments/version.rb
246
+ homepage: https://github.com/Shopify/offsite_payments
247
+ licenses:
248
+ - MIT
249
+ metadata: {}
250
+ post_install_message:
251
+ rdoc_options: []
252
+ require_paths:
253
+ - lib
254
+ required_ruby_version: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: '0'
259
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ requirements: []
265
+ rubyforge_project:
266
+ rubygems_version: 2.2.2
267
+ signing_key:
268
+ specification_version: 4
269
+ summary: Framework and tools for dealing with offsite (hosted) payment pages.
270
+ test_files: []