class OffsitePayments::Integrations::WorldPay::Helper

Public Class Methods

new(order, account, options = {}) click to toggle source

WorldPay supports two different test modes - :always_succeed and :always_fail

Calls superclass method
# File lib/offsite_payments/integrations/world_pay.rb, line 50
def initialize(order, account, options = {})
  super

  if OffsitePayments.mode == :test || options[:test]
    test_mode = case options[:test]
    when :always_fail
      101
    when false
      0
    else
      100
    end
    add_field('testMode', test_mode.to_s)
  elsif OffsitePayments.mode == :always_succeed
    add_field('testMode', '100')
  elsif OffsitePayments.mode == :always_fail
    add_field('testMode', '101')
  end
end

Public Instance Methods

callback_params(params={}) click to toggle source
# File lib/offsite_payments/integrations/world_pay.rb, line 107
def callback_params(params={})
  params.each{|k,v| add_field("M_#{k}",v)}
end
combined_params(params={}) click to toggle source
# File lib/offsite_payments/integrations/world_pay.rb, line 111
def combined_params(params={})
  params.each{|k,v| add_field("MC_#{k}",v)}
end
customer(params={}) click to toggle source

WorldPay only supports a single name field so we have to concat

# File lib/offsite_payments/integrations/world_pay.rb, line 71
def customer(params={})
  add_field(mappings[:customer][:email], params[:email])
  add_field(mappings[:customer][:phone], params[:phone])
  add_field('name', "#{params[:first_name]} #{params[:last_name]}")
end
encrypt(secret, fields = [:amount, :currency, :account, :order]) click to toggle source

Support for a MD5 hash of selected fields to prevent tampering For further information read the tech note at the address below: support.worldpay.com/kb/integration_guides/junior/integration/help/tech_notes/sjig_tn_009.html

# File lib/offsite_payments/integrations/world_pay.rb, line 80
def encrypt(secret, fields = [:amount, :currency, :account, :order])
  signature_fields = fields.collect{ |field| mappings[field] }
  add_field('signatureFields', signature_fields.join(':'))

  field_values = fields.collect{ |field| form_fields[mappings[field]] }
  signature    = "#{secret}:#{field_values.join(':')}"
  add_field('signature', Digest::MD5.hexdigest(signature))
end
response_params(params={}) click to toggle source

WorldPay supports the passing of custom parameters prefixed with the following: C_ : These parameters can be used in the response pages hosted on WorldPay’s site M_ : These parameters are passed through to the callback script (if enabled) MC_ or CM_ : These parameters are availble both in the response and callback contexts

# File lib/offsite_payments/integrations/world_pay.rb, line 103
def response_params(params={})
  params.each{|k,v| add_field("C_#{k}",v)}
end
valid_from(from_time) click to toggle source

Add a time window for which the payment can be completed. Read the link below for how they work support.worldpay.com/kb/integration_guides/junior/integration/help/appendicies/sjig_10100.html

# File lib/offsite_payments/integrations/world_pay.rb, line 91
def valid_from(from_time)
  add_field('authValidFrom', from_time.to_i.to_s + '000')
end
valid_to(to_time) click to toggle source
# File lib/offsite_payments/integrations/world_pay.rb, line 95
def valid_to(to_time)
  add_field('authValidTo', to_time.to_i.to_s + '000')
end