better error message when LinkPoint does not return a statusMessage
[Business-OnlinePayment-LinkPoint.git] / LinkPoint.pm
index 9a77236..b0c496a 100644 (file)
@@ -1,6 +1,6 @@
 package Business::OnlinePayment::LinkPoint;
 
-# $Id: LinkPoint.pm,v 1.1 2002-02-15 01:19:27 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);
@@ -15,7 +15,7 @@ require Exporter;
 @ISA = qw(Exporter AutoLoader Business::OnlinePayment);
 @EXPORT = qw();
 @EXPORT_OK = qw();
-$VERSION = '0.01';
+$VERSION = '0.02';
 
 sub set_defaults {
     my $self = shift;
@@ -43,6 +43,15 @@ sub map_fields {
     $self->content(%content);
 }
 
+sub build_subs {
+    my $self = shift;
+    foreach(@_) {
+        #no warnings; #not 5.005
+        local($^W)=0;
+        eval "sub $_ { my \$self = shift; if(\@_) { \$self->{$_} = shift; } return \$self->{$_}; }";
+    }
+}
+
 sub remap_fields {
     my($self,%map) = @_;
 
@@ -139,15 +148,24 @@ sub submit {
       name email phone address city state zip country
     /);
 
-    print "$_ => $post_data{$_}\n" foreach keys %post_data;
-    #die;
+    #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'});
@@ -210,7 +228,7 @@ For detailed information see L<Business::OnlinePayment>.
 =head1 COMPATIBILITY
 
 This module implements an interface to the LinkPoint Perl Wrapper
-http://www.linkpoint.com/product_solutions/internet/inet_index.html
+http://www.linkpoint.com/product_solutions/internet/lperl/lperl_main.html
 
 =head1 BUGS
 
@@ -222,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