Class: ActiveMerchant::Billing::Integrations::Citrus::Notification

Inherits:
Notification
  • Object
show all
Defined in:
lib/active_merchant/billing/integrations/citrus/notification.rb

Instance Attribute Summary

Attributes inherited from Notification

#params, #raw

Instance Method Summary collapse

Methods inherited from Notification

#empty!, #gross_cents, #test?, #valid_sender?

Constructor Details

#initialize(post, options = {}) ⇒ Notification

Returns a new instance of Notification.



7
8
9
10
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 7

def initialize(post, options = {})
  super(post, options)
  @secret_key = options[:credential2]
end

Instance Method Details

#acknowledge(authcode = nil) ⇒ Object



116
117
118
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 116

def acknowledge(authcode = nil)
  checksum_ok?
end

#amountObject



58
59
60
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 58

def amount
  gross
end

#amount_ok?(order_amount) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 35

def amount_ok?( order_amount )
  BigDecimal.new( amount ) == order_amount
end

#authidcodeObject



70
71
72
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 70

def authidcode
  params['authIdCode']
end

#checksumObject



78
79
80
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 78

def checksum
  params['signature']
end

#checksum_ok?Boolean

Returns:

  • (Boolean)


120
121
122
123
124
125
126
127
128
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 120

def checksum_ok?
  fields = [invoice, transaction_status, amount.to_s, transaction_id, issuerrefno, authidcode, customer_first_name, customer_last_name, pgrespcode, customer_address[:zip]].join

  unless Citrus.checksum(@secret_key, fields ) == checksum
    @message = 'checksum mismatch...'
    return false
  end
  true
end

#complete?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 12

def complete?
  status == "Completed" || status == 'Canceled'
end

#currencyObject



86
87
88
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 86

def currency
  params['currency']
end

#customer_addressObject



106
107
108
109
110
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 106

def customer_address
  { :address1 => params['addressStreet1'], :address2 => params['addressStreet2'],
    :city => params['addressCity'], :state => params['addressState'],
    :country => params['addressCountry'], :zip => params['addressZip'] }
end

#customer_emailObject



90
91
92
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 90

def customer_email
  params['email']
end

#customer_first_nameObject



98
99
100
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 98

def customer_first_name
  params['firstName']
end

#customer_last_nameObject



102
103
104
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 102

def customer_last_name
  params['lastName']
end

#customer_phoneObject



94
95
96
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 94

def customer_phone
  params['mobileNo']
end

#grossObject



54
55
56
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 54

def gross
  params['amount']
end

#invoiceObject



43
44
45
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 43

def invoice
  item_id
end

#invoice_ok?(order_id) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 31

def invoice_ok?( order_id )
  order_id.to_s == invoice.to_s
end

#issuerrefnoObject



66
67
68
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 66

def issuerrefno
  params['issuerRefNo']
end

#item_idObject



39
40
41
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 39

def item_id
  params['TxId']
end

#messageObject



112
113
114
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 112

def message
  @message || params['TxMsg']
end

#paymentmodeObject



82
83
84
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 82

def paymentmode
  params['paymentMode']
end

#pgrespcodeObject



74
75
76
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 74

def pgrespcode
  params['pgRespCode']
end

#statusObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 16

def status
  @status ||= if checksum_ok?
    if transaction_id.blank?
      'Invalid'
    else
      case transaction_status.downcase
      when 'success' then 'Completed'
      when 'canceled' then 'Cancelled'
      end
    end
  else
    'Tampered'
  end
end

#transaction_idObject



62
63
64
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 62

def transaction_id
  params['pgTxnNo']
end

#transaction_statusObject

Status of transaction return from the Citrus. List of possible values:

SUCCESS
CANCELED


50
51
52
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 50

def transaction_status
  params['TxStatus']
end