X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpay_batch%2Fpaymentech.pm;h=12825074a066245c99b9a65bad754b282dcf4183;hb=ff27c3f36240aee48ed50153dd5d8fe3ac3f2443;hp=47be4eb31ebe5042c786183b64c74da972fae386;hpb=61097b876e692dbf5571a17b9aa415949607085f;p=freeside.git diff --git a/FS/FS/pay_batch/paymentech.pm b/FS/FS/pay_batch/paymentech.pm index 47be4eb31..12825074a 100644 --- a/FS/FS/pay_batch/paymentech.pm +++ b/FS/FS/pay_batch/paymentech.pm @@ -8,6 +8,7 @@ use Date::Format 'time2str'; use Date::Parse 'str2time'; use Tie::IxHash; use FS::Conf; +use FS::Misc 'bytes_substr'; my $conf; my ($bin, $merchantID, $terminalID, $username, $password, $with_recurringInd); @@ -98,7 +99,13 @@ my %paymentech_countries = map { $_ => 1 } qw( US CA GB UK ); my @cust_pay_batch = @{(shift)}; my $count = 1; my $output; - my $xml = new XML::Writer(OUTPUT => \$output, DATA_MODE => 1, DATA_INDENT => 2); + my $xml = XML::Writer->new( + OUTPUT => \$output, + DATA_MODE => 1, + DATA_INDENT => 2, + ENCODING => 'utf-8' + ); + $xml->xmlDecl(); # it is in the spec $xml->startTag('transRequest', RequestCount => scalar(@cust_pay_batch) + 1); $xml->startTag('batchFileID'); $xml->dataElement(userID => $username); @@ -121,19 +128,19 @@ my %paymentech_countries = map { $_ => 1 } qw( US CA GB UK ); ) : ( ecpCheckRT => ($_->payinfo =~ /@(\d+)/), ecpCheckDDA => ($_->payinfo =~ /(\d+)@/), - ecpBankAcctType => $paytype{lc($_->cust_main->paytype)}, + ecpBankAcctType => $paytype{lc($_->paytype)}, ecpDelvMethod => 'A', ), - avsZip => substr($_->zip, 0, 10), - avsAddress1 => substr($_->address1, 0, 30), - avsAddress2 => substr($_->address2, 0, 30), - avsCity => substr($_->city, 0, 20), - avsState => substr($_->state, 0, 2), - avsName => substr($_->first. ' '. $_->last, 0, 30), - avsCountryCode => ( $paymentech_countries{ $_->country } - ? $_->country - : '' - ), + avsZip => bytes_substr($_->zip, 0, 10), + avsAddress1 => bytes_substr($_->address1, 0, 30), + avsAddress2 => bytes_substr($_->address2, 0, 30), + avsCity => bytes_substr($_->city, 0, 20), + avsState => bytes_substr($_->state, 0, 2), + avsName => bytes_substr($_->first. ' '. $_->last, 0, 30), + ( $paymentech_countries{ $_->country } + ? ( avsCountryCode => $_->country ) + : () + ), orderID => $_->paybatchnum, amount => $_->amount * 100, ); @@ -174,4 +181,3 @@ sub _upgrade_gateway { } 1; -