lib/offsite_payments/action_view_helper.rb
# This helper allows the usage of different payment integrations
# through a single form helper.  Payment integrations are the
# type of service where the user is redirected to the secure
# site of the service, like Paypal or Chronopay.
#
# The helper creates a scope around a payment service helper
# which provides the specific mapping for that service.
#
#  <% payment_service_for 1000, 'paypalemail@mystore.com',
#                               :amount => 50.00,
#                               :currency => 'CAD',
#                               :service => :paypal,
#                               :html => { :id => 'payment-form' } do |service| %>
#
#    <% service.customer :first_name => 'Cody',
#                       :last_name => 'Fauser',
#                       :phone => '(555)555-5555',
#                       :email => 'cody@example.com' %>
#
#    <% service.billing_address :city => 'Ottawa',
#                              :address1 => '21 Snowy Brook Lane',
#                              :address2 => 'Apt. 36',
#                              :state => 'ON',
#                              :country => 'CA',
#                              :zip => 'K1J1E5' %>
#
#    <% service.invoice '#1000' %>
#    <% service.shipping '0.00' %>
#    <% service.tax '0.00' %>
#
#    <% service.notify_url url_for(:only_path => false, :action => 'notify') %>
#    <% service.return_url url_for(:only_path => false, :action => 'done') %>
#    <% service.cancel_return_url 'http://mystore.com' %>
#  <% end %>
#
This helper allows the usage of different payment integrations
through a single form helper.  Payment integrations are the
type of service where the user is redirected to the secure
site of the service, like Paypal or Chronopay.

The helper creates a scope around a payment service helper
which provides the specific mapping for that service.










This helper allows the usage of different payment integrations through a single form helper . Payment integrations are the type of service where the user is redirected to the secure site of the service like Paypal or Chronopay . The helper creates a scope around a payment service helper which provides the specific mapping for that service .
def payment_service_for(order, account, options = {}, &proc)
      raise ArgumentError, "Missing block" unless block_given?
      integration_module = OffsitePayments::integration(options.delete(:service).to_s)
      service_class = integration_module.const_get('Helper')
      form_options = options.delete(:html) || {}
      service = service_class.new(order, account, options)
      form_options[:method] = service.form_method
      result = []
      service_url = service.respond_to?(:credential_based_url) ? service.credential_based_url : integration_module.service_url
      result << form_tag(service_url, form_options)
      result << capture(service, &proc)
      service.form_fields.each do |field, value|
        result << hidden_field_tag(field, value)
      end
      service.raw_html_fields.each do |field, value|
        result << "<input id=\"#{field}\" name=\"#{field}\" type=\"hidden\" value=\"#{value}\" />\n"
      end
      result << '</form>'
      result= result.join("\n")
      concat(result.respond_to?(:html_safe) ? result.html_safe : result)
      nil
    end
def payment_service_for ( order , account , options = { } , & proc ) raise ArgumentError , "Missing block" unless block_given? integration_module = OffsitePayments :: integration ( options . delete ( :service ) . to_s ) service_class = integration_module . const_get ( 'Helper' ) form_options = options . delete ( :html ) || { } service = service_class . new ( order , account , options ) form_options [ :method ] = service . form_method result = [ ] service_url = service . respond_to? ( :credential_based_url ) ? service . credential_based_url : integration_module . service_url result << form_tag ( service_url , form_options ) result << capture ( service , & proc ) service . form_fields . each do | field , value | result << hidden_field_tag ( field , value ) end service . raw_html_fields . each do | field , value | result << "<input id=\"#{field}\" name=\"#{field}\" type=\"hidden\" value=\"#{value}\" />\n" end result << '</form>' result = result . join ( "\n" ) concat ( result . respond_to? ( :html_safe ) ? result . html_safe : result ) nil end
This helper allows the usage of different payment integrations
through a single form helper.
This helper allows the usage of different payment integrations through a single form helper .
order
<not_specific>
account
<not_specific>
options
<not_specific>
proc
<not_specific>