patch from Michael G. Schwern: Eliminate inheriting from AutoLoader. We're not using...
[Business-OnlinePayment-AuthorizeNet.git] / AuthorizeNet.pm
index abe5f7b..90ba3cd 100644 (file)
@@ -9,10 +9,10 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
 
 require Exporter;
 
-@ISA = qw(Exporter AutoLoader Business::OnlinePayment);
+@ISA = qw(Exporter Business::OnlinePayment);
 @EXPORT = qw();
 @EXPORT_OK = qw();
-$VERSION = '3.14';
+$VERSION = '3.16';
 
 sub set_defaults {
     my $self = shift;
@@ -105,7 +105,7 @@ sub submit {
         country           => 'x_Country',
         ship_last_name    => 'x_Ship_To_Last_Name',
         ship_first_name   => 'x_Ship_To_First_Name',
-        ship_company      => 'x_Company',
+        ship_company      => 'x_Ship_To_Company',
         ship_address      => 'x_Ship_To_Address',
         ship_city         => 'x_Ship_To_City',
         ship_state        => 'x_Ship_To_State',
@@ -143,10 +143,12 @@ sub submit {
 
         push @required_fields, qw(
           amount routing_code account_number account_type bank_name
-          account_name account_type
+          account_name
         );
 
-        if ($self->{_content}->{customer_org} ne '') {
+        if (defined $self->{_content}->{customer_org} and
+            length  $self->{_content}->{customer_org}
+        ) {
           push @required_fields, qw( customer_org customer_ssn );
         } else {
           push @required_fields, qw(license_num license_state license_dob);
@@ -160,6 +162,8 @@ sub submit {
           } else {
             push @required_fields, qw( amount card_number expiration );
           }
+        } elsif ( $self->{_content}->{action} eq 'CREDIT' ) {
+          push @required_fields, qw( amount order_number card_number );
         } else {
           push @required_fields, qw(
             amount last_name first_name card_number expiration
@@ -191,6 +195,8 @@ sub submit {
         x_Currency_Code x_Trans_ID/);
     $post_data{'x_Test_Request'} = $self->test_transaction()?"TRUE":"FALSE";
     $post_data{'x_ADC_Delim_Data'} = 'TRUE';
+    $post_data{'x_delim_char'} = ',';
+    $post_data{'x_encap_char'} = '"';
     $post_data{'x_ADC_URL'} = 'FALSE';
     $post_data{'x_Version'} = '3.1';
 
@@ -386,9 +392,9 @@ aren't denied due to a lack of address information.
 
 =head1 COMPATIBILITY
 
-This module implements Authorize.Net's API verison 3.1 using the ADC
-Direct Response method.  See
-https://secure.authorize.net/docs/developersguide.pml for details.
+This module implements Authorize.Net's API verison 3.1 using the Advanced
+Integration Method (AIM), formerly known as ADC Direct Response.  See
+http://www.authorize.net/support/AIM_guide.pdf for details.
 
 =head1 AUTHOR
 
@@ -412,7 +418,7 @@ Paul Zimmer <AuthorizeNetpm@pzimmer.box.bepress.com> sent in a patch for
 card-less post authorizations.
 
 Daemmon Hughes <daemmon@daemmonhughes.com> sent in a patch for "transaction
-key" authentication as well support for the recurring_billing flag and the md5'
+key" authentication as well support for the recurring_billing flag and the md5
 method that returns the MD5 hash which is returned by the gateway.
 
 =head1 SEE ALSO