spree_gateway 2.1.1 → 2.2.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 (84) hide show
  1. checksums.yaml +4 -4
  2. metadata +185 -116
  3. data/.gitignore +0 -14
  4. data/.rspec +0 -1
  5. data/.travis.yml +0 -22
  6. data/Gemfile +0 -21
  7. data/LICENSE +0 -26
  8. data/README.md +0 -68
  9. data/Rakefile +0 -14
  10. data/Versionfile +0 -12
  11. data/app/assets/javascripts/store/gateway/stripe.js.coffee +0 -58
  12. data/app/assets/javascripts/store/spree_gateway.js +0 -2
  13. data/app/assets/stylesheets/store/spree_gateway.css +0 -8
  14. data/app/controllers/spree/checkout_controller_decorator.rb +0 -51
  15. data/app/controllers/spree/skrill_status_controller.rb +0 -39
  16. data/app/models/spree/billing_integration/skrill/quick_checkout.rb +0 -48
  17. data/app/models/spree/gateway/authorize_net.rb +0 -16
  18. data/app/models/spree/gateway/authorize_net_cim.rb +0 -132
  19. data/app/models/spree/gateway/balanced_gateway.rb +0 -65
  20. data/app/models/spree/gateway/banwire.rb +0 -15
  21. data/app/models/spree/gateway/beanstream.rb +0 -193
  22. data/app/models/spree/gateway/braintree_gateway.rb +0 -147
  23. data/app/models/spree/gateway/card_save.rb +0 -10
  24. data/app/models/spree/gateway/data_cash.rb +0 -10
  25. data/app/models/spree/gateway/eway.rb +0 -20
  26. data/app/models/spree/gateway/fatzebra.rb +0 -15
  27. data/app/models/spree/gateway/linkpoint.rb +0 -28
  28. data/app/models/spree/gateway/maxipago.rb +0 -14
  29. data/app/models/spree/gateway/moneris.rb +0 -11
  30. data/app/models/spree/gateway/pay_junction.rb +0 -16
  31. data/app/models/spree/gateway/pay_pal_gateway.rb +0 -12
  32. data/app/models/spree/gateway/payflow_pro.rb +0 -17
  33. data/app/models/spree/gateway/paymill.rb +0 -12
  34. data/app/models/spree/gateway/pin_gateway.rb +0 -15
  35. data/app/models/spree/gateway/sage_pay.rb +0 -11
  36. data/app/models/spree/gateway/samurai.rb +0 -63
  37. data/app/models/spree/gateway/secure_pay_au.rb +0 -10
  38. data/app/models/spree/gateway/stripe_gateway.rb +0 -103
  39. data/app/models/spree/gateway/usa_epay.rb +0 -9
  40. data/app/models/spree/gateway/worldpay.rb +0 -91
  41. data/app/models/spree/skrill_transaction.rb +0 -19
  42. data/app/views/spree/admin/log_entries/_braintree.html.erb +0 -31
  43. data/app/views/spree/admin/log_entries/_stripe.html.erb +0 -28
  44. data/app/views/spree/admin/payments/source_forms/_quickcheckout.html.erb +0 -8
  45. data/app/views/spree/admin/payments/source_forms/_stripe.html.erb +0 -1
  46. data/app/views/spree/admin/payments/source_views/_quickcheckout.html.erb +0 -39
  47. data/app/views/spree/admin/payments/source_views/_stripe.html.erb +0 -1
  48. data/app/views/spree/checkout/payment/_quickcheckout.html.erb +0 -26
  49. data/app/views/spree/checkout/payment/_stripe.html.erb +0 -21
  50. data/config/initializers/savon.rb +0 -3
  51. data/config/locales/bg.yml +0 -11
  52. data/config/locales/de.yml +0 -11
  53. data/config/locales/en.yml +0 -30
  54. data/config/locales/sv.yml +0 -11
  55. data/config/routes.rb +0 -20
  56. data/db/migrate/20111118164631_create_skrill_transactions.rb +0 -14
  57. data/db/migrate/20121017004102_update_braintree_payment_method_type.rb +0 -9
  58. data/db/migrate/20130213222555_update_stripe_payment_method_type.rb +0 -9
  59. data/db/migrate/20130415222802_update_balanced_payment_method_type.rb +0 -9
  60. data/db/migrate/20131008221012_update_paypal_payment_method_type.rb +0 -9
  61. data/db/migrate/20131112133401_migrate_stripe_preferences.rb +0 -8
  62. data/lib/active_merchant/billing/skrill.rb +0 -18
  63. data/lib/generators/spree_gateway/install/install_generator.rb +0 -28
  64. data/lib/spree_gateway.rb +0 -3
  65. data/lib/spree_gateway/engine.rb +0 -42
  66. data/script/rails +0 -5
  67. data/spec/factories/payment_method_factory.rb +0 -4
  68. data/spec/features/stripe_checkout_spec.rb +0 -82
  69. data/spec/models/gateway/authorize_net_cim_spec.rb +0 -17
  70. data/spec/models/gateway/authorize_net_spec.rb +0 -17
  71. data/spec/models/gateway/balanced_gateway_spec.rb +0 -9
  72. data/spec/models/gateway/banwire_spec.rb +0 -9
  73. data/spec/models/gateway/braintree_gateway_spec.rb +0 -289
  74. data/spec/models/gateway/eway_spec.rb +0 -17
  75. data/spec/models/gateway/fatzebra_spec.rb +0 -47
  76. data/spec/models/gateway/linkpoint_spec.rb +0 -60
  77. data/spec/models/gateway/pay_junction_spec.rb +0 -17
  78. data/spec/models/gateway/payflow_pro_spec.rb +0 -17
  79. data/spec/models/gateway/pin_gateway_spec.rb +0 -57
  80. data/spec/models/gateway/stripe_gateway_spec.rb +0 -122
  81. data/spec/models/gateway/usa_epay_spec.rb +0 -38
  82. data/spec/models/savon_spec.rb +0 -9
  83. data/spec/spec_helper.rb +0 -56
  84. data/spree_gateway.gemspec +0 -28
