Class: OffsitePayments::Integrations::SagePayForm::Notification

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

Defined Under Namespace

Classes: CryptError, InvalidCryptData, MissingCryptData, MissingCryptKey

Instance Attribute Summary

Attributes inherited from Notification

#params, #raw

Instance Method Summary collapse

Methods included from Encryption

#sage_decrypt, #sage_encrypt, #sage_encrypt_salt

Methods inherited from Notification

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

Constructor Details

#initialize(post_data, options) ⇒ Notification

Returns a new instance of Notification.



213
214
215
216
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 213

def initialize(post_data, options)
  super
  load_crypt_params(params['crypt'], options[:credential2])
end

Instance Method Details

#acknowledgeObject



374
375
376
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 374

def acknowledge
  true
end

#address_resultObject

Numeric address check. Possible values:

NOTPROVIDED
NOTCHECKED
MATCHED
NOTMATCHED


288
289
290
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 288

def address_result
  params['AddressResult']
end

#address_statusObject

Address confirmation status. PayPal only. Possible values:

NONE
CONFIRMED
UNCONFIRMED


335
336
337
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 335

def address_status
  params['AddressStatus']
end

#auth_idObject

Authorization number (only if #completed?).



264
265
266
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 264

def auth_id
  params['TxAuthNo']
end

#avs_cv2_resultObject

AVS and CV2 check results. Possible values:

ALL MATCH
SECURITY CODE MATCH ONLY
ADDRESS MATCH ONLY
NO DATA MATCHES
DATA NOT CHECKED


279
280
281
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 279

def avs_cv2_result
  params['AVSCV2']
end

#buyer_auth_resultObject

Result of 3D Secure checks. Possible values:

OK

Authenticated correctly.

NOTCHECKED

Authentication not performed.

NOTAVAILABLE

Card not auth-capable, or auth is otherwise impossible.

NOTAUTHED

User failed authentication.

INCOMPLETE

Authentication unable to complete.

ERROR

Unable to attempt authentication due to data / service errors.



322
323
324
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 322

def buyer_auth_result
  params['3DSecureStatus']
end

#buyer_auth_result_codeObject

Encoded 3D Secure result code.



327
328
329
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 327

def buyer_auth_result_code
  params['CAVV']
end

#cancelled?Boolean

Was the transaction cancelled? Unfortunately, we can’t distinguish “user abort” from “idle too long”.

Returns:

  • (Boolean)


225
226
227
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 225

def cancelled?
  status_code == 'ABORT'
end

#complete?Boolean

Was the transaction complete?

Returns:

  • (Boolean)


219
220
221
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 219

def complete?
  status_code == 'OK'
end

#credit_card_last_4_digitsObject

Last four digits of credit card.



361
362
363
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 361

def credit_card_last_4_digits
  params['Last4Digits']
end

#credit_card_typeObject

Credit card type. Possible values:

VISA

Visa

MC

MasterCard

DELTA

Delta

SOLO

Solo

MAESTRO

Maestro (UK and International)

UKE

Visa Electron

AMEX

American Express

DC

Diners Club

JCB

JCB

LASER

Laser

PAYPAL

PayPal



356
357
358
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 356

def credit_card_type
  params['CardType']
end

#currencyObject

Used by composition methods, but not supplied by SagePay.



366
367
368
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 366

def currency
  nil
end

#cv2_resultObject

CV2 code check. Possible values:

NOTPROVIDED
NOTCHECKED
MATCHED
NOTMATCHED


306
307
308
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 306

def cv2_result
  params['CV2Result']
end

#gift_aid?Boolean

Was the Gift Aid box checked?

Returns:

  • (Boolean)


311
312
313
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 311

def gift_aid?
  params['GiftAid'] == '1'
end

#grossObject

Total amount (no fees).



269
270
271
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 269

def gross
  params['Amount'].gsub(/,(?=\d{3}\b)/, '')
end

#item_idObject

Vendor-supplied code (:order mapping).



254
255
256
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 254

def item_id
  params['VendorTxCode'].rpartition('-').first
end

#messageObject

Check this if #completed? is false.



249
250
251
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 249

def message
  params['StatusDetail']
end

#payer_verified?Boolean

Payer verification. Undocumented.

Returns:

  • (Boolean)


340
341
342
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 340

def payer_verified?
  params['PayerStatus'] == 'VERIFIED'
end

#post_code_resultObject

Post code check. Possible values:

NOTPROVIDED
NOTCHECKED
MATCHED
NOTMATCHED


297
298
299
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 297

def post_code_result
  params['PostCodeResult']
end

#statusObject

Text version of #complete?, since we don’t support Pending.



230
231
232
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 230

def status
  complete? ? 'Completed' : 'Failed'
end

#status_codeObject

Status of transaction. List of possible values:

OK

Transaction completed successfully.

NOTAUTHED

Incorrect card details / insufficient funds.

MALFORMED

Invalid input data.

INVALID

Valid input data, but some fields are incorrect.

ABORT

User hit cancel button or went idle for 15+ minutes.

REJECTED

Rejected by account fraud screening rules.

AUTHENTICATED

Authenticated card details secured at SagePay.

REGISTERED

Non-authenticated card details secured at SagePay.

ERROR

Problem internal to SagePay.



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

def status_code
  params['Status']
end

#test?Boolean

Returns:

  • (Boolean)


370
371
372
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 370

def test?
  false
end

#transaction_idObject

Internal SagePay code, typically “LONG-UUID”.



259
260
261
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 259

def transaction_id
  params['VPSTxId']
end