0.04
[Business-OnlinePayment-PayflowPro.git] / PayflowPro.pm
index 8664172..fe70d7a 100644 (file)
@@ -14,12 +14,11 @@ require Exporter;
 @ISA = qw(Exporter AutoLoader Business::OnlinePayment);
 @EXPORT = qw();
 @EXPORT_OK = qw();
-$VERSION = '0.02_02';
+$VERSION = '0.04';
 
 sub set_defaults {
     my $self = shift;
 
-    #$self->server('staging.linkpt.net');
     $self->server('payflow.verisign.com');
     $self->port('443');
 
@@ -126,7 +125,7 @@ sub submit {
         $month = '0'. $month if $month =~ /^\d$/;
       }
 
-      $zip = $content{'zip'} =~ s/\D//;
+      ( $zip = $content{'zip'} ) =~ s/\D//g;
     #}
 
     #$content{'address'} =~ /^(\S+)\s/;
@@ -167,7 +166,7 @@ sub submit {
 
     my @required = qw( TRXTYPE TENDER PARTNER VENDOR USER PWD );
     if (  $self->transaction_type() eq 'C' ) { #credit card
-      if ( $self->action() =~ /^[CDV]$/ && exists($content{'ORIGID'})
+      if ( $content{'action'} =~ /^[CDV]$/ && exists($content{'ORIGID'})
            && defined($content{'ORIGID'}) && length($content{'ORIGID'}) ) {
         push @required, qw(ORIGID);
       } else {
@@ -198,14 +197,16 @@ sub submit {
       $self->authorization( $response->{'AUTHCODE'} );
       $self->order_number(  $response->{'PNREF'}    );
       my $avs_code = '';
-      if ( $response->{AVSADDR} eq 'Y' && $response->{AVSZIP} eq 'Y' ) {
-        $avs_code = 'Y';
-      } elsif ( $response->{AVSADDR} eq 'Y' ) {
-        $avs_code = 'A';
-      } elsif ( $response->{AVSZIP} eq 'Y' ) {
-        $avs_code = 'Z';
-      } elsif ( $response->{AVSADDR} eq 'N' || $response->{AVSZIP} eq 'N' ) {
-        $avs_code = 'N';
+      if ( exists $response->{AVSADDR} || exists $response->{AVSZIP} ) {
+        if ( $response->{AVSADDR} eq 'Y' && $response->{AVSZIP} eq 'Y' ) {
+          $avs_code = 'Y';
+        } elsif ( $response->{AVSADDR} eq 'Y' ) {
+          $avs_code = 'A';
+        } elsif ( $response->{AVSZIP} eq 'Y' ) {
+          $avs_code = 'Z';
+        } elsif ( $response->{AVSADDR} eq 'N' || $response->{AVSZIP} eq 'N' ) {
+          $avs_code = 'N';
+        }
       }
       $self->avs_code(      $avs_code               );
       $self->cvv2_code(     $response->{'CVV2MATCH'});