- 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 => $_->country,
- orderID => $_->paybatchnum,
- amount => $_->amount * 100,
+ # 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 )
+ : ()
+ ),
+ orderID => $_->paybatchnum,
+ amount => $_->amount * 100,