Sha256: 045d76166ceea2f0894542322e929482f6b9bfe5dea01a135f1200213ad1e869

Contents?: true

Size: 1.19 KB

Versions: 10

Compression:

Stored size: 1.19 KB

Contents

module Spree
  class Gateway < PaymentMethod
    delegate_belongs_to :provider, :authorize, :purchase, :capture, :void, :credit

    validates :name, :type, :presence => true

    preference :server, :string, :default => 'test'
    preference :test_mode, :boolean, :default => true

    def payment_source_class
      Creditcard
    end

    # instantiates the selected gateway and configures with the options stored in the database
    def self.current
      super
    end

    def provider
      gateway_options = options
      gateway_options.delete :login if gateway_options.has_key?(:login) and gateway_options[:login].nil?
      ActiveMerchant::Billing::Base.gateway_mode = gateway_options[:server].to_sym
      @provider ||= provider_class.new(gateway_options)
    end

    def options
      options_hash = {}
      self.preferences.each do |key,value|
        options_hash[key.to_sym] = value
      end
      options_hash
    end

    def method_missing(method, *args)
      if @provider.nil? || !@provider.respond_to?(method)
        super
      else
        provider.send(method)
      end
    end

    def payment_profiles_supported?
      false
    end

    def method_type
      'gateway'
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
spree_core-1.0.4 app/models/spree/gateway.rb
spree_core-1.1.0.rc1 app/models/spree/gateway.rb
spree_core-1.0.3 app/models/spree/gateway.rb
spree_core-1.0.2 app/models/spree/gateway.rb
spree_core-1.0.1 app/models/spree/gateway.rb
spree_core-1.0.0 app/models/spree/gateway.rb
spree_core-1.0.0.rc4 app/models/spree/gateway.rb
spree_core-1.0.0.rc3 app/models/spree/gateway.rb
spree_core-1.0.0.rc2 app/models/spree/gateway.rb
spree_core-1.0.0.rc1 app/models/spree/gateway.rb