lib/active_merchant/billing/credit_card.rb in activemerchant-1.1.0 vs lib/active_merchant/billing/credit_card.rb in activemerchant-1.2.0
- old
+ new
@@ -1,24 +1,23 @@
require 'time'
require 'date'
module ActiveMerchant #:nodoc:
module Billing #:nodoc:
- # This credit card object can be used as a stand alone object. It acts just like a active record object
+ # This credit card object can be used as a stand alone object. It acts just like an ActiveRecord object
# but doesn't support the .save method as its not backed by a database.
class CreditCard
include CreditCardMethods
+ include Validateable
cattr_accessor :require_verification_value
self.require_verification_value = false
def self.requires_verification_value?
require_verification_value
end
- include Validateable
-
class ExpiryDate #:nodoc:
attr_reader :month, :year
def initialize(month, year)
@month = month
@year = year
@@ -58,33 +57,38 @@
self.year = year.to_i
self.number.to_s.gsub!(/[^\d]/, "")
end
def validate
- errors.add "year", "expired" if expired?
-
- errors.add "first_name", "cannot be empty" if @first_name.blank?
- errors.add "last_name", "cannot be empty" if @last_name.blank?
- errors.add "month", "cannot be empty" unless valid_month?(@month)
- errors.add "year", "cannot be empty" unless valid_expiry_year?(@year)
+ errors.add :year, "expired" if expired?
+
+ errors.add :first_name, "cannot be empty" if @first_name.blank?
+ errors.add :last_name, "cannot be empty" if @last_name.blank?
+ errors.add :month, "is not a valid month" unless valid_month?(@month)
+ errors.add :year, "is not a valid year" unless valid_expiry_year?(@year)
# Bogus card is pretty much for testing purposes. Lets just skip these extra tests if its used
return if type == 'bogus'
- errors.add "number", "is not a valid credit card number" unless CreditCard.valid_number?(number)
- errors.add "type", "is invalid" unless CreditCard.card_companies.keys.include?(type)
- errors.add "type", "is not the correct card type" unless CreditCard.type?(number) == type
-
+ errors.add :number, "is not a valid credit card number" unless CreditCard.valid_number?(number)
+ errors.add :type, "is required" if type.blank?
+ errors.add :type, "is invalid" unless CreditCard.card_companies.keys.include?(type)
+
+ unless errors.on(:number) || errors.on(:type)
+ CreditCard.type?(number) == type or
+ errors.add :type, "is not the correct card type"
+ end
+
if CreditCard.requires_verification_value?
- errors.add "verification_value", "is required" unless verification_value?
+ errors.add :verification_value, "is required" unless verification_value?
end
if [ 'switch', 'solo' ].include?(type)
unless valid_month?(@start_month) && valid_start_year?(@start_year) || valid_issue_number?(@issue_number)
- errors.add "start_month", "is invalid" unless valid_month?(@start_month)
- errors.add "start_year", "is invalid" unless valid_start_year?(@start_year)
- errors.add "issue_number", "cannot be empty" unless valid_issue_number?(@issue_number)
+ errors.add :start_month, "is invalid" unless valid_month?(@start_month)
+ errors.add :start_year, "is invalid" unless valid_start_year?(@start_year)
+ errors.add :issue_number, "cannot be empty" unless valid_issue_number?(@issue_number)
end
end
end
def expired?