use same server for transaction id as transaction itself
[Business-OnlinePayment-IPPay.git] / IPPay.pm
index d9a0624..65815f0 100644 (file)
--- a/IPPay.pm
+++ b/IPPay.pm
@@ -5,16 +5,12 @@ use Carp;
 use Tie::IxHash;
 use XML::Simple;
 use XML::Writer;
-use LWP::UserAgent;
-use HTTP::Request;
-use HTTP::Request::Common qw (POST);
-use Date::Calc qw(Add_Delta_YM Add_Delta_Days);
 use Business::OnlinePayment;
 use Business::OnlinePayment::HTTPS;
 use vars qw($VERSION $DEBUG @ISA $me);
 
 @ISA = qw(Business::OnlinePayment::HTTPS);
-$VERSION = '0.01';
+$VERSION = '0.02';
 $DEBUG = 1;
 $me = 'Business::OnlinePayment::IPPay';
 
@@ -23,7 +19,7 @@ sub set_defaults {
     my %opts = @_;
 
     # standard B::OP methods/data
-    $self->server('test1.jetpay.com') unless $self->server;
+    $self->server('gateway17.jetpay.com') unless $self->server;
     $self->port('443') unless $self->port;
     $self->path('/jetpay') unless $self->path;
 
@@ -191,9 +187,20 @@ sub submit {
 
   $self->required_fields(@required_fields);
 
+  if ($self->test_transaction()) {
+    $self->server('test1.jetpay.com');
+    $self->port('443');
+    $self->path('/jetpay');
+  }
+
   my $transaction_id = $content{'order_number'};
   unless ($transaction_id) {
     my ($page, $server_response, %headers) = $self->https_get('dummy' => 1);
+    warn "fetched transaction id: (HTTPS response: $server_response) ".
+         "(HTTPS headers: ".
+         join(", ", map { "$_ => ". $headers{$_} } keys %headers ). ") ".
+         "(Raw HTTPS content: $page)"
+      if $DEBUG;
     return unless $server_response=~ /^200/;
     $transaction_id = $page;
   }
@@ -237,6 +244,17 @@ sub submit {
                           Phone               => 'ship_phone',
                         );
 
+  unless ( $type ne 'CC' || keys %shippingaddr ) {
+    tie %shippingaddr, 'Tie::IxHash',
+      $self->revmap_fields(
+                            Address             => 'address',
+                            City                => 'city',
+                            StateProv           => 'state',
+                            Country             => 'country',
+                            Phone               => 'phone',
+                          );
+  }
+
   tie my %shippinginfo, 'Tie::IxHash',
     $self->revmap_fields(
                           CustomerPO          => 'CustomerPO',
@@ -304,12 +322,6 @@ sub submit {
   $writer->endTag('JetPay');
   $writer->end();
 
-  if ($self->test_transaction()) {
-    $self->server('test1.jetpay.com');
-    $self->port('443');
-    $self->path('/jetpay');
-  }
-
   warn "$post_data\n" if $DEBUG;
 
   my ($page,$server_response,%headers) = $self->https_post($post_data);