Class: OffsitePayments::Integrations::TwoCheckout::Notification

Inherits:
Notification
  • Object
show all
Defined in:
lib/offsite_payments/integrations/two_checkout.rb

Instance Attribute Summary

Attributes inherited from Notification

#params, #raw

Instance Method Summary collapse

Methods inherited from Notification

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

Constructor Details

This class inherits a constructor from OffsitePayments::Notification

Instance Method Details

#acknowledge(authcode = nil) ⇒ Object

Checks against MD5 Hash


246
247
248
249
250
251
252
253
254
255
256
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 246

def acknowledge(authcode = nil)
  return false if security_key.blank?
  if ins_message?
    Digest::MD5.hexdigest("#{ transaction_id }#{ params['vendor_id'] }#{ invoice_id }#{ secret }").upcase == security_key.upcase
  elsif passback?
    order_number = params['demo'] == 'Y' ? 1 : params['order_number']
    Digest::MD5.hexdigest("#{ secret }#{ params['sid'] }#{ order_number }#{ gross }").upcase == params['key'].upcase
  else
    false
  end
end

#complete?Boolean


187
188
189
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 187

def complete?
  status == 'Completed'
end

#currencyObject

Seller currency sale was placed in


183
184
185
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 183

def currency
  params['list_currency']
end

#grossObject

The money amount we received in X.2 decimal. passback || INS gross amount for new orders || default INS gross


222
223
224
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 222

def gross
  params['invoice_list_amount'] || params['total'] || params['item_list_amount_1']
end

#invoice_idObject

2Checkout Invoice ID


202
203
204
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 202

def invoice_id
  params['invoice_id']
end

#item_idObject

The value passed with 'merchant_order_id' is passed back as 'vendor_order_id'


192
193
194
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 192

def item_id
  params['vendor_order_id'] || params['merchant_order_id']
end

#payer_emailObject

Customer Email


211
212
213
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 211

def payer_email
  params['customer_email']
end

#received_atObject


206
207
208
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 206

def received_at
  params['timestamp']
end

#secretObject

Secret Word defined in 2Checkout account


241
242
243
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 241

def secret
  @options[:credential2]
end

#security_keyObject

The MD5 Hash


216
217
218
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 216

def security_key
  params['md5_hash'] || params['key']
end

#statusObject

Determine status based on parameter set, if the params include a fraud status we know we're being notified of the finalization of an order (an INS message) If the params include 'credit_card_processed' we know we're being notified of a new order being inbound, which we handle in the deferred demo sale scenario.


230
231
232
233
234
235
236
237
238
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 230

def status
  if params['fraud_status'] == 'pass' || params['credit_card_processed'] == 'Y'
    'Completed'
  elsif params['fraud_status'] == 'wait'
    'Pending'
  else
    'Failed'
  end
end

#transaction_idObject

2Checkout Sale ID


197
198
199
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 197

def transaction_id
  params['sale_id'] || params['order_number']
end

#typeObject

INS message type


178
179
180
# File 'lib/offsite_payments/integrations/two_checkout.rb', line 178

def type
  params['message_type']
end