RT# 80624 Detect and warn for bad MS Edge version
[freeside.git] / httemplate / misc / process / payment.cgi
index a475786..5f945a7 100644 (file)
@@ -42,11 +42,11 @@ if ( $cgi->param('fee') =~ /^\s*(\d*(\.\d\d)?)\s*$/ ) {
   $amount = sprintf('%.2f', $amount + $fee);
 }
 
-$cgi->param('year') =~ /^(\d+)$/
+$cgi->param('year') =~ /^(\d{4})/
   or errorpage("illegal year ". $cgi->param('year'));
 my $year = $1;
 
-$cgi->param('month') =~ /^(\d+)$/
+$cgi->param('month') =~ /^(\d{2})/
   or errorpage("illegal month ". $cgi->param('month'));
 my $month = $1;
 
@@ -164,7 +164,10 @@ if ( $cgi->param('save') ) {
   #false laziness w/FS:;cust_main::realtime_bop - check both to make sure
   # working correctly
   if ( $payby eq 'CARD' &&
-       grep { $_ eq cardtype($payinfo) } $conf->config('cvv-save') ) {
+       ( (grep { $_ eq cardtype($payinfo) } $conf->config('cvv-save')) 
+         || $conf->exists('business-onlinepayment-verification') 
+       )
+  ) {
     $new->set( 'paycvv' => $paycvv );
   } else {
     $new->set( 'paycvv' => '');
@@ -172,12 +175,12 @@ if ( $cgi->param('save') ) {
 
   if ( $payby eq 'CARD' ) {
     my $bill_location = FS::cust_location->new;
-    $bill_location->set( $_ => $cgi->param($_) )
+    $bill_location->set( $_ => scalar($cgi->param($_)) )
       foreach @{$payby2fields{$payby}};
     $new->set('bill_location' => $bill_location);
     # will do nothing if the fields are all unchanged
   } else {
-    $new->set( $_ => $cgi->param($_) ) foreach @{$payby2fields{$payby}};
+    $new->set( $_ => scalar($cgi->param($_)) ) foreach @{$payby2fields{$payby}};
   }
 
   my $error = $new->replace($cust_main);
@@ -235,7 +238,7 @@ if ( $cgi->param('batch') ) {
 
     #and generate an invoice for it now too
     $error = $cust_main->bill( 'pkg_list' => [ $cust_pkg ] );
-    errorpage("payment processed and fee ordered sucessfully, but error billing fee: $error")
+    errorpage("payment processed and fee ordered successfully, but error billing fee: $error")
       if $error;
 
   }