Handle and pass back error responses in ResultCode as well
authorIvan Kohler <ivan@freeside.biz>
Wed, 20 May 2015 18:38:19 +0000 (11:38 -0700)
committerIvan Kohler <ivan@freeside.biz>
Wed, 20 May 2015 18:38:19 +0000 (11:38 -0700)
Changes
lib/Business/OnlinePayment/vSecureProcessing.pm

diff --git a/Changes b/Changes
index 9f89ed7..f0eb2ad 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 Revision history for Perl module Business::OnlinePayment::vSecureProcessing
 
+0.06    Wed May 20 11:38:02 PDT 2015
+        - Handle and pass back error responses in ResultCode as well
+
 0.05    Thu Feb 19 13:38:21 PST 2015
         - cvv2_response should never be passed back as a hashref
 
index 0ae9adc..85d5f1b 100644 (file)
@@ -11,7 +11,7 @@ use Business::OnlinePayment::HTTPS;
 
 @ISA = qw(Business::OnlinePayment::HTTPS);
 $DEBUG = 0;
-$VERSION = '0.05';
+$VERSION = '0.06';
 
 # mapping out all possible endpoints
 # but this version will only be building out "charge", "void", & "credit"
@@ -361,17 +361,17 @@ sub parse_response {
         $self->is_success($self->result_code() eq '0' ? 1 : 0);
         if ($self->is_success()) {
             $self->authorization($response->{ReferenceNumber});
-        }
-        # fill in error_message if there is is an error
-        if ( !$self->is_success && exists($response->{AdditionalResponseData})) {
-            $self->error_message('Error '.$response->{ResponseCode}.': '.$response->{AdditionalResponseData});
-        }elsif ( !$self->is_success && exists($response->{Receipt}) ) {
-            $self->error_message('Error '.$response->{ResponseCode}.': '.(exists($response->{Receipt})) ? $response->{Receipt} : '');
+        } else { # fill in error_message if there is is an error
+            $self->error_message( 'Error '.$response->{ResponseCode}.': '.
+                                    (    $response->{AdditionalResponseData}
+                                      || $response->{Receipt}
+                                      || $response->{ResultCode}
+                                    )
+                                );
         }
         
     } else {
-        die 'Error communicating with vSecureProcessing server';
-        return;
+        die 'Error communicating with vSecureProcessing server (server sent response: '. $self->server_response. ')';
     }
     
 }