From: Ivan Kohler Date: Wed, 27 Jan 2016 04:29:47 +0000 (-0800) Subject: respect card-types config in backend (one-off payments), RT#39861 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=85c406c3ceb14f4b6c3f325f498a79a443103c18 respect card-types config in backend (one-off payments), RT#39861 --- diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm index 23eb591d5..ff9be69ab 100644 --- a/FS/FS/Mason.pm +++ b/FS/FS/Mason.pm @@ -142,6 +142,7 @@ if ( -e $addl_handler_use_file ) { use FS::Msgcat qw(gettext geterror); use FS::Misc qw( send_email send_fax ocr_image states_hash counties cities state_label + card_types ); use FS::Misc::eps2png qw( eps2png ); use FS::Report::FCC_477; diff --git a/httemplate/misc/process/payment.cgi b/httemplate/misc/process/payment.cgi index efba9ed9a..b7d427e8c 100644 --- a/httemplate/misc/process/payment.cgi +++ b/httemplate/misc/process/payment.cgi @@ -105,14 +105,22 @@ if ( $payby eq 'CHEK' ) { } $payinfo =~ s/\D//g; $payinfo =~ /^(\d{13,16}|\d{8,9})$/ - or errorpage(gettext('invalid_card')); # . ": ". $self->payinfo; + or errorpage(gettext('invalid_card')); $payinfo = $1; validate($payinfo) - or errorpage(gettext('invalid_card')); # . ": ". $self->payinfo; + or errorpage(gettext('invalid_card')); - errorpage(gettext('unknown_card_type')) - if $payinfo !~ /^99\d{14}$/ #token - && cardtype($payinfo) eq "Unknown"; + unless ( $self->payinfo =~ /^99\d{14}$/ ) { #token + + my $cardtype = cardtype($payinfo); + + errorpage(gettext('unknown_card_type')) + if $cardtype eq "Unknown"; + + my %bop_card_types = map { $_=>1 } values %{ card_types() }; + errorpage("$cardtype not accepted") unless $bop_card_types{$cardtype}; + + } if ( defined $cust_main->dbdef_table->column('paycvv') ) { if ( length($cgi->param('paycvv') ) ) {