validate($payinfo)
or errorpage(gettext('invalid_card')); # . ": ". $self->payinfo;
errorpage(gettext('unknown_card_type'))
- if cardtype($payinfo) eq "Unknown";
+ if $payinfo !~ /^99\d{14}$/ && cardtype($payinfo) eq "Unknown";
if ( defined $cust_main->dbdef_table->column('paycvv') ) {
if ( length($cgi->param('paycvv') ) ) {
#no error, so order the fee package if applicable...
if ( $cgi->param('fee_pkgpart') =~ /^(\d+)$/ ) {
- my $error = $cust_main->order_pkg(
- 'cust_pkg' => new FS::cust_pkg { 'pkgpart' => $1 }
- );
+
+ my $cust_pkg = new FS::cust_pkg { 'pkgpart' => $1 };
+
+ my $error = $cust_main->order_pkg( 'cust_pkg' => $cust_pkg );
errorpage("payment processed successfully, but error ordering fee: $error")
if $error;
+
+ #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")
+ if $error;
+
}
$cust_main->apply_payments;
} else {
die "unknown payby $payby";
}
- $new->set( 'payinfo' => $payinfo );
+ $new->set( 'payinfo' => $cust_main->card_token || $payinfo );
$new->set( 'paydate' => "$year-$month-01" );
$new->set( 'payname' => $payname );