Class: OffsitePayments::Integrations::MollieIdeal::Helper

Inherits:
Helper
  • Object
show all
Defined in:
lib/offsite_payments/integrations/mollie_ideal.rb

Instance Attribute Summary collapse

Attributes inherited from Helper

#fields

Instance Method Summary collapse

Methods inherited from Helper

#add_field, #add_fields, #add_raw_html_field, #billing_address, #form_fields, inherited, mapping, #raw_html_fields, #shipping_address, #test?

Constructor Details

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

Returns a new instance of Helper

Raises:

  • (ArgumentError)


94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/offsite_payments/integrations/mollie_ideal.rb', line 94

def initialize(order, , options = {})
  @token = 
  @redirect_paramaters = {
    :amount => options[:amount],
    :description => options[:description],
    :issuer => options[:redirect_param],
    :redirectUrl => options[:return_url],
    :method => 'ideal',
    :metadata => { :order => order }
  }

  @redirect_paramaters[:webhookUrl] = options[:notify_url] if options[:notify_url]

  super

  raise ArgumentError, "The redirect_param option needs to be set to the bank_id the customer selected." if options[:redirect_param].blank?
  raise ArgumentError, "The return_url option needs to be set." if options[:return_url].blank?
  raise ArgumentError, "The description option needs to be set." if options[:description].blank?
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class OffsitePayments::Helper

Instance Attribute Details

#redirect_paramatersObject (readonly)

Returns the value of attribute redirect_paramaters



92
93
94
# File 'lib/offsite_payments/integrations/mollie_ideal.rb', line 92

def redirect_paramaters
  @redirect_paramaters
end

#tokenObject (readonly)

Returns the value of attribute token



92
93
94
# File 'lib/offsite_payments/integrations/mollie_ideal.rb', line 92

def token
  @token
end

#transaction_idObject (readonly)

Returns the value of attribute transaction_id



92
93
94
# File 'lib/offsite_payments/integrations/mollie_ideal.rb', line 92

def transaction_id
  @transaction_id
end

Instance Method Details

#credential_based_urlObject



114
115
116
117
118
119
120
121
122
# File 'lib/offsite_payments/integrations/mollie_ideal.rb', line 114

def credential_based_url
  response = request_redirect
  @transaction_id = response['id']

  uri = URI.parse(response['links']['paymentUrl'])
  set_form_fields_for_redirect(uri)
  uri.query = ''
  uri.to_s.sub(/\?\z/, '')
end

#form_methodObject



124
125
126
# File 'lib/offsite_payments/integrations/mollie_ideal.rb', line 124

def form_method
  "GET"
end

#request_redirectObject



138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/offsite_payments/integrations/mollie_ideal.rb', line 138

def request_redirect
  MollieIdeal.create_payment(token, redirect_paramaters)
rescue ActiveMerchant::ResponseError => e
  case e.response.code
  when '401', '403', '422'
    error = JSON.parse(e.response.body)['error']['message']
    raise ActionViewHelperError, error
  when '503'
    raise ActionViewHelperError, 'Service temporarily unavailable. Please try again.'
  else
    raise
  end
end

#set_form_fields_for_redirect(uri) ⇒ Object



128
129
130
131
132
133
134
135
136
# File 'lib/offsite_payments/integrations/mollie_ideal.rb', line 128

def set_form_fields_for_redirect(uri)
  CGI.parse(uri.query).each do |key, value|
    if value.is_a?(Array) && value.length == 1
      add_field(key, value.first)
    else
      add_field(key, value)
    end
  end
end