diff options
author | Jonathan Prykop <jonathan@freeside.biz> | 2017-02-01 14:00:53 -0600 |
---|---|---|
committer | Jonathan Prykop <jonathan@freeside.biz> | 2017-02-01 17:19:35 -0600 |
commit | 14fde47eaa85df2ff08cd68024720e9cf23806b9 (patch) | |
tree | 316bd4e0f320d90db10a14b3ad5025fa8e7290f7 /FS/FS/cust_payby.pm | |
parent | 41586592a424ce02595237d2048b0fdb18033ddd (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 ''; } |