Patch From Steve Simitzis for better compatiblity with eProcessingNetwork's Authorize...
authorivan <ivan>
Fri, 9 Nov 2007 18:54:48 +0000 (18:54 +0000)
committerivan <ivan>
Fri, 9 Nov 2007 18:54:48 +0000 (18:54 +0000)
AuthorizeNet.pm
Changes

index 1f787ca..c9cebaa 100644 (file)
@@ -12,7 +12,7 @@ require Exporter;
 @ISA = qw(Exporter Business::OnlinePayment);
 @EXPORT = qw();
 @EXPORT_OK = qw();
-$VERSION = '3.17';
+$VERSION = '3.18';
 
 sub set_defaults {
     my $self = shift;
@@ -63,6 +63,10 @@ sub map_fields {
                             ? make_headers( 'Referer' => $content{'referer'} )
                             : "";
 
+    if (length $content{'password'} == 15) {
+        $content{'transaction_key'} = delete $content{'password'};
+    }
+
     # stuff it back into %content
     $self->content(%content);
 }
@@ -123,6 +127,7 @@ sub submit {
         phone             => 'x_Phone',
         fax               => 'x_Fax',
         email             => 'x_Email',
+        email_customer    => 'x_Email_Customer',
         card_number       => 'x_Card_Num',
         expiration        => 'x_Exp_Date',
         cvv2              => 'x_Card_Code',
@@ -202,7 +207,17 @@ sub submit {
         x_Ship_To_Country
         x_Phone x_Fax x_Email x_Email_Customer x_Country
         x_Currency_Code x_Trans_ID/);
-    $post_data{'x_Test_Request'} = $self->test_transaction()?"TRUE":"FALSE";
+
+    $post_data{'x_Test_Request'} = $self->test_transaction() ? 'TRUE' : 'FALSE';
+
+    #deal with perl-style bool
+    if (    $post_data{'x_Email_Customer'}
+         && $post_data{'x_Email_Customer'} !~ /^FALSE$/i ) {
+      $post_data{'x_Email_Customer'} = 'TRUE';
+    } else {
+      $post_data{'x_Email_Customer'} = 'FALSE';
+    }
+
     $post_data{'x_ADC_Delim_Data'} = 'TRUE';
     $post_data{'x_delim_char'} = ',';
     $post_data{'x_encap_char'} = '"';
@@ -221,7 +236,7 @@ sub submit {
     #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 });
+    my $csv = new Text::CSV_XS({ binary=>1, escape_char=>'' });
     $csv->parse($page);
     my @col = $csv->fields();
 
@@ -235,7 +250,11 @@ sub submit {
     if($col[0] eq "1" ) { # Authorized/Pending/Test
         $self->is_success(1);
         $self->result_code($col[0]);
-        $self->authorization($col[4]);
+        if ($col[4] =~ /^(.*)\s+(\d+)$/) { #eProcessingNetwork extra bits..
+          $self->authorization($2);
+        } else {
+          $self->authorization($col[4]);
+        }
     } else {
         $self->is_success(0);
         $self->result_code($col[2]);
@@ -272,7 +291,7 @@ Business::OnlinePayment::AuthorizeNet - AuthorizeNet backend for Business::Onlin
   $tx->content(
       type           => 'VISA',
       login          => 'testdrive',
-      password       => '',
+      password       => '', #password or transaction key
       action         => 'Normal Authorization',
       description    => 'Business::OnlinePayment test',
       amount         => '49.95',
@@ -307,7 +326,7 @@ Business::OnlinePayment::AuthorizeNet - AuthorizeNet backend for Business::Onlin
   $tx->content(
       type           => 'VISA',
       login          => 'testdrive',
-      password       => '',
+      password       => '',  #password or transaction key
       action         => 'Authorization Only',
       description    => 'Business::OnlinePayment test',
       amount         => '49.95',
@@ -449,6 +468,9 @@ Daemmon Hughes <daemmon@daemmonhughes.com> sent in a patch for "transaction
 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.
 
+Steve Simitzis contributed a patch for better compatibility with
+eProcessingNetwork's AuthorizeNet compatability mode.
+
 =head1 SEE ALSO
 
 perl(1). L<Business::OnlinePayment>.
diff --git a/Changes b/Changes
index 485e315..e2cedac 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,8 +1,12 @@
 Revision history for Perl extension Business::OnlinePayment::AuthorizeNet.
 
+3.18  unreleased
+        - Patch From Steve Simitzis for better compatiblity with
+          eProcessingNetwork's AuthorizeNet compatability mode.
+
 3.17  Tue Jul 10 21:12:46 PDT 2007
         - Trim the extra 'ip_addr="1.2.3.4"' added by eProcessingNetwork's
-          AuthorizetNet compatability mode.
+          AuthorizeNet compatability mode.
         - add bank account type handling
 
 3.16  Tue Nov 14 02:35:30 PST 2006