mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-11 18:26:50 +00:00
Release announcements: * https://www.ruby-lang.org/en/news/2025/07/24/ruby-3-2-9-released/ * https://www.ruby-lang.org/en/news/2025/03/26/ruby-3-2-8-released/ * https://www.ruby-lang.org/en/news/2025/02/04/ruby-3-2-7-released/ * https://www.ruby-lang.org/en/news/2024/10/30/ruby-3-2-6-released/ * https://www.ruby-lang.org/en/news/2024/07/26/ruby-3-2-5-released/ * https://www.ruby-lang.org/en/news/2024/04/23/ruby-3-2-4-released/ * https://www.ruby-lang.org/en/news/2024/01/18/ruby-3-2-3-released/ * https://www.ruby-lang.org/en/news/2023/03/30/ruby-3-2-2-released/ * https://www.ruby-lang.org/en/news/2023/02/08/ruby-3-2-1-released/ * https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/ Also autocorrect new offenses.
61 lines
1.4 KiB
Ruby
61 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Spree
|
|
class Gateway < PaymentMethod
|
|
acts_as_taggable
|
|
include PaymentMethodDistributors
|
|
|
|
delegate :authorize, :purchase, :capture, :void, :credit, to: :provider
|
|
|
|
validates :name, :type, presence: true
|
|
|
|
# Default to live
|
|
preference :server, :string, default: 'live'
|
|
preference :test_mode, :boolean, default: false
|
|
|
|
def payment_source_class
|
|
CreditCard
|
|
end
|
|
|
|
def provider
|
|
gateway_options = options
|
|
gateway_options.delete :login if gateway_options.key?(:login) && gateway_options[:login].nil?
|
|
if gateway_options[:server]
|
|
ActiveMerchant::Billing::Base.mode = gateway_options[:server].to_sym
|
|
end
|
|
@provider ||= provider_class.new(gateway_options)
|
|
end
|
|
|
|
def options
|
|
preferences.transform_keys(&:to_sym)
|
|
end
|
|
|
|
def respond_to_missing?(method_name, include_private = false)
|
|
@provider.respond_to?(method_name, include_private) || super
|
|
end
|
|
|
|
def method_missing(method, *)
|
|
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
|
|
|
|
def supports?(source)
|
|
return true unless provider_class.respond_to? :supports?
|
|
return false unless source.brand
|
|
|
|
provider_class.supports?(source.brand)
|
|
end
|
|
end
|
|
end
|