Class: OffsitePayments::Integrations::RealexOffsite::Notification

Inherits:
Notification
  • Object
show all
Includes:
Common
Defined in:
lib/offsite_payments/integrations/realex_offsite.rb

Constant Summary

Constants included from Common

Common::CURRENCY_SPECIAL_MINOR_UNITS

Instance Attribute Summary

Attributes inherited from Notification

#params, #raw

Instance Method Summary collapse

Methods included from Common

#create_signature, #extract_avs_code, #extract_digits, #format_amount, #format_amount_as_float

Methods inherited from Notification

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

Constructor Details

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

Returns a new instance of Notification.



175
176
177
178
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 175

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

Instance Method Details

#acknowledge(authcode = nil) ⇒ Object

Required Notification methods to define



181
182
183
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 181

def acknowledge(authcode = nil)
  verified?
end

#authcodeObject



248
249
250
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 248

def authcode
  params['AUTHCODE']
end

#avs_address_resultObject



274
275
276
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 274

def avs_address_result
  params['AVSADDRESSRESULT']
end

#avs_postcode_resultObject



270
271
272
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 270

def avs_postcode_result
  params['AVSPOSTCODERESULT']
end

#calculated_signatureObject



256
257
258
259
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 256

def calculated_signature
  fields = [timestamp, merchant_id, order_id, result, message, pasref, authcode]
  create_signature(fields, @secret)
end

#cavvObject



286
287
288
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 286

def cavv
  params['CAVV']
end

#checkout_idObject



228
229
230
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 228

def checkout_id
  params['CHECKOUT_ID']
end

#complete?Boolean

Returns:

  • (Boolean)


215
216
217
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 215

def complete?
  verified? && status == 'Completed'
end

#currencyObject

Realex does not send back the currency param by default we have sent this additional parameter



207
208
209
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 207

def currency
  params['X-CURRENCY']
end

#cvn_resultObject

Extra data (available from Realex)



266
267
268
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 266

def cvn_result
  params['CVNRESULT']
end

#eciObject



282
283
284
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 282

def eci
  params['ECI']
end

#grossObject



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

def gross
  format_amount_as_float(params['AMOUNT'], currency)
end

#item_idObject



185
186
187
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 185

def item_id
  checkout_id
end

#merchant_idObject



224
225
226
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 224

def merchant_id
  params['MERCHANT_ID']
end

#messageObject



240
241
242
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 240

def message
  params['MESSAGE']
end

#order_idObject



232
233
234
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 232

def order_id
  params['ORDER_ID']
end

#pasrefObject



244
245
246
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 244

def pasref
  params['PASREF']
end

#resultObject



236
237
238
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 236

def result
  params['RESULT']
end

#signatureObject



252
253
254
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 252

def signature
  params['SHA1HASH']
end

#statusObject



197
198
199
200
201
202
203
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 197

def status
  if result == '00'
    'Completed'
  else
    'Invalid'
  end
end

#test?Boolean

Returns:

  • (Boolean)


193
194
195
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 193

def test?
  params['X-TEST']
end

#timestampObject

Fields for Realex signature verification



220
221
222
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 220

def timestamp
  params['TIMESTAMP']
end

#transaction_idObject



189
190
191
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 189

def transaction_id
  pasref
end

#verified?Boolean

Returns:

  • (Boolean)


261
262
263
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 261

def verified?
  signature == calculated_signature
end

#xidObject



290
291
292
# File 'lib/offsite_payments/integrations/realex_offsite.rb', line 290

def xid
  params['XID']
end