better error message when LinkPoint does not return a statusMessage
[Business-OnlinePayment-LinkPoint.git] / LinkPoint.pm
index 22815c3..b0c496a 100644 (file)
@@ -1,6 +1,6 @@
 package Business::OnlinePayment::LinkPoint;
 
-# $Id: LinkPoint.pm,v 1.4 2002-02-27 22:16:08 ivan Exp $
+# $Id: LinkPoint.pm,v 1.7 2003-03-31 20:41:56 ivan Exp $
 
 use strict;
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
@@ -150,12 +150,22 @@ sub submit {
 
     #print "$_ => $post_data{$_}\n" foreach keys %post_data;
 
-    my %response = $lperl->$action(\%post_data);
+    my %response;
+    {
+      local($^W)=0;
+      %response = $lperl->$action(\%post_data);
+    }
 
     if ( $response{'statusCode'} == 0 ) {
       $self->is_success(0);
       $self->result_code('');
-      $self->error_message($response{'statusMessage'});
+      if ( exists($response{'statusMessage'})
+           && defined($response{'statusMessage'}) ) { # "normal" error
+        $self->error_message($response{'statusMessage'});
+      } else { # "should not happen" error (should this die/croak?)
+        $self->error_message("No statusMessage returned!  Response follows:".
+          join(' / ', map { "$_=>".$response{$_} } keys %response )           );
+      }
     } else {
       $self->is_success(1);
       $self->result_code($response{'AVCCode'});
@@ -230,7 +240,7 @@ Based on Busienss::OnlinePayment::AuthorizeNet written by Jason Kohles.
 
 =head1 SEE ALSO
 
-perl(1). L<Business::OnlinePayment>.
+perl(1), L<Business::OnlinePayment>.
 
 =cut