summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--httemplate/misc/process/payment.cgi25
1 files changed, 16 insertions, 9 deletions
diff --git a/httemplate/misc/process/payment.cgi b/httemplate/misc/process/payment.cgi
index 56bcfd872..5b18367f7 100644
--- a/httemplate/misc/process/payment.cgi
+++ b/httemplate/misc/process/payment.cgi
@@ -186,15 +186,22 @@ if ( (my $custpaybynum = scalar($cgi->param('custpaybynum'))) > 0 ) {
%saveopt = map { $_ => scalar($cgi->param($_)) } @{$payby2fields{$payby}};
}
- my $error = $cust_main->save_cust_payby(
- 'saved_cust_payby' => \$cust_payby,
- 'payment_payby' => $payby,
- 'auto' => scalar($cgi->param('auto')),
- 'weight' => scalar($cgi->param('weight')),
- 'payinfo' => $payinfo,
- 'payname' => $payname,
- %saveopt
- );
+ my $error;
+ {
+ local $@;
+ eval {
+ $error = $cust_main->save_cust_payby(
+ 'saved_cust_payby' => \$cust_payby,
+ 'payment_payby' => $payby,
+ 'auto' => scalar($cgi->param('auto')),
+ 'weight' => scalar($cgi->param('weight')),
+ 'payinfo' => $payinfo,
+ 'payname' => $payname,
+ %saveopt
+ );
+ };
+ $error ||= $@;
+ }
errorpage("error saving info, payment not processed: $error")
if $error;