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


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

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

Instance Method Details

#acknowledgeObject


368
369
370
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 368

def acknowledge
  true
end

#address_resultObject

Numeric address check. Possible values:

NOTPROVIDED
NOTCHECKED
MATCHED
NOTMATCHED

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

def address_result
  params['AddressResult']
end

#address_statusObject

Address confirmation status. PayPal only. Possible values:

NONE
CONFIRMED
UNCONFIRMED

329
330
331
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 329

def address_status
  params['AddressStatus']
end

#auth_idObject

Authorization number (only if #completed?).


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

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

273
274
275
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 273

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.


316
317
318
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 316

def buyer_auth_result
  params['3DSecureStatus']
end

#buyer_auth_result_codeObject

Encoded 3D Secure result code.


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

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)

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

def cancelled?
  status_code == 'ABORT'
end

#complete?Boolean

Was the transaction complete?

Returns:

  • (Boolean)

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

def complete?
  status_code == 'OK'
end

#credit_card_last_4_digitsObject

Last four digits of credit card.


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

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


350
351
352
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 350

def credit_card_type
  params['CardType']
end

#currencyObject

Used by composition methods, but not supplied by SagePay.


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

def currency
  nil
end

#cv2_resultObject

CV2 code check. Possible values:

NOTPROVIDED
NOTCHECKED
MATCHED
NOTMATCHED

300
301
302
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 300

def cv2_result
  params['CV2Result']
end

#gift_aid?Boolean

Was the Gift Aid box checked?

Returns:

  • (Boolean)

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

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

#grossObject

Total amount (no fees).


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

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

#item_idObject

Vendor-supplied code (:order mapping).


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

def item_id
  params['VendorTxCode']
end

#messageObject

Check this if #completed? is false.


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

def message
  params['StatusDetail']
end

#payer_verified?Boolean

Payer verification. Undocumented.

Returns:

  • (Boolean)

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

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

#post_code_resultObject

Post code check. Possible values:

NOTPROVIDED
NOTCHECKED
MATCHED
NOTMATCHED

291
292
293
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 291

def post_code_result
  params['PostCodeResult']
end

#statusObject

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


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

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.


238
239
240
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 238

def status_code
  params['Status']
end

#test?Boolean

Returns:

  • (Boolean)

364
365
366
# File 'lib/offsite_payments/integrations/sage_pay_form.rb', line 364

def test?
  false
end

#transaction_idObject

Internal SagePay code, typically “LONG-UUID”.


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

def transaction_id
  params['VPSTxId']
end