Class: MerbMerchant::Billing::Integrations::Nochex::Notification

Inherits:
MerbMerchant::Billing::Integrations::Notification show all
Includes:
PostsData
Defined in:
lib/merb_merchant/billing/integrations/nochex/notification.rb

Overview

Parser and handler for incoming Automatic Payment Confirmations from Nochex.

Constant Summary

Constants included from PostsData

PostsData::MAX_RETRIES, PostsData::OPEN_TIMEOUT, PostsData::READ_TIMEOUT

Instance Attribute Summary

Attributes inherited from MerbMerchant::Billing::Integrations::Notification

#params, #raw

Instance Method Summary collapse

Methods included from PostsData

included, #ssl_get, #ssl_post

Methods inherited from MerbMerchant::Billing::Integrations::Notification

#amount, #empty!, #gross_cents, #initialize, #valid_sender?

Constructor Details

This class inherits a constructor from MerbMerchant::Billing::Integrations::Notification

Instance Method Details

#acknowledgeObject

Acknowledge the transaction to Nochex. This method has to be called after a new apc arrives. Nochex will verify that all the information we received are correct and will return a ok or a fail. This is very similar to the PayPal IPN scheme.

Example:

def nochex_ipn
  notify = NochexNotification.new(request.raw_post)

  if notify.acknowledge 
    ... process order ... if notify.complete?
  else
    ... log possible hacking attempt ...
  end

Raises:

  • (StandardError)


77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 77

def acknowledge
   payload =  raw

   response = ssl_post(Nochex.notification_confirmation_url, payload, 
     'Content-Length' => "#{payload.size}",
     'User-Agent'     => "Active Merchant -- http://activemerchant.org",
     'Content-Type'   => "application/x-www-form-urlencoded"
   )

   raise StandardError.new("Faulty Nochex result: #{response}") unless ["AUTHORISED", "DECLINED"].include?(response)

   response == "AUTHORISED"
end

#complete?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 12

def complete?
  status == 'Completed'
end

#currencyObject



25
26
27
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 25

def currency
  'GBP'
end

#grossObject

the money amount we received in X.2 decimal.



50
51
52
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 50

def gross
  params['amount']
end

#item_idObject

Id of the order we passed to Nochex



17
18
19
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 17

def item_id
  params['order_id']
end

#payer_emailObject



37
38
39
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 37

def payer_email
  params['from_email']
end

#received_atObject

When was this payment received by the client.



30
31
32
33
34
35
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 30

def received_at
  # U.K. Format: 27/09/2006 22:30:54
  return if params['transaction_date'].blank?
  time = params['transaction_date'].scan(/\d+/)
  Time.utc(time[2], time[1], time[0], time[3], time[4], time[5])
end

#receiver_emailObject



41
42
43
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 41

def receiver_email
  params['to_email']
end

#security_keyObject



45
46
47
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 45

def security_key
  params['security_key']
end

#statusObject



59
60
61
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 59

def status
  'Completed'
end

#test?Boolean

Was this a test transaction?

Returns:

  • (Boolean)


55
56
57
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 55

def test?
  params['status'] == 'test'
end

#transaction_idObject



21
22
23
# File 'lib/merb_merchant/billing/integrations/nochex/notification.rb', line 21

def transaction_id
  params['transaction_id']
end