Class: ActiveMerchant::Billing::Integrations::Helper

Inherits:
Object
  • Object
show all
Defined in:
lib/active_merchant/billing/integrations/helper.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(order, account, options = {}) ⇒ Helper

Returns a new instance of Helper.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/active_merchant/billing/integrations/helper.rb', line 20

def initialize(order, , options = {})
  options.assert_valid_keys([:amount, :currency, :test, :credential2, :credential3, :credential4, :country, :account_name, :transaction_type, :authcode, :notify_url, :return_url, :redirect_param, :forward_url])
  @fields             = {}
  @raw_html_fields    = []
  @test               = options[:test]
  self.order          = order
  self.        = 
  self.amount         = options[:amount]
  self.currency       = options[:currency]
  self.credential2    = options[:credential2]
  self.credential3    = options[:credential3]
  self.credential4    = options[:credential4]
  self.notify_url     = options[:notify_url]
  self.return_url     = options[:return_url]
  self.redirect_param = options[:redirect_param]
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_id, *args) ⇒ Object (private)



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/active_merchant/billing/integrations/helper.rb', line 101

def method_missing(method_id, *args)
  method_id = method_id.to_s.gsub(/=$/, '').to_sym
  # Return and do nothing if the mapping was not found. This allows
  # For easy substitution of the different integrations
  return if mappings[method_id].nil?

  mapping = mappings[method_id]

  case mapping
  when Array
    mapping.each{ |field| add_field(field, args.last) }
  when Hash
    options = args.last.is_a?(Hash) ? args.pop : {}

    mapping.each{ |key, field| add_field(field, options[key]) }
  else
    add_field(mapping, args.last)
  end
end

Instance Attribute Details

#fieldsObject (readonly)

Returns the value of attribute fields.



5
6
7
# File 'lib/active_merchant/billing/integrations/helper.rb', line 5

def fields
  @fields
end

Class Method Details

.inherited(subclass) ⇒ Object



16
17
18
# File 'lib/active_merchant/billing/integrations/helper.rb', line 16

def self.inherited(subclass)
  subclass.mappings ||= {}
end

.mapping(attribute, options = {}) ⇒ Object



37
38
39
# File 'lib/active_merchant/billing/integrations/helper.rb', line 37

def self.mapping(attribute, options = {})
  self.mappings[attribute] = options
end

Instance Method Details

#add_field(name, value) ⇒ Object



41
42
43
44
# File 'lib/active_merchant/billing/integrations/helper.rb', line 41

def add_field(name, value)
  return if name.blank? || value.blank?
  @fields[name.to_s] = value.to_s
end

#add_fields(subkey, params = {}) ⇒ Object



46
47
48
49
50
51
# File 'lib/active_merchant/billing/integrations/helper.rb', line 46

def add_fields(subkey, params = {})
  params.each do |k, v|
    field = mappings[subkey][k]
    add_field(field, v) unless field.blank?
  end
end

#add_raw_html_field(name, value) ⇒ Object

Add a field that has characters that CGI::escape would mangle. Allows for multiple fields with the same name (e.g., to support line items).



55
56
57
58
# File 'lib/active_merchant/billing/integrations/helper.rb', line 55

def add_raw_html_field(name, value)
  return if name.blank? || value.blank?
  @raw_html_fields << [name, value]
end

#billing_address(params = {}) ⇒ Object



64
65
66
# File 'lib/active_merchant/billing/integrations/helper.rb', line 64

def billing_address(params = {})
  add_address(:billing_address, params)
end

#form_fieldsObject



72
73
74
# File 'lib/active_merchant/billing/integrations/helper.rb', line 72

def form_fields
  @fields
end

#form_methodObject



80
81
82
# File 'lib/active_merchant/billing/integrations/helper.rb', line 80

def form_method
  "POST"
end

#raw_html_fieldsObject



60
61
62
# File 'lib/active_merchant/billing/integrations/helper.rb', line 60

def raw_html_fields
  @raw_html_fields
end

#shipping_address(params = {}) ⇒ Object



68
69
70
# File 'lib/active_merchant/billing/integrations/helper.rb', line 68

def shipping_address(params = {})
  add_address(:shipping_address, params)
end

#test?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/active_merchant/billing/integrations/helper.rb', line 76

def test?
  @test_mode ||= ActiveMerchant::Billing::Base.integration_mode == :test || @test
end