anchor.diff:  
   Some merchant accounts will incur extra fees if AVS isn't used."))
   
  +
  +
  +;;;; Conditions
  +
  
positive.code:   (:documentation "Check the credit-card number is valid looking based on
  the luhn algorithm: http://en.wikipedia.org/wiki/Luhn_algorithm"))
  
  (defgeneric check-valid (cc-data &key
  				 require-avs
  				 require-cv
  				 error-p
  
negative.code: 
  (in-package :cl-monetra)
  
  ;;;; Processor Functions
  
  (defgeneric sale (processor cc-data amount &key &allow-other-keys)
    (:documentation "Do a one time charge on a credit card for an amount using
  the given processor. Other provided keys are up to the processor to interpret
  or ignore."))
  
  (defgeneric authorize (processor cc-data amount &key &allow-other-keys))
  
  (defgeneric preauth-capture (processor transaction-id &key amount &allow-other-keys ))
  
  (defgeneric void (processor transaction-id &key &allow-other-keys))
  
  ;;;; Data Container and functions to validate it
  
  
  (defclass cc-data ()
  