diff options
author | ivan <ivan> | 2008-07-02 02:55:49 +0000 |
---|---|---|
committer | ivan <ivan> | 2008-07-02 02:55:49 +0000 |
commit | 9099272c0d3fa55ddcb9e0f8f42c93bb79a83fdc (patch) | |
tree | 8c92d3d312e5886ebc97ce23fa206ddb4e36a269 /FS | |
parent | ebd720750b01ea3fbdef6f09dd1446771b56f672 (diff) |
fix errors paying with an on-file card through self-service
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 099affa..395450b 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -420,6 +420,7 @@ sub process_payment { or return { 'error' => "illegal_payby " . $p->{'payby'} }; my $payby = $1; + #false laziness w/process/payment.cgi my $payinfo; my $paycvv = ''; if ( $payby eq 'CHEK' || $payby eq 'DCHK' ) { @@ -438,14 +439,15 @@ sub process_payment { } elsif ( $payby eq 'CARD' || $payby eq 'DCRD' ) { $payinfo = $p->{'payinfo'}; - $payinfo =~ s/[^\dx]//g; - $payinfo =~ /^(\d{13,16})$/ - or return { 'error' => gettext('invalid_card') }; # . ": ". $self->payinfo - $payinfo = $1; $payinfo = $cust_main->payinfo if $cust_main->paymask eq $payinfo; + $payinfo =~ s/\D//g; + $payinfo =~ /^(\d{13,16})$/ + or return { 'error' => gettext('invalid_card') }; # . ": ". $self->payinfo + $payinfo = $1; + validate($payinfo) or return { 'error' => gettext('invalid_card') }; # . ": ". $self->payinfo return { 'error' => gettext('unknown_card_type') } |