X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=fs_selfservice%2FFS-SelfService%2Fcgi%2Fsignup.cgi;h=2411c54a708637e2ddd3e90e841d2b700e28132e;hp=88eab5ccec2daac993b4f952e3c89fffd2f84fb8;hb=8f1188e8550992bf3d9078e7a6042420eaf92bd5;hpb=7266a53154af0f0b2240d3de4f912c52670d67d0 diff --git a/fs_selfservice/FS-SelfService/cgi/signup.cgi b/fs_selfservice/FS-SelfService/cgi/signup.cgi index 88eab5cce..2411c54a7 100755 --- a/fs_selfservice/FS-SelfService/cgi/signup.cgi +++ b/fs_selfservice/FS-SelfService/cgi/signup.cgi @@ -19,7 +19,7 @@ use CGI; #use CGI::Carp qw(fatalsToBrowser); use Tie::IxHash; use Text::Template; -use Business::CreditCard; +use Business::CreditCard 0.35; use HTTP::BrowserDetect; use HTML::Widgets::SelectLayers; use FS::SelfService qw( signup_info new_customer ); @@ -160,31 +160,31 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) { my $payby = $cgi->param('payby'); if ( $payby eq 'CHEK' || $payby eq 'DCHK' ) { #$payinfo = join('@', map { $cgi->param( $payby. "_payinfo$_" ) } (1,2) ); - $cgi->param('payinfo' => $cgi->param($payby. '_payinfo1'). '@'. - $cgi->param($payby. '_payinfo2') + $cgi->param('payinfo' => scalar($cgi->param($payby. '_payinfo1')). '@'. + scalar($cgi->param($payby. '_payinfo2')) ); } else { - $cgi->param('payinfo' => $cgi->param( $payby. '_payinfo' ) ); + $cgi->param('payinfo' => scalar($cgi->param( $payby. '_payinfo' ) ) ); } - $cgi->param('paydate' => $cgi->param( $payby. '_month' ). '-'. - $cgi->param( $payby. '_year' ) + $cgi->param('paydate' => scalar($cgi->param( $payby. '_month' )). '-'. + scalar($cgi->param( $payby. '_year' )) ); - $cgi->param('payname' => $cgi->param( $payby. '_payname' ) ); + $cgi->param('payname' => scalar($cgi->param( $payby. '_payname' ) ) ); $cgi->param('paycvv' => defined $cgi->param( $payby. '_paycvv' ) - ? $cgi->param( $payby. '_paycvv' ) + ? scalar($cgi->param( $payby. '_paycvv' )) : '' ); $cgi->param('paytype' => defined $cgi->param( $payby. '_paytype' ) - ? $cgi->param( $payby. '_paytype' ) + ? scalar($cgi->param( $payby. '_paytype' )) : '' ); $cgi->param('paystate' => defined $cgi->param( $payby. '_paystate' ) - ? $cgi->param( $payby. '_paystate' ) + ? scalar($cgi->param( $payby. '_paystate' )) : '' ); if ( $cgi->param('invoicing_list') ) { - $cgi->param('invoicing_list' => $cgi->param('invoicing_list'). ', POST') + $cgi->param('invoicing_list' => scalar($cgi->param('invoicing_list')). ', POST') if $cgi->param('invoicing_list_POST'); } else { $cgi->param('invoicing_list' => 'POST' ); @@ -201,13 +201,18 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) { my $payinfo = $cgi->param('payinfo'); $payinfo =~ s/\D//g; - $payinfo =~ /^(\d{13,16}|\d{8,9})$/ + $payinfo =~ /^(\d{13,19}|\d{8,9})$/ or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo; $payinfo = $1; validate($payinfo) 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)) { @@ -235,7 +240,7 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) { mac_addr countrycode phonenum sip_password pin prepaid_shortform ), - grep { /^snarf_/ } $cgi->param + grep { /^(snarf_|tax_)/ } $cgi->param ), 'payip' => $cgi->remote_host(), } ); @@ -250,10 +255,9 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) { qw( popup_url reference amount ); print_collect($rv); } elsif ( $error ) { - - #fudge the snarf info + #fudge the snarf and tax info no strict 'refs'; - ${$_} = $cgi->param($_) foreach grep { /^snarf_/ } $cgi->param; + ${$_} = $cgi->param($_) foreach grep { /^(snarf_|tax_)/ } $cgi->param; if ( $error =~ /^_duplicate_(card|ach)/ ) { my $what = ($1 eq 'card') ? 'Credit card' : 'Electronic check';