# see parallel checks in cust_payby::check & cust_payby::check_payinfo_cardtype
if ( $self->tokenized ) {
# see parallel checks in cust_payby::check & cust_payby::check_payinfo_cardtype
if ( $self->tokenized ) {
if ( $self->paymask =~ /^\d+x/ ) {
$self->set('paycardtype', cardtype($self->paymask));
} else {
if ( $self->paymask =~ /^\d+x/ ) {
$self->set('paycardtype', cardtype($self->paymask));
} else {
or return "Illegal (mistyped?) credit card number (payinfo)";
$self->payinfo($1);
validate($self->payinfo) or return "Illegal credit card number";
or return "Illegal (mistyped?) credit card number (payinfo)";
$self->payinfo($1);
validate($self->payinfo) or return "Illegal credit card number";
# if we can't decrypt the card, at least detect the cardtype
$self->set('paycardtype', cardtype($self->paymask));
} else {
# if we can't decrypt the card, at least detect the cardtype
$self->set('paycardtype', cardtype($self->paymask));
} else {