Don't require libense_num / license_state / license_dob for E-Check transacitons...
[Business-OnlinePayment-AuthorizeNet.git] / AuthorizeNet / AIM.pm
index 0039502..c66247a 100644 (file)
@@ -9,7 +9,7 @@ use Text::CSV_XS;
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
 
 @ISA = qw(Business::OnlinePayment::AuthorizeNet Business::OnlinePayment::HTTPS);
-$VERSION = '3.22';
+$VERSION = '3.23';
 
 sub set_defaults {
     my $self = shift;
@@ -35,7 +35,7 @@ sub map_fields {
                    'post authorization'   => 'PRIOR_AUTH_CAPTURE',
                    'void'                 => 'VOID',
                   );
-    $content{'action'} = $actions{lc($content{'action'})} || $content{'action'};
+    $content{'action'} = $actions{lc($content{'action'} || '')} || $content{'action'};
 
     # TYPE MAP
     my %types = ('visa'               => 'CC',
@@ -44,7 +44,7 @@ sub map_fields {
                  'discover'           => 'CC',
                  'check'              => 'ECHECK',
                 );
-    $content{'type'} = $types{lc($content{'type'})} || $content{'type'};
+    $content{'type'} = $types{lc($content{'type'} || '')} || $content{'type'};
     $self->transaction_type($content{'type'});
 
     # ACCOUNT TYPE MAP
@@ -53,7 +53,7 @@ sub map_fields {
                          'business checking'   => 'CHECKING',
                          'business savings'    => 'SAVINGS',
                         );
-    $content{'account_type'} = $account_types{lc($content{'account_type'})}
+    $content{'account_type'} = $account_types{lc($content{'account_type'} || '')}
                                || $content{'account_type'};
 
     if (length $content{'password'} == 15) {
@@ -166,7 +166,10 @@ sub submit {
             length  $self->{_content}->{customer_org}
         ) {
           push @required_fields, qw( customer_org customer_ssn );
-        } else {
+        }
+        elsif ( defined $self->{_content}->{license_num} and
+                length  $self->{_content}->{license_num}
+        ) {
           push @required_fields, qw(license_num license_state license_dob);
         }
 
@@ -340,6 +343,9 @@ method that returns the MD5 hash which is returned by the gateway.
 Steve Simitzis contributed a patch for better compatibility with
 eProcessingNetwork's AuthorizeNet compatability mode.
 
+Craig Pearlman <cpearlma@yahoo.com> sent in a patch to more accurately declare
+required fields for E-check transcations.
+
 =head1 SEE ALSO
 
 perl(1). L<Business::OnlinePayment> L<Business::OnlinePayment::AuthorizeNet>.