Class: ActiveMerchant::Billing::Integrations::SagePayForm::Notification

Inherits:
Notification
  • Object
show all
Includes:
Encryption
Defined in:
lib/active_merchant/billing/integrations/sage_pay_form/notification.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, #valid_sender?

Constructor Details

#initialize(post_data, options) ⇒ Notification

Returns a new instance of Notification.



12
13
14
15
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 12

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

Instance Method Details

#acknowledgeObject



173
174
175
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 173

def acknowledge      
  true
end

#address_resultObject

Numeric address check. Possible values:

NOTPROVIDED
NOTCHECKED
MATCHED
NOTMATCHED


87
88
89
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 87

def address_result
  params['AddressResult']
end

#address_statusObject

Address confirmation status. PayPal only. Possible values:

NONE
CONFIRMED
UNCONFIRMED


134
135
136
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 134

def address_status
  params['AddressStatus']
end

#auth_idObject

Authorization number (only if #completed?).



63
64
65
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 63

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


78
79
80
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 78

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.



121
122
123
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 121

def buyer_auth_result
  params['3DSecureStatus']
end

#buyer_auth_result_codeObject

Encoded 3D Secure result code.



126
127
128
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 126

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)


24
25
26
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 24

def cancelled?
  status_code == 'ABORT'
end

#complete?Boolean

Was the transaction complete?

Returns:

  • (Boolean)


18
19
20
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 18

def complete?
  status_code == 'OK'
end

#credit_card_last_4_digitsObject

Last four digits of credit card.



160
161
162
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 160

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



155
156
157
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 155

def credit_card_type
  params['CardType']
end

#currencyObject

Used by composition methods, but not supplied by SagePay.



165
166
167
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 165

def currency
  nil
end

#cv2_resultObject

CV2 code check. Possible values:

NOTPROVIDED
NOTCHECKED
MATCHED
NOTMATCHED


105
106
107
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 105

def cv2_result
  params['CV2Result']
end

#gift_aid?Boolean

Was the Gift Aid box checked?

Returns:

  • (Boolean)


110
111
112
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 110

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

#grossObject

Total amount (no fees).



68
69
70
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 68

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

#item_idObject

Vendor-supplied code (:order mapping).



53
54
55
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 53

def item_id
  params['VendorTxCode']
end

#messageObject

Check this if #completed? is false.



48
49
50
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 48

def message
  params['StatusDetail']
end

#payer_verified?Boolean

Payer verification. Undocumented.

Returns:

  • (Boolean)


139
140
141
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 139

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

#post_code_resultObject

Post code check. Possible values:

NOTPROVIDED
NOTCHECKED
MATCHED
NOTMATCHED


96
97
98
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 96

def post_code_result
  params['PostCodeResult']
end

#statusObject

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



29
30
31
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 29

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.



43
44
45
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 43

def status_code
  params['Status']
end

#test?Boolean

Returns:

  • (Boolean)


169
170
171
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 169

def test?
  false
end

#transaction_idObject

Internal SagePay code, typically “LONG-UUID”.



58
59
60
# File 'lib/active_merchant/billing/integrations/sage_pay_form/notification.rb', line 58

def transaction_id
  params['VPSTxId']
end