- Don't require "check_type" field
[Business-OnlinePayment-AuthorizeNet.git] / AuthorizeNet.pm
index 454790e..9ed5082 100644 (file)
@@ -1,7 +1,5 @@
 package Business::OnlinePayment::AuthorizeNet;
 
-# $Id: AuthorizeNet.pm,v 1.16 2002-11-22 00:49:17 ivan Exp $
-
 use strict;
 use Carp;
 use Business::OnlinePayment;
@@ -14,7 +12,7 @@ require Exporter;
 @ISA = qw(Exporter AutoLoader Business::OnlinePayment);
 @EXPORT = qw();
 @EXPORT_OK = qw();
-$VERSION = '3.12';
+$VERSION = '3.13';
 
 sub set_defaults {
     my $self = shift;
@@ -36,6 +34,7 @@ sub map_fields {
                    'authorization only'   => 'AUTH_ONLY',
                    'credit'               => 'CREDIT',
                    'post authorization'   => 'PRIOR_AUTH_CAPTURE',
+                   'void'                 => 'VOID',
                   );
     $content{'action'} = $actions{lc($content{'action'})} || $content{'action'};
 
@@ -108,7 +107,7 @@ sub submit {
         expiration     => 'x_Exp_Date',
         cvv2           => 'x_Card_Code',
         check_type     => 'x_Echeck_Type',
-       account_name   => 'x_Bank_Account_Name',
+       account_name   => 'x_Bank_Acct_Name',
         account_number => 'x_Bank_Acct_Num',
         account_type   => 'x_Bank_Acct_Type',
         bank_name      => 'x_Bank_Name',
@@ -124,18 +123,24 @@ sub submit {
         if ($self->{_content}->{customer_org} ne '') {
             $self->required_fields(qw/type login password amount routing_code
                                   account_number account_type bank_name
-                                  account_name account_type check_type
+                                  account_name account_type
                                   customer_org customer_ssn/);
         } else {
             $self->required_fields(qw/type login password amount routing_code
                                   account_number account_type bank_name
-                                  account_name account_type check_type
+                                  account_name account_type
                                   license_num license_state license_dob/);
         }
     } elsif ($self->transaction_type() eq 'CC' ) {
       if ( $self->{_content}->{action} eq 'PRIOR_AUTH_CAPTURE' ) {
-        $self->required_fields(qw/type login password action amount
-                                  card_number expiration/);
+          if ( $self->{_content}->{order_number}) {
+              $self->required_fields(qw/type login password action amount/);
+          } else {
+              $self->required_fields(qw/type login password action amount 
+                                        card_number expiration/);
+          }
+      } elsif ( $self->{_content}->{action} eq 'VOID' ) {
+        $self->required_fields(qw/login password action/);
       } else {
         $self->required_fields(qw/type login password action amount last_name
                                   first_name card_number expiration/);
@@ -255,12 +260,12 @@ Unlike Business::OnlinePayment or pre-3.0 verisons of
 Business::OnlinePayment::AuthorizeNet, 3.1 requires separate first_name and
 last_name fields.
 
-Business::OnlinePayment::AuthorizeNet uses the ADC direct response method,
-and sends a username and password with every transaction.  Therefore,
-Authorize.Net's referrer "security" is not necessary.  In your Authorize.Net
-interface at https://secure.authorize.net/ make sure the list of allowable
-referers is blank.  Alternatively, set the B<referer> field in the transaction
-content.
+Business::OnlinePayment::AuthorizeNet uses Authorize.Net's "Advanced
+Integration Method (AIM) (formerly known as ADC direct response)", sending a
+username and password with every transaction.  Therefore, Authorize.Net's
+referrer "security" is not necessary.  In your Authorize.Net interface at
+https://secure.authorize.net/ make sure the list of allowable referers is
+blank.  Alternatively, set the B<referer> field in the transaction content.
 
 To settle an authorization-only transaction (where you set action to
 'Authorization Only'), submit the nine-digit transaction id code in
@@ -288,7 +293,8 @@ https://secure.authorize.net/docs/developersguide.pml for details.
 Jason Kohles, jason@mediabang.com
 
 Ivan Kohler <ivan-authorizenet@420.am> updated it for Authorize.Net protocol
-3.0/3.1 and is the current maintainer.
+3.0/3.1 and is the current maintainer.  Please send patches as unified diffs
+(diff -u).
 
 Jason Spence <jspence@lightconsulting.com> contributed support for separate
 Authorization Only and Post Authorization steps and wrote some docs.
@@ -298,6 +304,11 @@ T.J. Mather <tjmather@maxmind.com> sent a patch for the CVV2 field.
 
 Mike Barry <mbarry@cos.com> sent in a patch for the referer field.
 
+Yuri V. Mkrtumyan <yuramk@novosoft.ru> sent in a patch to add the void action.
+
+Paul Zimmer <AuthorizeNetpm@pzimmer.box.bepress.com> sent in a patch for
+card-less post authorizations.
+
 =head1 SEE ALSO
 
 perl(1). L<Business::OnlinePayment>.