summaryrefslogtreecommitdiff
path: root/FS/FS/ClientAPI/Signup.pm
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2015-11-03 08:57:33 -0800
committerIvan Kohler <ivan@freeside.biz>2015-11-03 08:57:33 -0800
commit4ea12e50d3057cf2e6c2145579ac71dfefa6aeb0 (patch)
tree84b8328ba2380ddff00069edb1613062ea53fb5a /FS/FS/ClientAPI/Signup.pm
parent4ccd59593b88405762c05018565385bfc9bda6a3 (diff)
fix self-service signup with payment information in 4.x, RT#388881
Diffstat (limited to 'FS/FS/ClientAPI/Signup.pm')
-rw-r--r--FS/FS/ClientAPI/Signup.pm46
1 files changed, 30 insertions, 16 deletions
diff --git a/FS/FS/ClientAPI/Signup.pm b/FS/FS/ClientAPI/Signup.pm
index e166d40..5d719c4 100644
--- a/FS/FS/ClientAPI/Signup.pm
+++ b/FS/FS/ClientAPI/Signup.pm
@@ -26,6 +26,7 @@ use FS::reg_code;
use FS::payby;
use FS::banned_pay;
use FS::part_tag;
+use FS::cust_payby;
$DEBUG = 1;
$me = '[FS::ClientAPI::Signup]';
@@ -175,7 +176,7 @@ sub signup_info {
'nomadix' => $conf->exists('signup_server-nomadix'),
'payby' => [ $conf->config('signup_server-payby') ],
'card_types' => card_types(),
- 'paytypes' => [ @FS::cust_main::paytypes ],
+ 'paytypes' => [ FS::cust_payby->paytypes ],
'cvv_enabled' => 1,
'require_cvv' => $conf->exists('signup-require_cvv'),
'stateid_enabled' => $conf->exists('show_stateid'),
@@ -533,20 +534,27 @@ sub new_customer {
( map { $_ => $packet->{$_} } qw(
salesnum
ss stateid stateid_state
-
- payby
- payinfo paycvv paydate payname paystate paytype
- paystart_month paystart_year payissue
- payip
-
locale
-
referral_custnum comments
)
),
);
+ my %insert_options = ();
+ if ( $packet->{payby} =~ /^(CARD|DCRD|CHEK|DCHK)$/ ) {
+ $insert_options{cust_payby} = [
+ new FS::cust_payby {
+ map { $_ => $packet->{$_} } qw(
+ payby
+ payinfo paycvv paydate payname paystate paytype
+ paystart_month paystart_year payissue
+ payip
+ ),
+ }
+ ];
+ }
+
my $template_custnum = $conf->config('signup_server-prepaid-template-custnum');
my $cust_main;
if ( $template_custnum && $packet->{prepaid_shortform} ) {
@@ -644,8 +652,6 @@ sub new_customer {
? split( /\s*\,\s*/, $packet->{'invoicing_list'} )
: ();
- my %insert_options = ();
-
my @exempt_groups = grep /\S/, $conf->config('tax-cust_exempt-groups');
my @tax_exempt = grep { $packet->{"tax_$_"} eq 'Y' } @exempt_groups;
$insert_options{'tax_exemption'} = {
@@ -948,16 +954,25 @@ sub new_customer_minimal {
last first company daytime night fax mobile
ss stateid stateid_state
- payby
- payinfo paycvv paydate payname paystate paytype
- paystart_month paystart_year payissue
- payip
-
locale
),
} );
+ my %opt = ();
+ if ( $packet->{payby} =~ /^(CARD|DCRD|CHEK|DCHK)$/ ) {
+ $opt{cust_payby} = [
+ new FS::cust_payby {
+ map { $_ => $packet->{$_} } qw(
+ payby
+ payinfo paycvv paydate payname paystate paytype
+ paystart_month paystart_year payissue
+ payip
+ ),
+ }
+ ];
+ }
+
if ( grep length($packet->{$_}), FS::cust_main->location_fields ) {
my $bill_hash;
foreach my $f (FS::cust_main->location_fields) {
@@ -1041,7 +1056,6 @@ sub new_customer_minimal {
}
- my %opt = ();
if ( $invoicing_list[0] && $packet->{'_password'} ) {
$opt{'contact'} = [
new FS::contact { 'first' => $cust_main->first,