*** empty log message ***
[Business-OnlinePayment-AuthorizeNet.git] / AuthorizeNet.pm
index 351d269..1f787ca 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.15';
+$VERSION = '3.17';
 
 sub set_defaults {
     my $self = shift;
@@ -50,6 +50,15 @@ sub map_fields {
     $content{'type'} = $types{lc($content{'type'})} || $content{'type'};
     $self->transaction_type($content{'type'});
 
+    # ACCOUNT TYPE MAP
+    my %account_types = ('personal checking'   => 'CHECKING',
+                         'personal savings'    => 'SAVINGS',
+                         'business checking'   => 'CHECKING',
+                         'business savings'    => 'SAVINGS',
+                        );
+    $content{'account_type'} = $account_types{lc($content{'account_type'})}
+                               || $content{'account_type'};
+
     $content{'referer'} = defined( $content{'referer'} )
                             ? make_headers( 'Referer' => $content{'referer'} )
                             : "";
@@ -105,7 +114,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 +152,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 +171,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
@@ -205,6 +218,9 @@ sub submit {
     #escape NULL (binary 0x00) values
     $page =~ s/\x00/\^0/g;
 
+    #trim 'ip_addr="1.2.3.4"' added by eProcessingNetwork Authorize.Net compat
+    $page =~ s/,ip_addr="[\d\.]+"$//;
+
     my $csv = new Text::CSV_XS({ 'binary'=>1 });
     $csv->parse($page);
     my @col = $csv->fields();
@@ -358,6 +374,22 @@ Content required: type, login, password|transaction_key, action, amount, first_n
 
 For detailed information see L<Business::OnlinePayment>.
 
+=head1 METHODS AND FUNCTIONS
+
+See L<Business::OnlinePayment> for the complete list. The following methods either override the methods in L<Business::OnlinePayment> or provide additional functions.
+
+=head2 result_code
+
+Returns the response reason code (this is different than the response code).
+
+=head2 error_message
+
+Returns the response reason text.
+
+=head2 server_response
+
+Returns the complete response from the server.
+
 =head1 NOTE
 
 Unlike Business::OnlinePayment or pre-3.0 verisons of
@@ -388,9 +420,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
 
@@ -414,7 +446,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