0.07 Use Truncate::Unicode
[Business-BatchPayment-Paymentech.git] / Paymentech.pm
index df652ed..a64eb97 100644 (file)
@@ -3,7 +3,9 @@ package Business::BatchPayment::Paymentech;
 use 5.006;
 use strict;
 use warnings;
-our $VERSION = '0.03';
+our $VERSION = '0.07';
+
+use Unicode::Truncate 'truncate_egc';
 
 =head1 NAME
 
@@ -186,13 +188,15 @@ sub format_item {
       }
     } # else don't send recurringInd at all
 
-    push @order, (
-      avsZip         => $item->zip,
-      avsAddress1    => bytes_substr($item->address,   0, 30),
-      avsAddress2    => bytes_substr($item->address2,  0, 30),
-      avsCity        => bytes_substr($item->city,      0, 20),
-      avsState       => bytes_substr($item->state,     0, 2),
-      avsName        => bytes_substr($item->first_name. ' '. $item->last_name, 0, 30),
+    push @order, (                   # truncate_egc will die() on empty string
+      avsZip      => $item->zip,
+      avsAddress1 => $item->address  ? truncate_egc($item->address,  30) : undef,
+      avsAddress2 => $item->address2 ? truncate_egc($item->address2, 30) : undef,
+      avsCity     => $item->city     ? truncate_egc($item->city,     20) : undef,
+      avsState    => $item->state    ? truncate_egc($item->state,     2) : undef,
+      avsName     => ($item->first_name || $item->last_name)
+                     ? truncate_egc($item->first_name.' '.$item->last_name, 30)
+                     : undef,
       ( $paymentech_countries{ $item->country }
         ? ( avsCountryCode  => $item->country )
         : ()
@@ -306,18 +310,18 @@ sub parse_item {
   $item;
 }
 
-# internal use
-
-sub bytes_substr {
-  my ($string, $offset, $length, $repl) = @_;
-  my $bytes = substr(
-    Encode::encode('utf8', $string || ''),
-    $offset,
-    $length,
-    Encode::encode('utf8', $repl || '')
-  );
-  return Encode::decode('utf8', $bytes, Encode::FB_QUIET);
-} 
+# DEPRECATED
+
+sub bytes_substr {
+  my ($string, $offset, $length, $repl) = @_;
+  my $bytes = substr(
+    Encode::encode('utf8', $string || ''),
+    $offset,
+    $length,
+    Encode::encode('utf8', $repl || '')
+  );
+  return Encode::decode('utf8', $bytes, Encode::FB_QUIET);
+# }
 
 
 package Business::BatchPayment::Paymentech::Transport;