terminalID => $self->terminalID,
);
if ($item->payment_type eq 'CC') {
+ my $expiration = $item->expiration;
+ $expiration =~ s/\D//g;
push @order, (
ccAccountNum => $item->card_number,
- ccExp => $item->expiration,
+ ccExp => $expiration,
);
- }
- elsif ( $item->payment_type eq 'ECHECK' ) {
+ } elsif ( $item->payment_type eq 'ECHECK' ) {
push @order, (
cardBrand => 'EC',
ecpCheckRT => $item->routing_code,
ecpBankAcctType => $BankAcctType{ $item->account_type },
ecpDelvMethod => 'A',
);
- }
- else {
+ } else {
die "payment type ".$item->type." not supported";
}
+ if ( $item->recurring_billing eq 'F' ) {
+ push @order, ( recurringInd => 'RF' );
+ } elsif ( $item->recurring_billing eq 'S' ) {
+ push @order, ( recurringInd => 'RS' );
+ } # else don't send recurringInd at all
+
push @order, (
avsZip => $item->zip,
avsAddress1 => bytes_substr($item->address, 0, 30),
sub bytes_substr {
my ($string, $offset, $length, $repl) = @_;
my $bytes = substr(
- Encode::encode('utf8', $string),
+ Encode::encode('utf8', $string || ''),
$offset,
$length,
- Encode::encode('utf8', $repl)
+ Encode::encode('utf8', $repl || '')
);
return Encode::decode('utf8', $bytes, Encode::FB_QUIET);
}