my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied" unless $curuser->access_right('Process payment');
+my $conf = new FS::Conf;
+
#some false laziness w/MyAccount::process_payment
$cgi->param('custnum') =~ /^(\d+)$/
$payinfo = $cust_main->payinfo;
} else {
$cgi->param('payinfo1') =~ /^(\d+)$/
- or errorpage("illegal account number ". $cgi->param('payinfo1'));
+ or errorpage("Illegal account number ". $cgi->param('payinfo1'));
my $payinfo1 = $1;
- if ( $conf->exists('echeck-no_routing') ) {
- $cgi->param('payinfo2') =~ /^(\d*)$/
- or errorpage("illegal ABA/routing number ". $cgi->param('payinfo2'));
- } else {
- $cgi->param('payinfo2') =~ /^(\d+)$/
- or errorpage("illegal ABA/routing number ". $cgi->param('payinfo2'));
- }
+ $cgi->param('payinfo2') =~ /^(\d+)$/
+ or errorpage("Illegal ABA/routing number ". $cgi->param('payinfo2'));
my $payinfo2 = $1;
+ if ( $conf->config('echeck-country') eq 'CA' ) {
+ $cgi->param('payinfo3') =~ /^(\d{5})$/
+ or errorpage("Illegal branch number ". $cgi->param('payinfo2'));
+ $payinfo2 = "$1.$payinfo2";
+ }
$payinfo = $payinfo1. '@'. $payinfo2;
}
die "unknown payby $payby";
}
-$cgi->param('discount_term') =~ /^\d*$/
+$cgi->param('discount_term') =~ /^(\d*)$/
or errorpage("illegal discount_term");
my $discount_term = $1;
#false laziness w/FS:;cust_main::realtime_bop - check both to make sure
# working correctly
- my $conf = new FS::Conf;
if ( $payby eq 'CARD' &&
grep { $_ eq cardtype($payinfo) } $conf->config('cvv-save') ) {
$new->set( 'paycvv' => $paycvv );
$new->set( 'paycvv' => '');
}
- $new->set( $_ => $cgi->param($_) ) foreach @{$payby2fields{$payby}};
+ if ( $payby eq 'CARD' ) {
+ my $bill_location = FS::cust_location->new;
+ $bill_location->set( $_ => $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}};
+ }
my $error = $new->replace($cust_main);
errorpage("payment processed successfully, but error saving info: $error")