store TxRefNum for Paymentech batch payments, RT#9962
authormark <mark>
Tue, 21 Sep 2010 05:54:24 +0000 (05:54 +0000)
committermark <mark>
Tue, 21 Sep 2010 05:54:24 +0000 (05:54 +0000)
FS/FS/pay_batch.pm
FS/FS/pay_batch/paymentech.pm

index 2561d3d..afff261 100644 (file)
@@ -373,7 +373,7 @@ sub import_results {
       my $cust_pay = new FS::cust_pay ( {
         'custnum'  => $custnum,
        'payby'    => $payby,
-        'paybatch' => $self->batchnum,
+        'paybatch' => $hash{'paybatch'} || $self->batchnum,
         'payinfo'  => ( $hash{'payinfo'} || $cust_pay_batch->payinfo ),
         map { $_ => $hash{$_} } (qw( paid _date )),
       } );
index 89f0c77..a5b6f27 100644 (file)
@@ -2,6 +2,7 @@ package FS::pay_batch::paymentech;
 
 use strict;
 use vars qw(@ISA %import_info %export_info $name);
+use FS::Record 'qsearchs';
 use Time::Local;
 use Date::Format 'time2str';
 use Date::Parse 'str2time';
@@ -12,6 +13,8 @@ my $conf;
 my ($bin, $merchantID, $terminalID, $username);
 $name = 'paymentech';
 
+my $gateway;
+
 %import_info = (
   filetype    => 'XML',
   xmlrow         => [ qw(transResponse newOrderResp) ],
@@ -19,18 +22,42 @@ $name = 'paymentech';
     'paybatchnum',
     '_date',
     'approvalStatus',
+    'order_number',
+    'authorization',
     ],
   xmlkeys     => [
     'orderID',
     'respDateTime',
     'approvalStatus',
+    'txRefNum',
+    'authorizationCode',
     ],
   'hook'        => sub {
+      if ( !$gateway ) {
+        # find a gateway configuration that has the same merchantID 
+        # as the batch config, if there is one.  If not, leave 
+        # gateway out entirely.
+        my $merchant = (FS::Conf->new->config('batchconfig-paymentech'))[2];
+        my $g = qsearchs({
+              'table'     => 'payment_gateway',
+              'addl_from' => ' JOIN payment_gateway_option USING (gatewaynum) ',
+              'hashref'   => {  disabled    => '',
+                                optionname  => 'merchant_id',
+                                optionvalue => $merchant,
+                              },
+              });
+        $gateway = ($g ? $g->gatewaynum . '-' : '') . 'PaymenTech';
+      }
       my ($hash, $oldhash) = @_;
       my ($mon, $day, $year, $hour, $min, $sec) = 
         $hash->{'_date'} =~ /^(..)(..)(....)(..)(..)(..)$/;
       $hash->{'_date'} = timelocal($sec, $min, $hour, $day, $mon-1, $year);
       $hash->{'paid'} = $oldhash->{'amount'};
+      $hash->{'paybatch'} = join(':', 
+        $gateway,
+        $hash->{'authorization'},
+        $hash->{'order_number'},
+      );
     },
   'approved'    => sub { my $hash = shift;
                             $hash->{'approvalStatus'}