From 63544739784abac4d9740323b609e554d58584e6 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 9 Nov 2007 18:54:48 +0000 Subject: [PATCH] Patch From Steve Simitzis for better compatiblity with eProcessingNetwork's AuthorizeNet compatability mode. --- AuthorizeNet.pm | 34 ++++++++++++++++++++++++++++------ Changes | 6 +++++- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/AuthorizeNet.pm b/AuthorizeNet.pm index 1f787ca..c9cebaa 100644 --- a/AuthorizeNet.pm +++ b/AuthorizeNet.pm @@ -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 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. diff --git a/Changes b/Changes index 485e315..e2cedac 100644 --- 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 -- 2.11.0