Class: ActiveMerchant::Billing::Integrations::PayuIn::Notification
- Inherits:
-
Notification
- Object
- Notification
- ActiveMerchant::Billing::Integrations::PayuIn::Notification
- Defined in:
- lib/active_merchant/billing/integrations/payu_in/notification.rb
Direct Known Subclasses
ActiveMerchant::Billing::Integrations::PayuInPaisa::Notification
Instance Attribute Summary
Attributes inherited from Notification
Instance Method Summary collapse
-
#account ⇒ Object
Merchant Id provided by the PayU.in.
- #acknowledge(authcode = nil) ⇒ Object
-
#amount_ok?(order_amount, order_discount = BigDecimal.new( '0.0' )) ⇒ Boolean
Order amount should be equal to gross - discount.
- #checksum ⇒ Object
- #checksum_ok? ⇒ Boolean
- #complete? ⇒ Boolean
-
#currency ⇒ Object
What currency have we been dealing with.
-
#customer_address ⇒ Object
Full address of the customer.
-
#customer_email ⇒ Object
Email of the customer.
-
#customer_first_name ⇒ Object
Firstname of the customer.
-
#customer_last_name ⇒ Object
Lastname of the customer.
-
#customer_phone ⇒ Object
Phone of the customer.
-
#discount ⇒ Object
This is discount given to user - based on promotion set by merchants.
-
#gross ⇒ Object
original amount send by merchant.
-
#initialize(post, options = {}) ⇒ Notification
constructor
A new instance of Notification.
-
#invoice ⇒ Object
This is the invoice which you passed to PayU.in.
- #invoice_ok?(order_id) ⇒ Boolean
- #item_id ⇒ Object
- #message ⇒ Object
-
#offer_description ⇒ Object
Description offer for what PayU given the offer to user - based on promotion set by merchants.
-
#product_info ⇒ Object
Information about the product as send by merchant.
- #status ⇒ Object
-
#transaction_id ⇒ Object
ID of this transaction (PayU.in number).
-
#transaction_status ⇒ Object
Status of transaction return from the PayU.
-
#type ⇒ Object
Mode of Payment.
- #user_defined ⇒ Object
Methods inherited from Notification
#amount, #empty!, #gross_cents, #test?, #valid_sender?
Constructor Details
#initialize(post, options = {}) ⇒ Notification
Returns a new instance of Notification.
7 8 9 10 11 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 7 def initialize(post, = {}) super(post, ) @merchant_id = [:credential1] @secret_key = [:credential2] end |
Instance Method Details
#account ⇒ Object
Merchant Id provided by the PayU.in
80 81 82 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 80 def account params['key'] end |
#acknowledge(authcode = nil) ⇒ Object
146 147 148 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 146 def acknowledge(authcode = nil) checksum_ok? end |
#amount_ok?(order_amount, order_discount = BigDecimal.new( '0.0' )) ⇒ Boolean
Order amount should be equal to gross - discount
38 39 40 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 38 def amount_ok?( order_amount, order_discount = BigDecimal.new( '0.0' ) ) BigDecimal.new( gross ) == order_amount && BigDecimal.new( discount ) == order_discount end |
#checksum ⇒ Object
138 139 140 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 138 def checksum params['hash'] end |
#checksum_ok? ⇒ Boolean
150 151 152 153 154 155 156 157 158 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 150 def checksum_ok? fields = user_defined.dup.push( customer_email, customer_first_name, product_info, gross, invoice, :reverse => true ) fields.unshift( transaction_status ) unless PayuIn.checksum(@merchant_id, @secret_key, *fields ) == checksum @message = 'Return checksum not matching the data provided' return false end true end |
#complete? ⇒ Boolean
13 14 15 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 13 def complete? status == "Completed" end |
#currency ⇒ Object
What currency have we been dealing with
66 67 68 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 66 def currency 'INR' end |
#customer_address ⇒ Object
Full address of the customer
125 126 127 128 129 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 125 def customer_address { :address1 => params['address1'], :address2 => params['address2'], :city => params['city'], :state => params['state'], :country => params['country'], :zipcode => params['zipcode'] } end |
#customer_email ⇒ Object
Email of the customer
105 106 107 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 105 def customer_email params['email'] end |
#customer_first_name ⇒ Object
Firstname of the customer
115 116 117 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 115 def customer_first_name params['firstname'] end |
#customer_last_name ⇒ Object
Lastname of the customer
120 121 122 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 120 def customer_last_name params['lastname'] end |
#customer_phone ⇒ Object
Phone of the customer
110 111 112 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 110 def customer_phone params['phone'] end |
#discount ⇒ Object
This is discount given to user - based on promotion set by merchants.
90 91 92 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 90 def discount params['discount'] end |
#gross ⇒ Object
original amount send by merchant
85 86 87 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 85 def gross params['amount'] end |
#invoice ⇒ Object
This is the invoice which you passed to PayU.in
75 76 77 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 75 def invoice params['txnid'] end |
#invoice_ok?(order_id) ⇒ Boolean
33 34 35 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 33 def invoice_ok?( order_id ) order_id.to_s == invoice.to_s end |
#item_id ⇒ Object
70 71 72 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 70 def item_id params['txnid'] end |
#message ⇒ Object
142 143 144 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 142 def @message || params['error'] end |
#offer_description ⇒ Object
Description offer for what PayU given the offer to user - based on promotion set by merchants.
95 96 97 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 95 def offer_description params['offer'] end |
#product_info ⇒ Object
Information about the product as send by merchant
100 101 102 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 100 def product_info params['productinfo'] end |
#status ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 17 def status @status ||= if checksum_ok? if transaction_id.blank? 'Invalid' else case transaction_status.downcase when 'success' then 'Completed' when 'failure' then 'Failed' when 'pending' then 'Pending' end end else 'Tampered' end end |
#transaction_id ⇒ Object
ID of this transaction (PayU.in number)
51 52 53 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 51 def transaction_id params['mihpayid'] end |
#transaction_status ⇒ Object
Status of transaction return from the PayU. List of possible values:
SUCCESS
PENDING
FAILURE
46 47 48 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 46 def transaction_status params['status'] end |
#type ⇒ Object
Mode of Payment
‘CC’ for credit-card ‘NB’ for net-banking ‘CD’ for cheque or DD ‘CO’ for Cash Pickup
61 62 63 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 61 def type params['mode'] end |
#user_defined ⇒ Object
131 132 133 134 135 136 |
# File 'lib/active_merchant/billing/integrations/payu_in/notification.rb', line 131 def user_defined return @user_defined if @user_defined @user_defined = [] 10.times{ |i| @user_defined.push( params[ "udf#{i+1}" ] ) } @user_defined end |