data/LICENSE DELETED
@@ -1,26 +0,0 @@
1
- Copyright (c) 2013 Spree Commerce
2
- All rights reserved.
3
-
4
- Redistribution and use in source and binary forms, with or without modification,
5
- are permitted provided that the following conditions are met:
6
-
7
- * Redistributions of source code must retain the above copyright notice,
8
- this list of conditions and the following disclaimer.
9
- * Redistributions in binary form must reproduce the above copyright notice,
10
- this list of conditions and the following disclaimer in the documentation
11
- and/or other materials provided with the distribution.
12
- * Neither the name Spree nor the names of its contributors may be used to
13
- endorse or promote products derived from this software without specific
14
- prior written permission.
15
-
16
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md DELETED
@@ -1,68 +0,0 @@
1
- # Spree Gateway
2
-
3
- [![Build Status](https://secure.travis-ci.org/spree/spree_gateway.png?branch=master)](http://travis-ci.org/spree/spree_gateway)
4
-
5
- Community supported Spree Payment Method Gateways.
6
-
7
- These can be used with Spree >= 1.0.x (but see note below for necessary changes)
8
-
9
- http://guides.spreecommerce.com/developer/payments.html
10
-
11
- ## Installation
12
-
13
- In your Gemfile:
14
-
15
- **Spree edge**
16
-
17
- ```ruby
18
- gem 'spree'
19
- gem 'spree_gateway', github: 'spree/spree_gateway'
20
- ```
21
-
22
- **Spree 1.3**
23
-
24
- ```ruby
25
- gem 'spree', '~> 1.3'
26
- gem 'spree_gateway', github: 'spree/spree_gateway', branch: '1-3-stable'
27
- ```
28
-
29
- **Note:** *Please consult the Versionfile at the root of the repository to determine which branch to use.*
30
-
31
- Then run from the command line:
32
-
33
- $ bundle install
34
- $ rails g spree_gateway:install
35
-
36
- Finally, make sure to **restart your app**. Navigate to *Configuration > Payment Methods > New Payment Method* in the admin panel and you should see that a bunch of additional gateways have been added to the list.
37
-
38
- ## Contributing
39
-
40
- In the spirit of [free software][1], **everyone** is encouraged to help improve this project.
41
-
42
- Here are some ways *you* can contribute:
43
-
44
- * by using prerelease versions
45
- * by reporting [bugs][2]
46
- * by suggesting new features
47
- * by writing or editing documentation
48
- * by writing specifications
49
- * by writing code (*no patch is too small*: fix typos, add comments, clean up inconsistent whitespace)
50
- * by refactoring code
51
- * by resolving [issues][2]
52
- * by reviewing patches
53
-
54
- Starting point:
55
-
56
- * Fork the repo
57
- * Clone your repo
58
- * Run `bundle`
59
- * Run `bundle exec rake test_app` to create the test application in `spec/test_app`
60
- * Make your changes
61
- * Ensure specs pass by running `bundle exec rspec spec`
62
- * Submit your pull request
63
-
64
- Copyright (c) 2013 Spree Commerce, released under the [New BSD License][3]
65
-
66
- [1]: http://www.fsf.org/licensing/essays/free-sw.html
67
- [2]: https://github.com/spree/spree_gateway/issues
68
- [3]: https://github.com/spree/spree_gateway/tree/master/LICENSE
data/Rakefile DELETED
@@ -1,14 +0,0 @@
1
- require 'rake'
2
- require 'rspec/core/rake_task'
3
- require 'spree/testing_support/common_rake'
4
- require 'bundler/gem_tasks'
5
-
6
- RSpec::Core::RakeTask.new
7
-
8
- task :default => [:spec]
9
-
10
- desc "Generates a dummy app for testing"
11
- task :test_app do
12
- ENV['LIB_NAME'] = 'spree_gateway'
13
- Rake::Task['common:test_app'].invoke
14
- end
@@ -1,12 +0,0 @@
1
- # This file is used to designate compatibilty with different versions of Spree
2
- # Please see http://spreecommerce.com/documentation/extensions.html#versionfile for details
3
-
4
- # Examples
5
- #
6
- "2.1.x" => { :branch => "master" }
7
- "2.0.x" => { :branch => "2-0-stable" }
8
- "1.3.x" => { :branch => "1-3-stable" }
9
- "1.2.x" => { :branch => "1-2-stable" }
10
- "1.1.x" => { :branch => "1-1-stable" }
11
- "1.0.x" => { :branch => "1-0-stable" }
12
-
@@ -1,58 +0,0 @@
1
- # Inspired by https://stripe.com/docs/stripe.js
2
-
3
- # Map cc types from stripe to spree
4
- mapCC = (ccType) ->
5
- if (ccType == 'MasterCard')
6
- 'mastercard'
7
- else if (ccType == 'Visa')
8
- 'visa'
9
- else if (ccType == 'American Express')
10
- 'amex'
11
- else if (ccType == 'Discover')
12
- 'discover'
13
- else if (ccType == 'Diners Club')
14
- 'dinersclub'
15
- else if (ccType == 'JCB')
16
- 'jcb'
17
-
18
-
19
- $(document).ready ->
20
- # For errors that happen later.
21
- Spree.stripePaymentMethod.prepend("<div id='stripeError' class='errorExplanation' style='display:none'></div>")
22
-
23
- $('.continue').click ->
24
- $('#stripeError').hide()
25
- if Spree.stripePaymentMethod.is(':visible')
26
- expiration = $('.cardExpiry:visible').payment('cardExpiryVal')
27
- params = $.extend(
28
- {
29
- number: $('.cardNumber:visible').val(),
30
- cvc: $('.cardCode:visible').val(),
31
- exp_month: expiration.month || 0,
32
- exp_year: expiration.year || 0,
33
- },
34
- Spree.stripeAdditionalInfo
35
- )
36
-
37
- Stripe.card.createToken(params, stripeResponseHandler);
38
- return false
39
-
40
- stripeResponseHandler = (status, response) ->
41
- if response.error
42
- $('#stripeError').html(response.error.message)
43
- $('#stripeError').show()
44
- else
45
- Spree.stripePaymentMethod.find('#card_number, #card_expiry, #card_code').prop("disabled" , true)
46
- Spree.stripePaymentMethod.find(".ccType").prop("disabled", false)
47
- Spree.stripePaymentMethod.find(".ccType").val(mapCC(response.card.type))
48
-
49
- # token contains id, last4, and card type
50
- token = response['id'];
51
- # insert the token into the form so it gets submitted to the server
52
- paymentMethodId = Spree.stripePaymentMethod.prop('id').split("_")[2]
53
- Spree.stripePaymentMethod.append("<input type='hidden' class='stripeToken' name='payment_source[" + paymentMethodId + "][gateway_payment_profile_id]' value='" + token + "'/>");
54
- Spree.stripePaymentMethod.append("<input type='hidden' class='stripeToken' name='payment_source[" + paymentMethodId + "][last_digits]' value='" + response.card.last4 + "'/>");
55
- Spree.stripePaymentMethod.append("<input type='hidden' class='stripeToken' name='payment_source[" + paymentMethodId + "][month]' value='" + response.card.exp_month + "'/>");
56
- Spree.stripePaymentMethod.append("<input type='hidden' class='stripeToken' name='payment_source[" + paymentMethodId + "][year]' value='" + response.card.exp_year + "'/>");
57
- # Spree.stripePaymentMethod.append("<input type='hidden' class='stripeToken' name='payment_source[" + paymentMethodId + "][cc_type]' value='" + mapCC(response.card.type) + "'/>");
58
- Spree.stripePaymentMethod.parents("form").get(0).submit();
@@ -1,2 +0,0 @@
1
- //= require spree
2
- //= require store/checkout
@@ -1,8 +0,0 @@
1
- /* needs to exist for the feature specs to be happy */
2
-
3
- /*
4
- * This is a manifest file that includes stylesheets for spree_frontend
5
- *= require normalize
6
- *= require skeleton
7
- *= require store/screen
8
- */
@@ -1,51 +0,0 @@
1
- module Spree
2
- CheckoutController.class_eval do
3
- before_filter :confirm_skrill, :only => [:update]
4
-
5
- def skrill_return
6
-
7
- unless @order.payments.where(:source_type => 'Spree::SkrillTransaction').present?
8
- payment_method = PaymentMethod.find(params[:payment_method_id])
9
- skrill_transaction = SkrillTransaction.new
10
-
11
- payment = @order.payments.create({:amount => @order.total,
12
- :source => skrill_transaction,
13
- :payment_method => payment_method},
14
- :without_protection => true)
15
- payment.started_processing!
16
- payment.pend!
17
- end
18
-
19
- @order.update_attributes({:state => "complete", :completed_at => Time.now}, :without_protection => true)
20
-
21
- until @order.state == "complete"
22
- if @order.next!
23
- @order.update!
24
- state_callback(:after)
25
- end
26
- end
27
-
28
- @order.finalize!
29
-
30
- flash.notice = Spree.t(:order_processed_successfully)
31
- redirect_to completion_route
32
- end
33
-
34
- def skrill_cancel
35
- flash[:error] = Spree.t(:payment_has_been_cancelled)
36
- redirect_to edit_order_path(@order)
37
- end
38
-
39
- private
40
- def confirm_skrill
41
- return unless (params[:state] == "payment") && params[:order][:payments_attributes]
42
-
43
- payment_method = PaymentMethod.find(params[:order][:payments_attributes].first[:payment_method_id])
44
- if payment_method.kind_of?(BillingIntegration::Skrill::QuickCheckout)
45
- #TODO confirming payment method
46
- redirect_to edit_order_checkout_url(@order, :state => 'payment'),
47
- :notice => Spree.t(:complete_skrill_checkout)
48
- end
49
- end
50
- end
51
- end
@@ -1,39 +0,0 @@
1
- module Spree
2
- class SkrillStatusController < ApplicationController
3
- def update
4
- @order = Order.find_by_number!(params[:order_id])
5
- payment_method = PaymentMethod.find(params[:payment_method_id])
6
- skrill_transaction = SkrillTransaction.create_from_postback params
7
-
8
- payment = @order.payments.where(:state => "pending",
9
- :payment_method_id => payment_method).first
10
-
11
- if payment
12
- payment.source = skrill_transaction
13
- payment.save
14
- else
15
- payment = @order.payments.create(:amount => @order.total,
16
- :source => skrill_transaction,
17
- :payment_method => payment_method)
18
- end
19
-
20
- payment.started_processing!
21
-
22
- unless payment.completed?
23
- case params[:status]
24
- when "0"
25
- payment.pend #may already be pending
26
- when "2" #processed / captured
27
- payment.complete!
28
- when "-1", "-2"
29
- payment.failure!
30
- else
31
- raise "Unexpected payment status"
32
- end
33
- end
34
-
35
- render :text => ""
36
- end
37
-
38
- end
39
- end
@@ -1,48 +0,0 @@
1
- module Spree
2
- class BillingIntegration::Skrill::QuickCheckout < BillingIntegration
3
- preference :merchant_id, :string
4
- preference :language, :string, :default => 'EN'
5
- preference :currency, :string, :default => 'EUR'
6
- preference :payment_options, :string, :default => 'ACC'
7
- preference :pay_to_email, :string , :default => 'your@merchant.email_here'
8
-
9
- def provider_class
10
- ActiveMerchant::Billing::Skrill
11
- end
12
-
13
- def redirect_url(order, opts = {})
14
- opts.merge! self.preferences
15
-
16
- set_global_options(opts)
17
-
18
- opts[:detail1_text] = order.number
19
- opts[:detail1_description] = "Order:"
20
-
21
- opts[:pay_from_email] = order.email
22
- opts[:firstname] = order.bill_address.firstname
23
- opts[:lastname] = order.bill_address.lastname
24
- opts[:address] = order.bill_address.address1
25
- opts[:address2] = order.bill_address.address2
26
- opts[:phone_number] = order.bill_address.phone.gsub(/\D/,'') if order.bill_address.phone
27
- opts[:city] = order.bill_address.city
28
- opts[:postal_code] = order.bill_address.zipcode
29
- opts[:state] = order.bill_address.state.nil? ? order.bill_address.state_name.to_s : order.bill_address.state.abbr
30
- opts[:country] = order.bill_address.country.name
31
- opts[:pay_to_email] = self.preferred_pay_to_email
32
- opts[:hide_login] = 1
33
- opts[:merchant_fields] = 'platform,order_id,payment_method_id'
34
- opts[:platform] = 'Spree'
35
- opts[:order_id] = order.number
36
-
37
- skrill = self.provider
38
- skrill.payment_url(opts)
39
- end
40
-
41
- private
42
- def set_global_options(opts)
43
- opts[:recipient_description] = Spree::Config[:site_name]
44
- opts[:payment_methods] = self.preferred_payment_options
45
- end
46
-
47
- end
48
- end
@@ -1,16 +0,0 @@
1
- module Spree
2
- class Gateway::AuthorizeNet < Gateway
3
- preference :login, :string
4
- preference :password, :string
5
-
6
- def provider_class
7
- ActiveMerchant::Billing::AuthorizeNetGateway
8
- end
9
-
10
- def options_with_test_preference
11
- options_without_test_preference.merge(:test => self.preferred_test_mode)
12
- end
13
-
14
- alias_method_chain :options, :test_preference
15
- end
16
- end
@@ -1,132 +0,0 @@
1
- module Spree
2
- class Gateway::AuthorizeNetCim < Gateway
3
- preference :login, :string
4
- preference :password, :string
5
- preference :test_mode, :boolean, :default => false
6
- preference :validate_on_profile_create, :boolean, :default => false
7
-
8
- ActiveMerchant::Billing::Response.class_eval do
9
- attr_writer :authorization
10
- end
11
-
12
- def provider_class
13
- self.class
14
- end
15
-
16
- def options
17
- # add :test key in the options hash, as that is what the ActiveMerchant::Billing::AuthorizeNetGateway expects
18
- if self.preferred_test_mode
19
- self.class.preference :test, :boolean, :default => true
20
- else
21
- self.class.remove_preference :test
22
- end
23
-
24
- super
25
- end
26
-
27
- def authorize(amount, creditcard, gateway_options)
28
- t_options = { :order => {:invoice_number => gateway_options[:order_id] } }
29
- create_transaction( amount, creditcard, :auth_only, t_options )
30
- end
31
-
32
- def purchase(amount, creditcard, gateway_options)
33
- create_transaction(amount, creditcard, :auth_capture)
34
- end
35
-
36
- def capture(authorization, creditcard, gateway_options)
37
- create_transaction((authorization.amount * 100).round, creditcard, :prior_auth_capture, :trans_id => authorization.response_code)
38
- end
39
-
40
- def credit(amount, creditcard, response_code, gateway_options)
41
- create_transaction(amount, creditcard, :refund, :trans_id => response_code)
42
- end
43
-
44
- def void(response_code, creditcard, gateway_options)
45
- create_transaction(nil, creditcard, :void, :trans_id => response_code)
46
- end
47
-
48
- def payment_profiles_supported?
49
- true
50
- end
51
-
52
- # Create a new CIM customer profile ready to accept a payment
53
- def create_profile(payment)
54
- if payment.source.gateway_customer_profile_id.nil?
55
- profile_hash = create_customer_profile(payment)
56
- payment.source.update_attributes(:gateway_customer_profile_id => profile_hash[:customer_profile_id], :gateway_payment_profile_id => profile_hash[:customer_payment_profile_id])
57
- end
58
- end
59
-
60
- # simpler form
61
- def create_profile_from_card(card)
62
- if card.gateway_customer_profile_id.nil?
63
- profile_hash = create_customer_profile(card)
64
- card.update_attributes(:gateway_customer_profile_id => profile_hash[:customer_profile_id], :gateway_payment_profile_id => profile_hash[:customer_payment_profile_id])
65
- end
66
- end
67
-
68
- private
69
- # Create a transaction on a creditcard
70
- # Set up a CIM profile for the card if one doesn't exist
71
- # Valid transaction_types are :auth_only, :capture_only and :auth_capture
72
- def create_transaction(amount, creditcard, transaction_type, options = {})
73
- #create_profile(creditcard, creditcard.gateway_options)
74
- creditcard.save
75
- if amount
76
- amount = "%.2f" % (amount / 100.0) # This gateway requires formated decimal, not cents
77
- end
78
- transaction_options = {
79
- :type => transaction_type,
80
- :amount => amount,
81
- :customer_profile_id => creditcard.gateway_customer_profile_id,
82
- :customer_payment_profile_id => creditcard.gateway_payment_profile_id,
83
- }.update(options)
84
- t = cim_gateway.create_customer_profile_transaction(:transaction => transaction_options)
85
- logger.debug("\nAuthorize Net CIM Transaction")
86
- logger.debug(" transaction_options: #{transaction_options.inspect}")
87
- logger.debug(" response: #{t.inspect}\n")
88
- t
89
- end
90
-
91
- # Create a new CIM customer profile ready to accept a payment
92
- def create_customer_profile(payment)
93
- options = options_for_create_customer_profile(payment)
94
- response = cim_gateway.create_customer_profile(options)
95
- if response.success?
96
- { :customer_profile_id => response.params['customer_profile_id'],
97
- :customer_payment_profile_id => response.params['customer_payment_profile_id_list'].values.first }
98
- else
99
- payment.send(:gateway_error, response)
100
- end
101
- end
102
-
103
- def options_for_create_customer_profile(payment)
104
- if payment.is_a? CreditCard
105
- info = { :bill_to => generate_address_hash(payment.address), :payment => { :credit_card => payment } }
106
- else
107
- info = { :bill_to => generate_address_hash(payment.order.bill_address),
108
- :payment => { :credit_card => payment.source } }
109
- end
110
- validation_mode = preferred_validate_on_profile_create ? preferred_server.to_sym : :none
111
-
112
- { :profile => { :merchant_customer_id => "#{Time.now.to_f}",
113
- #:ship_to_list => generate_address_hash(creditcard.checkout.ship_address),
114
- :email => payment.order.email,
115
- :payment_profiles => info },
116
- :validation_mode => validation_mode }
117
- end
118
-
119
- # As in PaymentGateway but with separate name fields
120
- def generate_address_hash(address)
121
- return {} if address.nil?
122
- {:first_name => address.firstname, :last_name => address.lastname, :address1 => address.address1, :address2 => address.address2, :city => address.city,
123
- :state => address.state_text, :zip => address.zipcode, :country => address.country.iso, :phone_number => address.phone}
124
- end
125
-
126
- def cim_gateway
127
- ActiveMerchant::Billing::Base.gateway_mode = preferred_server.to_sym
128
- gateway_options = options
129
- ActiveMerchant::Billing::AuthorizeNetCimGateway.new(gateway_options)
130
- end
131
- end
132
- end