X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpay_batch%2Fpaymentech.pm;h=1ecf35afdbc23b53f3329a0815676862f2a6e6aa;hb=2b4aa0130467d2b992526a66f649464742defa1d;hp=c687cc8e2826d5eedb877041d834833dd1144a43;hpb=e32344effc97e76f9ee26fbf4ee206bfaee47a54;p=freeside.git diff --git a/FS/FS/pay_batch/paymentech.pm b/FS/FS/pay_batch/paymentech.pm index c687cc8e2..1ecf35afd 100644 --- a/FS/FS/pay_batch/paymentech.pm +++ b/FS/FS/pay_batch/paymentech.pm @@ -23,7 +23,10 @@ my $gateway; '_date', 'approvalStatus', 'order_number', - 'authorization', + 'auth', + 'procStatus', + 'procStatusMessage', + 'respCodeMessage', ], xmlkeys => [ 'orderID', @@ -31,6 +34,9 @@ my $gateway; 'approvalStatus', 'txRefNum', 'authorizationCode', + 'procStatus', + 'procStatusMessage', + 'respCodeMessage', ], 'hook' => sub { if ( !$gateway ) { @@ -38,7 +44,7 @@ my $gateway; # 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({ + $gateway = qsearchs({ 'table' => 'payment_gateway', 'addl_from' => ' JOIN payment_gateway_option USING (gatewaynum) ', 'hashref' => { disabled => '', @@ -46,18 +52,19 @@ my $gateway; optionvalue => $merchant, }, }); - $gateway = ($g ? $g->gatewaynum . '-' : '') . 'PaymenTech'; } my ($hash, $oldhash) = @_; + $hash->{'gatewaynum'} = $gateway->gatewaynum if $gateway; + $hash->{'processor'} = 'PaymenTech'; 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'}, - ); + if ( $hash->{'procStatus'} == 0 ) { + $hash->{'error_message'} = $hash->{'respCodeMessage'}; + } else { + $hash->{'error_message'} = $hash->{'procStatusMessage'}; + } }, 'approved' => sub { my $hash = shift; $hash->{'approvalStatus'} @@ -103,32 +110,32 @@ my %paymentech_countries = map { $_ => 1 } qw( US CA GB UK ); $xml->startTag('newOrder', BatchRequestNo => $count++); my $status = $_->cust_main->status; tie my %order, 'Tie::IxHash', ( - industryType => 'EC', - transType => 'AC', - bin => $bin, - merchantID => $merchantID, - terminalID => $terminalID, + industryType => 'EC', + transType => 'AC', + bin => $bin, + merchantID => $merchantID, + terminalID => $terminalID, ($_->payby eq 'CARD') ? ( - ccAccountNum => $_->payinfo, - ccExp => $_->expmmyy, + ccAccountNum => $_->payinfo, + ccExp => $_->expmmyy, ) : ( ecpCheckRT => ($_->payinfo =~ /@(\d+)/), ecpCheckDDA => ($_->payinfo =~ /(\d+)@/), ecpBankAcctType => $paytype{lc($_->cust_main->paytype)}, ecpDelvMethod => 'A', ), - avsZip => substr($_->zip, 0, 10), + avsZip => substr($_->zip, 0, 10), avsAddress1 => substr($_->address1, 0, 30), avsAddress2 => substr($_->address2, 0, 30), - avsCity => substr($_->city, 0, 20), - avsState => $_->state, - avsName => substr($_->first . ' ' . $_->last, 0, 30), - avsCountryCode => ( $paymentech_countries{ $_->country } - ? $_->country - : '' - ), - orderID => $_->paybatchnum, - amount => $_->amount * 100, + avsCity => substr($_->city, 0, 20), + avsState => substr($_->state, 0, 2), + avsName => substr($_->first. ' '. $_->last, 0, 30), + ( $paymentech_countries{ $_->country } + ? ( avsCountryCode => $_->country ) + : () + ), + orderID => $_->paybatchnum, + amount => $_->amount * 100, ); # only do this if recurringInd is enabled in config, # and the customer has at least one non-canceled recurring package