Class: ActiveMerchant::Billing::Integrations::WorldPay::Helper
- Defined in:
- lib/active_merchant/billing/integrations/world_pay/helper.rb
Instance Attribute Summary
Attributes inherited from Helper
Instance Method Summary collapse
-
#billing_address(params = {}) ⇒ Object
WorldPay only supports a single address field so we have to concat together - lines are separated using .
- #callback_params(params = {}) ⇒ Object
- #combined_params(params = {}) ⇒ Object
-
#customer(params = {}) ⇒ Object
WorldPay only supports a single name field so we have to concat.
-
#encrypt(secret, fields = [:amount, :currency, :account, :order]) ⇒ Object
Support for a MD5 hash of selected fields to prevent tampering For futher information read the tech note at the address below: support.worldpay.com/kb/integration_guides/junior/integration/help/tech_notes/sjig_tn_009.html.
-
#initialize(order, account, options = {}) ⇒ Helper
constructor
WorldPay supports two different test modes - :always_succeed and :always_fail.
-
#response_params(params = {}) ⇒ Object
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.
-
#valid_from(from_time) ⇒ Object
Add a time window for which the payment can be completed.
- #valid_to(to_time) ⇒ Object
Methods inherited from Helper
#add_field, #add_fields, #add_raw_html_field, #form_fields, mapping, #raw_html_fields, #shipping_address, #test?
Constructor Details
#initialize(order, account, options = {}) ⇒ Helper
WorldPay supports two different test modes - :always_succeed and :always_fail
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/active_merchant/billing/integrations/world_pay/helper.rb', line 22 def initialize(order, account, = {}) super if ActiveMerchant::Billing::Base.integration_mode == :test || [:test] test_mode = case [:test] when :always_fail 101 when false 0 else 100 end add_field('testMode', test_mode.to_s) elsif ActiveMerchant::Billing::Base.integration_mode == :always_succeed add_field('testMode', '100') elsif ActiveMerchant::Billing::Base.integration_mode == :always_fail add_field('testMode', '101') end end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class ActiveMerchant::Billing::Integrations::Helper
Instance Method Details
#billing_address(params = {}) ⇒ Object
WorldPay only supports a single address field so we have to concat together - lines are separated using
44 45 46 47 48 49 50 |
# File 'lib/active_merchant/billing/integrations/world_pay/helper.rb', line 44 def billing_address(params={}) add_field(mappings[:billing_address][:zip], params[:zip]) add_field(mappings[:billing_address][:country], lookup_country_code(params[:country])) address = [params[:address1], params[:address2], params[:city], params[:state]].compact add_field('address', address.join(' ')) end |
#callback_params(params = {}) ⇒ Object
89 90 91 |
# File 'lib/active_merchant/billing/integrations/world_pay/helper.rb', line 89 def callback_params(params={}) params.each{|k,v| add_field("M_#{k}",v)} end |
#combined_params(params = {}) ⇒ Object
93 94 95 |
# File 'lib/active_merchant/billing/integrations/world_pay/helper.rb', line 93 def combined_params(params={}) params.each{|k,v| add_field("MC_#{k}",v)} end |
#customer(params = {}) ⇒ Object
WorldPay only supports a single name field so we have to concat
53 54 55 56 57 |
# File 'lib/active_merchant/billing/integrations/world_pay/helper.rb', line 53 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]) ⇒ Object
Support for a MD5 hash of selected fields to prevent tampering For futher information read the tech note at the address below: support.worldpay.com/kb/integration_guides/junior/integration/help/tech_notes/sjig_tn_009.html
62 63 64 65 66 67 68 69 |
# File 'lib/active_merchant/billing/integrations/world_pay/helper.rb', line 62 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 = {}) ⇒ Object
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
85 86 87 |
# File 'lib/active_merchant/billing/integrations/world_pay/helper.rb', line 85 def response_params(params={}) params.each{|k,v| add_field("C_#{k}",v)} end |
#valid_from(from_time) ⇒ Object
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
73 74 75 |
# File 'lib/active_merchant/billing/integrations/world_pay/helper.rb', line 73 def valid_from(from_time) add_field('authValidFrom', from_time.to_i.to_s + '000') end |
#valid_to(to_time) ⇒ Object
77 78 79 |
# File 'lib/active_merchant/billing/integrations/world_pay/helper.rb', line 77 def valid_to(to_time) add_field('authValidTo', to_time.to_i.to_s + '000') end |