class OffsitePayments::Integrations::MollieIdeal::Helper

Attributes

redirect_parameters[R]
token[R]
transaction_id[R]

Public Class Methods

new(order, account, options = {}) click to toggle source
Calls superclass method
# File lib/offsite_payments/integrations/mollie_ideal.rb, line 72
def initialize(order, account, options = {})
  @token = account
  @redirect_parameters = {
    :amount => options[:amount],
    :description => options[:description],
    :issuer => options[:redirect_param],
    :redirectUrl => options[:return_url],
    :method => 'ideal',
    :metadata => { :order => order }
  }

  @redirect_parameters[: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

Public Instance Methods

credential_based_url() click to toggle source
# File lib/offsite_payments/integrations/mollie_ideal.rb, line 92
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_method() click to toggle source
# File lib/offsite_payments/integrations/mollie_ideal.rb, line 102
def form_method
  "GET"
end
request_redirect() click to toggle source
# File lib/offsite_payments/integrations/mollie_ideal.rb, line 116
def request_redirect
  MollieIdeal.create_payment(token, redirect_parameters)
rescue ActiveUtils::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) click to toggle source
# File lib/offsite_payments/integrations/mollie_ideal.rb, line 106
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