X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_payby.pm;h=e25d73ecd34ebd3bb121d62a63e58aa325386cbe;hp=36f90dfb565e818131eb9ed181708612be662585;hb=57ac39c47a28bcf9dc1f689e6bd6234f0218d0ad;hpb=87d108d379a5c077370afc04728d1c28e9edef30 diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index 36f90dfb5..e25d73ecd 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -356,7 +356,19 @@ sub check { validate($payinfo) or return gettext('invalid_card'); # . ": ". $self->payinfo; - my $cardtype = $self->paycardtype || cardtype($payinfo); + # see parallel checks in check_payinfo_cardtype & payinfo_Mixin::payinfo_check + my $cardtype = ''; + if ( $self->tokenized ) { + if ( $self->paymask =~ /^\d+x/ ) { + $cardtype = cardtype($self->paymask); + } else { + $cardtype = ''; + #return "paycardtype required ". + # "(can't derive from a token and no paymask w/prefix provided)"; + } + } else { + $cardtype = cardtype($self->payinfo); + } return gettext('unknown_card_type') if $cardtype eq "Unknown"; @@ -545,7 +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) ) { + 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 ''; }