X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_payby.pm;h=136acf1b668d75e13cbb5e59a730f33c1f1eeea1;hb=ac8410cdb67639afeb84c84e975fffadf3e6cce1;hp=53608cf64747a070338393966c45c8d04501fa16;hpb=f2b43a877c70aa367595fe2fc4fcffd82f62d001;p=freeside.git diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index 53608cf64..136acf1b6 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -356,8 +356,19 @@ sub check { validate($payinfo) or return gettext('invalid_card'); # . ": ". $self->payinfo; - my $cardtype = cardtype($payinfo); - $cardtype = 'Tokenized' if $self->tokenized; #token + # see parallel checks in check_payinfo_cardtype & payinfo_Mixin::payinfo_check + my $cardtype = $self->paycardtype; + if ( $self->tokenized ) { + if ( $self->paymask =~ /^\d+x/ ) { + $cardtype = cardtype($self->paymask); + } else { + #return "paycardtype required ". + # "(can't derive from a token and no paymask w/prefix provided)" + # unless $cardtype; + } + } else { + $cardtype = cardtype($self->payinfo); + } return gettext('unknown_card_type') if $cardtype eq "Unknown"; @@ -546,8 +557,15 @@ sub check_payinfo_cardtype { my $payinfo = $self->payinfo; $payinfo =~ s/\D//g; + # see parallel checks in cust_payby::check & payinfo_Mixin::payinfo_check if ( $self->tokenized($payinfo) ) { - $self->set('paycardtype', 'Tokenized'); + if ( $self->paymask =~ /^\d+x/ ) { + $self->set('paycardtype', cardtype($self->paymask)); + } else { + $self->set('paycardtype', ''); + #return "paycardtype required ". + # "(can't derive from a token and no paymask w/prefix provided)"; + } return ''; }