use Date::Parse 'str2time';
use Tie::IxHash;
use FS::Conf;
-use FS::Misc 'bytes_substr';
+use Unicode::Truncate 'truncate_egc';
my $conf;
my ($bin, $merchantID, $terminalID, $username, $password, $with_recurringInd);
) : (
ecpCheckRT => ($_->payinfo =~ /@(\d+)/),
ecpCheckDDA => ($_->payinfo =~ /(\d+)@/),
- ecpBankAcctType => $paytype{lc($_->cust_main->paytype)},
+ ecpBankAcctType => $paytype{lc($_->paytype)},
ecpDelvMethod => 'A',
),
- 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),
+ # truncate_egc will die() on empty string
+ avsZip => $_->zip ? truncate_egc($_->zip, 10) : undef,
+ avsAddress1 => $_->address1 ? truncate_egc($_->address1, 30) : undef,
+ avsAddress2 => $_->address2 ? truncate_egc($_->address2, 30) : undef,
+ avsCity => $_->city ? truncate_egc($_->city, 20) : undef,
+ avsState => $_->state ? truncate_egc($_->state, 2) : undef,
+ avsName => ($_->first || $_->last)
+ ? truncate_egc($_->first. ' '. $_->last, 30) : undef,
( $paymentech_countries{ $_->country }
? ( avsCountryCode => $_->country )
: ()
my $conf = FS::Conf->new;
my @batchconfig = $conf->config('batchconfig-paymentech');
my %options;
- @options{ qw(bin terminalID merchantID login password ) } = @batchconfig;
+ @options{ qw(
+ bin
+ terminalID
+ merchantID
+ login
+ password
+ with_recurringInd
+ ) } = @batchconfig;
$options{'industryType'} = 'EC';
( 'Paymentech', %options );
}