From: Ivan Kohler Date: Tue, 14 Jan 2014 05:37:38 +0000 (-0800) Subject: add option to require cvv for signup, RT#25476 X-Git-Url: http://git.freeside.biz/gitweb/?a=commitdiff_plain;h=bdf9732a992deb1332b3496ba112885806a67798;p=freeside.git add option to require cvv for signup, RT#25476 --- diff --git a/FS/FS/ClientAPI/Signup.pm b/FS/FS/ClientAPI/Signup.pm index 57091c4fe..c968d3b2e 100644 --- a/FS/FS/ClientAPI/Signup.pm +++ b/FS/FS/ClientAPI/Signup.pm @@ -174,6 +174,7 @@ sub signup_info { 'card_types' => card_types(), 'paytypes' => [ @FS::cust_main::paytypes ], 'cvv_enabled' => 1, + 'require_cvv' => $conf->exists('signup-require_cvv'), 'stateid_enabled' => $conf->exists('show_stateid'), 'paystate_enabled' => $conf->exists('show_bankstate'), 'ship_enabled' => 1, @@ -631,6 +632,11 @@ sub new_customer { if $gw && $gw->gateway_namespace eq 'Business::OnlineThirdPartyPayment'; } + return { 'error' => "CVV2 is required" } + if $cust_main->payby =~ /^(CARD|DCRD)$/ + && ! $cust_main->paycvv + && $conf->exists('signup-require_cvv'); + $cust_main->payinfo($cust_main->daytime) if $cust_main->payby eq 'LECB' && ! $cust_main->payinfo; diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index efe994703..c5bf8e2f3 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -2661,6 +2661,13 @@ and customer address. Include units.', 'select_enum' => \@card_types, }, + { + 'key' => 'signup-require_cvv', + 'section' => 'self-service', + 'description' => 'Require CVV for credit card signup.', + 'type' => 'checkbox', + }, + { 'key' => 'manual_process-pkgpart', 'section' => 'billing', diff --git a/fs_selfservice/FS-SelfService/cgi/signup.cgi b/fs_selfservice/FS-SelfService/cgi/signup.cgi index 88eab5cce..acd7a62db 100755 --- a/fs_selfservice/FS-SelfService/cgi/signup.cgi +++ b/fs_selfservice/FS-SelfService/cgi/signup.cgi @@ -208,6 +208,11 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) { or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo; cardtype($payinfo) eq $cgi->param('CARD_type') or $error ||= $init_data->{msgcat}{not_a}. $cgi->param('CARD_type'); + + $error ||= 'CVV2 is required' + if ! $cgi->param('paycvv') + && $init_data->{require_cvv}; + } if ($init_data->{emailinvoiceonly} && (length $cgi->param('invoicing_list') < 1)) { diff --git a/fs_selfservice/FS-SelfService/cgi/signup.html b/fs_selfservice/FS-SelfService/cgi/signup.html index a9b67592b..003632a6a 100755 --- a/fs_selfservice/FS-SelfService/cgi/signup.html +++ b/fs_selfservice/FS-SelfService/cgi/signup.html @@ -196,7 +196,8 @@ else { if ( $cvv_enabled ) { foreach my $payby ( grep { exists $payby{$_} } qw(CARD DCRD) ) { #1.4/1.5 - $payby{$payby} .= qq!CVV2 (help)!; + my $cvv_r = $require_cvv ? '* ' : ''; + $payby{$payby} .= qq!${cvv_r}CVV2 (help)!; } } if ( $paystate_enabled ) { @@ -226,7 +227,8 @@ else { if ( $cvv_enabled ) { foreach my $payby ( grep { exists $payby{$_} } qw(CARD DCRD) ) { #1.4/1.5 - $paybychecked{$payby} .= qq!CVV2 (help)!; + my $cvv_r = $require_cvv ? '* ' : ''; + $paybychecked{$payby} .= qq!${cvv_r}CVV2 (help)!; } } if ( $paystate_enabled ) {