fix rqeuired fields for echeck voiding
authorivan <ivan>
Tue, 21 Sep 2004 07:43:21 +0000 (07:43 +0000)
committerivan <ivan>
Tue, 21 Sep 2004 07:43:21 +0000 (07:43 +0000)
AuthorizeNet.pm
Changes

index d4ee829..abe5f7b 100644 (file)
@@ -135,38 +135,47 @@ sub submit {
                       ? 'transaction_key'
                       : 'password';
 
-    if ($self->transaction_type() eq "ECHECK") {
+    my @required_fields = ( qw(type action login), $auth_type );
+
+    unless ( $self->{_content}->{action} eq 'VOID' ) {
+
+      if ($self->transaction_type() eq "ECHECK") {
+
+        push @required_fields, qw(
+          amount routing_code account_number account_type bank_name
+          account_name account_type
+        );
+
         if ($self->{_content}->{customer_org} ne '') {
-            $self->required_fields(qw/type login amount routing_code
-                                  account_number account_type bank_name
-                                  account_name account_type
-                                  customer_org customer_ssn/, $auth_type);
+          push @required_fields, qw( customer_org customer_ssn );
         } else {
-            $self->required_fields(qw/type login amount routing_code
-                                  account_number account_type bank_name
-                                  account_name account_type
-                                  license_num license_state license_dob/, $auth_type);
+          push @required_fields, qw(license_num license_state license_dob);
         }
-    } elsif ($self->transaction_type() eq 'CC' ) {
-      if ( $self->{_content}->{action} eq 'PRIOR_AUTH_CAPTURE' ) {
-          if ( $self->{_content}->{order_number}) {
-              $self->required_fields(qw/type login action amount/, $auth_type);
+
+      } elsif ($self->transaction_type() eq 'CC' ) {
+
+        if ( $self->{_content}->{action} eq 'PRIOR_AUTH_CAPTURE' ) {
+          if ( $self->{_content}->{order_number} ) {
+            push @required_fields, qw( amount order_number );
           } else {
-              $self->required_fields(qw/type login action amount 
-                                        card_number expiration/, $auth_type);
+            push @required_fields, qw( amount card_number expiration );
           }
-      } elsif ( $self->{_content}->{action} eq 'VOID' ) {
-        $self->required_fields(qw/login action/,$auth_type);
+        } else {
+          push @required_fields, qw(
+            amount last_name first_name card_number expiration
+          );
+        }
       } else {
-        $self->required_fields(qw/type login action amount last_name
-                                  first_name card_number expiration/, $auth_type);
+        Carp::croak( "AuthorizeNet can't handle transaction type: ".
+                     $self->transaction_type() );
       }
-    } else {
-        Carp::croak("AuthorizeNet can't handle transaction type: ".
-                    $self->transaction_type());
+
     }
 
-    my %post_data = $self->get_fields(qw/x_Login x_Password x_Tran_Key x_Invoice_Num
+    $self->required_fields(@required_fields);
+
+    my %post_data = $self->get_fields(qw/
+        x_Login x_Password x_Tran_Key x_Invoice_Num
         x_Description x_Amount x_Cust_ID x_Method x_Type x_Card_Num x_Exp_Date
         x_Card_Code x_Auth_Code x_Echeck_Type x_Bank_Acct_Num
         x_Bank_Account_Name x_Bank_ABA_Code x_Bank_Name x_Bank_Acct_Type
@@ -335,7 +344,7 @@ Business::OnlinePayment::AuthorizeNet - AuthorizeNet backend for Business::Onlin
 
 =head1 SUPPORTED TRANSACTION TYPES
 
-=head2 Visa, MasterCard, American Express, Discover
+=head2 CC, Visa, MasterCard, American Express, Discover
 
 Content required: type, login, password|transaction_key, action, amount, first_name, last_name, card_number, expiration.
 
@@ -393,7 +402,7 @@ Jason Spence <jspence@lightconsulting.com> contributed support for separate
 Authorization Only and Post Authorization steps and wrote some docs.
 OST <services@ostel.com> paid for it.
 
-T.J. Mather <tjmather@maxmind.com> sent a patch for the CVV2 field.
+T.J. Mather <tjmather@maxmind.com> sent a number of CVV2 patches.
 
 Mike Barry <mbarry@cos.com> sent in a patch for the referer field.
 
diff --git a/Changes b/Changes
index 552093a..a88685e 100644 (file)
--- a/Changes
+++ b/Changes
@@ -2,6 +2,7 @@ Revision history for Perl extension Business::OnlinePayment::AuthorizeNet.
 
 3.14  unreleased
        - Added ship_ name/address fields
+       - Fixed required fields for echeck voiding
        From T.J. Mather <tjmather@maxmind.com> (closes: cpan#6761):
        - Added cvv2_response and cavv_response to get the cvv2 and cavv
          response codes back from authorize.net.