Class: ActiveMerchant::Billing::Integrations::Citrus::Notification
- Inherits:
-
Notification
- Object
- Notification
- ActiveMerchant::Billing::Integrations::Citrus::Notification
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
#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
|
#amount ⇒ Object
58
59
60
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 58
def amount
gross
end
|
#amount_ok?(order_amount) ⇒ 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
|
#authidcode ⇒ Object
70
71
72
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 70
def authidcode
params['authIdCode']
end
|
#checksum ⇒ Object
78
79
80
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 78
def checksum
params['signature']
end
|
#checksum_ok? ⇒ 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
12
13
14
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 12
def complete?
status == "Completed" || status == 'Canceled'
end
|
#currency ⇒ Object
86
87
88
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 86
def currency
params['currency']
end
|
#customer_address ⇒ Object
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_email ⇒ Object
90
91
92
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 90
def customer_email
params['email']
end
|
#customer_first_name ⇒ Object
98
99
100
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 98
def customer_first_name
params['firstName']
end
|
#customer_last_name ⇒ Object
102
103
104
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 102
def customer_last_name
params['lastName']
end
|
#customer_phone ⇒ Object
94
95
96
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 94
def customer_phone
params['mobileNo']
end
|
#gross ⇒ Object
54
55
56
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 54
def gross
params['amount']
end
|
#invoice ⇒ Object
43
44
45
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 43
def invoice
item_id
end
|
#invoice_ok?(order_id) ⇒ 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
|
#issuerrefno ⇒ Object
66
67
68
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 66
def issuerrefno
params['issuerRefNo']
end
|
#item_id ⇒ Object
39
40
41
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 39
def item_id
params['TxId']
end
|
#message ⇒ Object
112
113
114
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 112
def message
@message || params['TxMsg']
end
|
#paymentmode ⇒ Object
82
83
84
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 82
def paymentmode
params['paymentMode']
end
|
#pgrespcode ⇒ Object
74
75
76
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 74
def pgrespcode
params['pgRespCode']
end
|
#status ⇒ Object
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_id ⇒ Object
62
63
64
|
# File 'lib/active_merchant/billing/integrations/citrus/notification.rb', line 62
def transaction_id
params['pgTxnNo']
end
|
#transaction_status ⇒ Object
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
|