summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-01-13 21:37:36 -0800
committerIvan Kohler <ivan@freeside.biz>2014-01-13 21:37:36 -0800
commitbe22bac9ba2930e201a652531a753eb976151edf (patch)
tree86a5513d9c5bff0cc9cc44863ad4cf683e23f93d
parent130b0b14727bafe247719a4005c527bb8b852c1d (diff)
add option to require cvv for signup, RT#25476
-rw-r--r--FS/FS/ClientAPI/Signup.pm6
-rw-r--r--FS/FS/Conf.pm7
-rwxr-xr-xfs_selfservice/FS-SelfService/cgi/signup.cgi5
-rwxr-xr-xfs_selfservice/FS-SelfService/cgi/signup.html6
4 files changed, 22 insertions, 2 deletions
diff --git a/FS/FS/ClientAPI/Signup.pm b/FS/FS/ClientAPI/Signup.pm
index 957945c76..8d8c39e67 100644
--- a/FS/FS/ClientAPI/Signup.pm
+++ b/FS/FS/ClientAPI/Signup.pm
@@ -175,6 +175,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,
@@ -632,6 +633,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 375d2d899..56b753002 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -2663,6 +2663,13 @@ and customer address. Include units.',
},
{
+ 'key' => 'signup-require_cvv',
+ 'section' => 'self-service',
+ 'description' => 'Require CVV for credit card signup.',
+ 'type' => 'checkbox',
+ },
+
+ {
'key' => 'manual_process-pkgpart',
'section' => 'billing',
'description' => 'Package to add to each manual credit card and ACH payment entered by employees from the backend. Enabling this option may be in violation of your merchant agreement(s), so please check it(/them) carefully before enabling this option.',
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!<TR><TD ALIGN="right">CVV2&nbsp;(<A HREF="javascript:myopen('cvv2.html','cvv2','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=480,height=288')">help</A>)</TD><TD><INPUT TYPE="text" NAME=${payby}_paycvv VALUE="" SIZE=4 MAXLENGTH=4></TD></TR>!;
+ my $cvv_r = $require_cvv ? '<font color="#ff0000">*</font> ' : '';
+ $payby{$payby} .= qq!<TR><TD ALIGN="right">${cvv_r}CVV2&nbsp;(<A HREF="javascript:myopen('cvv2.html','cvv2','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=480,height=288')">help</A>)</TD><TD><INPUT TYPE="text" NAME=${payby}_paycvv VALUE="" SIZE=4 MAXLENGTH=4></TD></TR>!;
}
}
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!<TR><TD ALIGN="right">CVV2&nbsp;(<A HREF="javascript:myopen('cvv2.html','cvv2','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=480,height=288')">help</A>)</TD><TD><INPUT TYPE="text" NAME=${payby}_paycvv VALUE="$paycvv" SIZE=4 MAXLENGTH=4></TD></TR>!;
+ my $cvv_r = $require_cvv ? '<font color="#ff0000">*</font> ' : '';
+ $paybychecked{$payby} .= qq!<TR><TD ALIGN="right">${cvv_r}CVV2&nbsp;(<A HREF="javascript:myopen('cvv2.html','cvv2','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=480,height=288')">help</A>)</TD><TD><INPUT TYPE="text" NAME=${payby}_paycvv VALUE="$paycvv" SIZE=4 MAXLENGTH=4></TD></TR>!;
}
}
if ( $paystate_enabled ) {