respect card-types config in backend (one-off payments), RT#39861
authorIvan Kohler <ivan@freeside.biz>
Wed, 27 Jan 2016 04:29:47 +0000 (20:29 -0800)
committerIvan Kohler <ivan@freeside.biz>
Wed, 27 Jan 2016 04:29:47 +0000 (20:29 -0800)
FS/FS/Mason.pm
httemplate/misc/process/payment.cgi

index 23eb591..ff9be69 100644 (file)
@@ -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;
index efba9ed..b7d427e 100644 (file)
@@ -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') ) ) {