module ActiveMerchant #:nodoc: module Billing #:nodoc: module Integrations #:nodoc: # To start with Nochex, follow the instructions for installing # ActiveMerchant as a plugin, as described on # http://www.activemerchant.org/. # # The plugin will automatically add the ActionView helper for # ActiveMerchant, which will allow you to make the Nochex payments. # The idea behind the helper is that it generates an invisible # forwarding screen that will automatically redirect the user. # So you would collect all the information about the order and then # simply render the hidden form, which redirects the user to Nochex. # # The syntax of the helper is as follows: # # <% payment_service_for 'order id', 'nochex_user_id', # :amount => 50.00, # :service => :nochex, # :html => { :id => 'nochex-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(:action => 'notify', :only_path => false) %> # <% service.return_url url_for(:action => 'done', :only_path => false) %> # <% service.cancel_return_url 'http://mystore.com' %> # <% end %> # # The notify_url is the URL that the Nochex IPN will be sent. You can # handle the notification in your controller action as follows: # # class NotificationController < ApplicationController # include ActiveMerchant::Billing::Integrations # # def notify # notification = Nochex::Notification.new(request.raw_post) # # begin # # Acknowledge notification with Nochex # raise StandardError, 'Illegal Notification' unless notification.acknowledge # # Process the payment # rescue => e # logger.warn("Illegal notification received: #{e.message}") # ensure # head(:ok) # end # end # end module Nochex autoload :Return, File.dirname(__FILE__) + '/nochex/return.rb' autoload :Helper, File.dirname(__FILE__) + '/nochex/helper.rb' autoload :Notification, File.dirname(__FILE__) + '/nochex/notification.rb' mattr_accessor :service_url self.service_url = 'https://www.nochex.com/nochex.dll/checkout' mattr_accessor :notification_confirmation_url self.notification_confirmation_url = 'https://www.nochex.com/nochex.dll/apc/apc' # Simply a convenience method that returns a new # ActiveMerchant::Billing::Integrations::Nochex::Notification def self.notification(post) Notification.new(post) end def self.return(query_string, options = {}) Return.new(query_string) end end end end end