diff options
author | Jonathan Prykop <jonathan@freeside.biz> | 2017-02-01 14:00:53 -0600 |
---|---|---|
committer | Jonathan Prykop <jonathan@freeside.biz> | 2017-02-01 14:00:53 -0600 |
commit | 57ac39c47a28bcf9dc1f689e6bd6234f0218d0ad (patch) | |
tree | e1cc68d1b695640f42d677258e9cd260bce4f595 /FS/FS/cust_payby.pm | |
parent | 87d108d379a5c077370afc04728d1c28e9edef30 (diff) |
71513: Card tokenization [tweaks to paycardtype checks]
Diffstat (limited to 'FS/FS/cust_payby.pm')
-rw-r--r-- | FS/FS/cust_payby.pm | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index 36f90df..e25d73e 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 ''; } |