
interchange-cvs at icdevgroup
Mar 17, 2009, 6:59 PM
Post #1 of 1
(359 views)
Permalink
|
|
interchange - jon modified lib/Vend/Payment/Signio.pm
|
|
User: jon Date: 2009-03-18 01:59:33 GMT Modified: lib/Vend/Payment Signio.pm Log: Last gasp of changes to deprecated Payflow Pro SDK v2/3 interface. Label this more clearly, and note loudly that it's deprecated and will stop working according to PayPal in September 2009. Handle relative library and cert paths better. Expand debug logging a bit. Revision Changes Path 2.20 interchange/lib/Vend/Payment/Signio.pm rev 2.20, prev_rev 2.19 Index: Signio.pm =================================================================== RCS file: /var/cvs/interchange/lib/Vend/Payment/Signio.pm,v retrieving revision 2.19 retrieving revision 2.20 diff -u -u -r2.19 -r2.20 --- Signio.pm 16 Mar 2009 19:34:01 -0000 2.19 +++ Signio.pm 18 Mar 2009 01:59:33 -0000 2.20 @@ -1,8 +1,8 @@ -# Vend::Payment::Signio - Interchange support for Signio/Verisign Payflow Pro +# Vend::Payment::Signio - Interchange support for Payflow Pro SDK versions 2 and 3 # -# $Id: Signio.pm,v 2.19 2009-03-16 19:34:01 jon Exp $ +# $Id: Signio.pm,v 2.20 2009-03-18 01:59:33 jon Exp $ # -# Copyright (C) 2002-2007 Interchange Development Group +# Copyright (C) 2002-2009 Interchange Development Group # Copyright (C) 1999-2002 Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify @@ -24,14 +24,28 @@ =head1 NAME -Vend::Payment::Signio - Interchange support for Signio/Verisign Payflow Pro +Vend::Payment::Signio - Interchange support for Payflow Pro SDK versions 2 and 3 + +=head1 WARNING: THIS MODULE IS DEPRECATED! + +Please note that PayPal purchased the Payflow Pro business from +Verisign, and this payment module is expected to stop functioning in +September 2009, as it uses the v2/v3 pfpro SDK that will no longer be +supported. Details are here: + + https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/library_download_sdks + http://www.pdncommunity.com/pdn/board/message?board.id=payflow&thread.id=5799 + +It is strongly recommend that you switch to using +Vend::Payment::PayflowPro as soon as possible, and stop using this +module. =head1 SYNOPSIS &charge=signio - + or - + [charge mode=signio param1=value1 param2=value2] =head1 PREREQUISITES @@ -342,13 +356,17 @@ $opt = {}; } + my $bin_path = Vend::File::make_absolute_file(charge_param('bin_path'), 1); + my ($exe, $stdin); unless ($PFProAPI_found) { - my @try = split /:/, (charge_param('bin_path') || $ENV{PATH}); - unshift @try, + my @try; + push @try, $bin_path if $bin_path; + push @try, "$Global::VendRoot/lib", "$Global::VendRoot/bin", $Global::VendRoot, + (grep /\S/, split /:/, $ENV{PATH}), ; for(@try) { @@ -369,13 +387,16 @@ ); } - # set loadable module path so not needed in /usr/lib - @try = split /:/, (charge_param('library_path') || $ENV{LD_LIBRARY_PATH}); - unshift @try, + # set loadable module path so not needed in /etc/ld.so.conf + @try = (); + $_ = Vend::File::make_absolute_file(charge_param('library_path'), 1); + push @try, $_ if $_; + push @try, "$Global::VendRoot/lib", "$Global::VendRoot/bin", $Global::VendRoot, charge_param('bin_path') . "/../lib", + (grep /\S/, split /:/, $ENV{LD_LIBRARY_PATH}), ; $ENV{LD_LIBRARY_PATH} = join ':', @try; } @@ -383,20 +404,20 @@ # set certificate path for modern pfpro my $cert_path = charge_param('cert_path'); if($cert_path) { - $cert_path = "$Global::VendRoot/$cert_path" - unless Vend::File::file_name_is_absolute($cert_path); + $cert_path = Vend::File::make_absolute_file($cert_path, 1); $ENV{PFPRO_CERT_PATH} ||= $cert_path; } if(! -d $ENV{PFPRO_CERT_PATH} ) { - my @try = ( - $cert_path, - $Global::VendRoot, - "$Global::VendRoot/lib", - '/usr/local/ssl', - '/usr/lib/ssl', - charge_param('bin_path') . "/..", - ); + my @try; + push @try, $cert_path if $cert_path; + push @try, + $Global::VendRoot, + "$Global::VendRoot/lib", + '/usr/local/ssl', + '/usr/lib/ssl', + "$bin_path/..", + ; for(@try) { next unless -d "$_/certs"; $ENV{PFPRO_CERT_PATH} = "$_/certs"; @@ -523,7 +544,24 @@ for (keys %varmap) { $query{$_} = $actual{$varmap{$_}}; } -#::logDebug("signio query: " . ::uneval(\%query)); + + # Force postal codes to upper case and strip everything except + # upper case + digits, as the Payflow specification requires + # in p. 23 of PayflowPro_Guide.pdf (00000013/Rev. 7). Stripping + # here means values can keep spaces or dashes as they really should. + for my $key (qw( ZIP SHIPTOZIP )) { + $query{$key} =~ s/[^A-Za-z0-9]//g; + $query{$key} = uc $query{$key}; + } + +#{ +#my %munged_query = %query; +#$munged_query{PWD} = 'X'; +#$munged_query{ACCT} =~ s/^(\d{4})(.*)/$1 . ('X' x length($2))/e; +#$munged_query{CVV2} =~ s/./X/g; +#$munged_query{EXPDATE} =~ s/./X/g; +#::logDebug("signio query: " . ::uneval(\%munged_query)); +#} my $timeout = $opt->{timeout} || 10; $timeout =~ s/\D//g @@ -613,8 +651,8 @@ if ($decline) { $result->{ICSTATUS} = 'failed'; my $msg = errmsg("Charge error: %s Reason: %s. Please call in your order or try again.", - $result->{RESULT}, - $result->{RESPMSG}, + $result->{RESULT} || 'no details available', + $result->{RESPMSG} || 'unknown error', ); $result->{MErrMsg} = $result{'pop.error-message'} = $msg; } _______________________________________________ interchange-cvs mailing list interchange-cvs [at] icdevgroup http://www.icdevgroup.org/mailman/listinfo/interchange-cvs
|