X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_payby.pm;h=ab3c41ce002be83f6a30eb6274a3d66335de9ac3;hp=626fc9fe92be2a04641f1a020a8432c08aa4e158;hb=4fe1fd639d387e1a3d271618b35830142583c714;hpb=c5a2d3613acdc3b9ab6f32eaf5316c2834071417 diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index 626fc9fe9..ab3c41ce0 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -276,7 +276,7 @@ sub replace { if ( $self->payby =~ /^(CARD|CHEK)$/ && ( ( $self->get('payinfo') ne $old->get('payinfo') - && $self->get('payinfo') !~ /^99\d{14}$/ + && !$self->tokenized ) || grep { $self->get($_) ne $old->get($_) } qw(paydate payname) ) @@ -349,15 +349,27 @@ sub check { my $payinfo = $self->payinfo; $payinfo =~ s/\D//g; - $payinfo =~ /^(\d{13,16}|\d{8,9})$/ + $payinfo =~ /^(\d{13,19}|\d{8,9})$/ or return gettext('invalid_card'); #. ": ". $self->payinfo; $payinfo = $1; $self->payinfo($payinfo); validate($payinfo) or return gettext('invalid_card'); # . ": ". $self->payinfo; - my $cardtype = cardtype($payinfo); - $cardtype = 'Tokenized' if $self->payinfo =~ /^99\d{14}$/; #token + # see parallel checks in check_payinfo_cardtype & payinfo_Mixin::payinfo_check + my $cardtype = $self->paycardtype; + if ( $self->tokenized ) { + $self->('is_tokenized', 'Y'); #so we don't try to do it again + 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 +558,16 @@ sub check_payinfo_cardtype { my $payinfo = $self->payinfo; $payinfo =~ s/\D//g; - if ( $payinfo =~ /^99\d{14}$/ ) { - $self->set('paycardtype', 'Tokenized'); + # see parallel checks in cust_payby::check & payinfo_Mixin::payinfo_check + if ( $self->tokenized($payinfo) ) { + $self->set('is_tokenized', 'Y'); #so we don't try to do it again + 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 ''; }