Class: OffsitePayments::Integrations::PayuIn::Notification
- Inherits:
-
Notification
- Object
- Notification
- OffsitePayments::Integrations::PayuIn::Notification
- Defined in:
- lib/offsite_payments/integrations/payu_in.rb
Direct Known Subclasses
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
-
#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.
-
#original_gross ⇒ Object
original amount send by merchant.
-
#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, #iso_currency, #test?, #valid_sender?
Constructor Details
#initialize(post, options = {}) ⇒ Notification
Returns a new instance of Notification.
95 96 97 98 99 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 95 def initialize(post, = {}) super(post, ) @merchant_id = [:credential1] @secret_key = [:credential2] end |
Instance Method Details
#account ⇒ Object
Merchant Id provided by the PayU.in
160 161 162 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 160 def account params['key'] end |
#acknowledge(authcode = nil) ⇒ Object
227 228 229 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 227 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
118 119 120 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 118 def amount_ok?( order_amount, order_discount = BigDecimal.new( '0.0' ) ) BigDecimal.new( original_gross ) == order_amount && BigDecimal.new( discount.to_s ) == order_discount end |
#checksum ⇒ Object
219 220 221 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 219 def checksum params['hash'] end |
#checksum_ok? ⇒ Boolean
231 232 233 234 235 236 237 238 239 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 231 def checksum_ok? checksum_fields = [transaction_status, *user_defined.reverse, customer_email, customer_first_name, product_info, original_gross, invoice] unless Digest::SHA512.hexdigest([@secret_key, *checksum_fields, @merchant_id].join("|")) == checksum @message = 'Return checksum not matching the data provided' return false end true end |
#complete? ⇒ Boolean
101 102 103 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 101 def complete? status == "Completed" end |
#currency ⇒ Object
What currency have we been dealing with
146 147 148 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 146 def currency 'INR' end |
#customer_address ⇒ Object
Full address of the customer
209 210 211 212 213 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 209 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
189 190 191 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 189 def customer_email params['email'] end |
#customer_first_name ⇒ Object
Firstname of the customer
199 200 201 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 199 def customer_first_name params['firstname'] end |
#customer_last_name ⇒ Object
Lastname of the customer
204 205 206 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 204 def customer_last_name params['lastname'] end |
#customer_phone ⇒ Object
Phone of the customer
194 195 196 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 194 def customer_phone params['phone'] end |
#discount ⇒ Object
This is discount given to user - based on promotion set by merchants.
174 175 176 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 174 def discount params['discount'] end |
#gross ⇒ Object
169 170 171 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 169 def gross parse_and_round_gross_amount(params['amount']) end |
#invoice ⇒ Object
This is the invoice which you passed to PayU.in
155 156 157 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 155 def invoice params['txnid'] end |
#invoice_ok?(order_id) ⇒ Boolean
113 114 115 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 113 def invoice_ok?( order_id ) order_id.to_s == invoice.to_s end |
#item_id ⇒ Object
150 151 152 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 150 def item_id params['txnid'] end |
#message ⇒ Object
223 224 225 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 223 def @message || params['error'] end |
#offer_description ⇒ Object
Description offer for what PayU given the offer to user - based on promotion set by merchants.
179 180 181 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 179 def offer_description params['offer'] end |
#original_gross ⇒ Object
original amount send by merchant
165 166 167 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 165 def original_gross params['amount'] end |
#product_info ⇒ Object
Information about the product as send by merchant
184 185 186 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 184 def product_info params['productinfo'] end |
#status ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 105 def status case transaction_status.downcase when 'success' then 'Completed' when 'failure' then 'Failed' when 'pending' then 'Pending' end end |
#transaction_id ⇒ Object
ID of this transaction (PayU.in number)
131 132 133 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 131 def transaction_id params['mihpayid'] end |
#transaction_status ⇒ Object
Status of transaction return from the PayU. List of possible values:
SUCCESS
PENDING
FAILURE
126 127 128 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 126 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
141 142 143 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 141 def type params['mode'] end |
#user_defined ⇒ Object
215 216 217 |
# File 'lib/offsite_payments/integrations/payu_in.rb', line 215 def user_defined @user_defined ||= 10.times.map { |i| params["udf#{i + 1}"] } end |