Class: PayCertify::Gateway::Transaction::Validation
- Inherits:
-
Base::Validation
- Object
- Base::Validation
- PayCertify::Gateway::Transaction::Validation
- Defined in:
- lib/paycertify/gateway/transaction.rb
Constant Summary collapse
- ALL_VALIDATIONS =
[ # Mandatory fields { name: :type, validation: :type_validation, required: true }, { name: :amount, validation: :amount_validation, required: true }, { name: :currency, validation: :currency_validation, required: true }, { name: :card_number, validation: :card_number_validation, required: true }, { name: :expiration_month, validation: :expiration_month_validation, required: true }, { name: :expiration_year, validation: :expiration_year_validation, required: true }, { name: :name_on_card, validation: :no_validation, required: true }, { name: :cvv, validation: :no_validation, required: true }, { name: :transaction_id, validation: :no_validation, required: true }, { name: :billing_city, validation: :no_validation, required: true }, { name: :billing_state, validation: :no_validation, required: true }, { name: :billing_country, validation: :no_validation, required: true }, { name: :billing_zip, validation: :zip_validation, required: true }, # Optional fields { name: :shipping_zip, validation: :zip_validation, required: false }, { name: :email, validation: :email_validation, required: false }, { name: :ip, validation: :ip_validation, required: false } ]
- CAPTURE_VALIDATIONS =
[ { name: :type, validation: :type_validation, required: true }, { name: :amount, validation: :amount_validation, required: true }, { name: :transaction_id, validation: :no_validation, required: true } ]
- VOID_VALIDATIONS =
[ { name: :type, validation: :type_validation, required: true }, # { name: :amount, validation: :amount_validation, required: true }, { name: :transaction_id, validation: :no_validation, required: true } ]
- ALLOWED_TYPES =
%w(sale auth return void force recurring)
- ALLOWED_CURRENCIES =
%w(USD EUR)
Constants inherited from Base::Validation
Base::Validation::CREDIT_CARD_REGEX, Base::Validation::EMAIL_REGEX
Instance Attribute Summary
Attributes inherited from Base::Validation
Instance Method Summary collapse
- #currency_validation(attribute) ⇒ Object
-
#initialize(attributes = {}) ⇒ Validation
constructor
A new instance of Validation.
- #ip_validation(attribute) ⇒ Object
- #type_validation(attribute) ⇒ Object
- #validations ⇒ Object
Methods inherited from Base::Validation
#add_error, #amount_validation, #card_number_validation, #email_validation, #expiration_month_validation, #expiration_year_validation, #no_validation, #presence_validation, #set_attribute, #value_for, #zip_validation
Constructor Details
#initialize(attributes = {}) ⇒ Validation
Returns a new instance of Validation.
74 75 76 77 78 79 80 81 |
# File 'lib/paycertify/gateway/transaction.rb', line 74 def initialize(attributes={}) super(attributes) validations.each do |attribute| presence_validation(attribute) if attribute[:required] send(attribute[:validation], attribute) if value_for(attribute).present? end end |
Instance Method Details
#currency_validation(attribute) ⇒ Object
100 101 102 103 104 105 106 |
# File 'lib/paycertify/gateway/transaction.rb', line 100 def currency_validation(attribute) set_attribute(attribute, value_for(attribute).upcase) unless value_for(attribute).try(:to_s).in?(ALLOWED_CURRENCIES) add_error(attribute, "Must be one of #{ALLOWED_CURRENCIES.join(', ')}") end end |
#ip_validation(attribute) ⇒ Object
108 109 110 111 112 |
# File 'lib/paycertify/gateway/transaction.rb', line 108 def ip_validation(attribute) IPAddr.new(value_for(attribute)) rescue IPAddr::InvalidAddressError add_error(attribute, "Doesn't validate as an IP.") end |
#type_validation(attribute) ⇒ Object
94 95 96 97 98 |
# File 'lib/paycertify/gateway/transaction.rb', line 94 def type_validation(attribute) unless value_for(attribute).try(:to_s).in?(ALLOWED_TYPES) add_error(attribute, "Must be one of #{ALLOWED_TYPES.join(', ')}") end end |
#validations ⇒ Object
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/paycertify/gateway/transaction.rb', line 83 def validations case attributes[:type] when 'force' CAPTURE_VALIDATIONS when 'void', 'return' VOID_VALIDATIONS else ALL_VALIDATIONS end end |