diff options
author | ivan <ivan> | 2007-11-09 18:54:48 +0000 |
---|---|---|
committer | ivan <ivan> | 2007-11-09 18:54:48 +0000 |
commit | 63544739784abac4d9740323b609e554d58584e6 (patch) | |
tree | 08c74d2d59e605388748157be59c8053240b1a87 /AuthorizeNet.pm | |
parent | 8fb9f96005f0de95124108be8adbcc40eead98f3 (diff) |
Patch From Steve Simitzis for better compatiblity with eProcessingNetwork's AuthorizeNet compatability mode.
Diffstat (limited to 'AuthorizeNet.pm')
-rw-r--r-- | AuthorizeNet.pm | 34 |
1 files changed, 28 insertions, 6 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 <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>. |