);
use CGI;
#use CGI::Carp qw(fatalsToBrowser);
+use Tie::IxHash;
use Text::Template;
use Business::CreditCard;
use HTTP::BrowserDetect;
+use HTML::Widgets::SelectLayers;
use FS::SelfService qw( signup_info new_customer );
#acceptable payment methods
$cgi = new CGI;
-$init_data = signup_info( 'agentnum' => $agentnum,
+$init_data = signup_info( 'agentnum' => $agentnum || scalar($cgi->param('agentnum')),
'promo_code' => scalar($cgi->param('promo_code')),
'reg_code' => uc(scalar($cgi->param('reg_code'))),
);
my $payinfo = $cgi->param('payinfo');
$payinfo =~ s/\D//g;
- $payinfo =~ /^(\d{13,16})$/
+ $payinfo =~ /^(\d{13,16}|\d{8,9})$/
or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo;
$payinfo = $1;
validate($payinfo)
payby payinfo paycvv paydate payname paystate paytype
invoicing_list referral_custnum promo_code reg_code
+ override_ban_warn
pkgpart refnum agentnum
username sec_phrase _password popnum
- countrycode phonenum sip_password pin
+ mac_addr
+ countrycode phonenum sip_password pin prepaid_shortform
),
grep { /^snarf_/ } $cgi->param
),
print_decline();
} elsif ( $error eq '_collect' ) {
map { $cgi->param($_, $rv->{$_}) }
- qw( popup_url reference collectitems amount );
- print_collect();
+ qw( popup_url reference amount );
+ print_collect($rv);
} elsif ( $error ) {
+
#fudge the snarf info
no strict 'refs';
${$_} = $cgi->param($_) foreach grep { /^snarf_/ } $cgi->param;
+
+ if ( $error =~ /^_duplicate_(card|ach)/ ) {
+ my $what = ($1 eq 'card') ? 'Credit card' : 'Electronic check';
+ $error = "Warning: $what already used to sign up recently";
+ $init_data->{'override_ban_warn'} = 1;
+ }
+
print_form();
+
} else {
print_okay(
'pkgpart' => scalar($cgi->param('pkgpart')),
sub print_form {
- $error = "Error: $error" if $error;
+ $error = "Error: $error" if $error && $error !~ /^Warning:/i;
my $r = {
$cgi->Vars,
#$cgi->delete('init_popstate');
$r->{self_url} = $cgi->self_url;
+ $r->{prepaid_shortform} = $cgi->param('prepaid_shortform');
+
print $cgi->header( '-expires' => 'now' ),
$signup_template->fill_in( PACKAGE => 'FS::SelfService::_signupcgi',
HASH => $r
$error = "Error: $error" if $error;
+ my $rv = shift || {};
my $r = {
$cgi->Vars,
%{$init_data},
+ %$rv,
'error' => $error,
};
$r->{self_url} = $cgi->self_url;
print $cgi->header( '-expires' => 'now' ),
+
$collect_template->fill_in( PACKAGE => 'FS::SelfService::_signupcgi',
HASH => $r
);
}
sub print_decline {
+ my $r = {
+ %{$init_data},
+ };
+
print $cgi->header( '-expires' => 'now' ),
- $decline_template->fill_in();
+ $decline_template->fill_in( PACKAGE => 'FS::SelfService::_signupcgi',
+ HASH => $r
+ );
}
sub print_okay {
print $cgi->header( '-expires' => 'now' ),
$success_template->fill_in( HASH => {
+ %{$init_data},
+
email_name => $email_name,
pkg => $pkg,
part_pkg => \$part_pkg,
<<'END';
<HTML><HEAD><TITLE>Pay now</TITLE></HEAD>
<BODY BGCOLOR="#e8e8e8"><FONT SIZE=7>Pay now</FONT><BR><BR>
-<SCRIPT TYPE="text/javascript">
- function popcollect() {
- overlib( OLiframeContent('<%= $popup_url %>', 336, 550, 'Secure Payment Area', 0, 'auto' ), CAPTION, 'Pay now', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close' );
- return false;
- }
-</SCRIPT>
-<SCRIPT TYPE="text/javascript" SRC="overlibmws.js"></SCRIPT>
-<SCRIPT TYPE="text/javascript" SRC="overlibmws_iframe.js"></SCRIPT>
-<SCRIPT TYPE="text/javascript" SRC="overlibmws_draggable.js"></SCRIPT>
-<SCRIPT TYPE="text/javascript" SRC="overlibmws_crossframe.js"></SCRIPT>
-<SCRIPT TYPE="text/javascript" SRC="iframecontentmws.js"></SCRIPT>
+<%=
+#<SCRIPT TYPE="text/javascript">
+# function popcollect() {
+# overlib( OLiframeContent('<%= $popup_url %>', 336, 550, 'Secure Payment Area', 0, 'auto' ), CAPTION, 'Pay now', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close' );
+# return false;
+# }
+#</SCRIPT>
+#<SCRIPT TYPE="text/javascript" SRC="overlibmws.js"></SCRIPT>
+#<SCRIPT TYPE="text/javascript" SRC="overlibmws_iframe.js"></SCRIPT>
+#<SCRIPT TYPE="text/javascript" SRC="overlibmws_draggable.js"></SCRIPT>
+#<SCRIPT TYPE="text/javascript" SRC="overlibmws_crossframe.js"></SCRIPT>
+#<SCRIPT TYPE="text/javascript" SRC="iframecontentmws.js"></SCRIPT>
+%>
You are about to contact our payment processor to pay <%= $amount %> for
<%= $pkg %>.<BR><BR>
Your transaction reference number is <%= $reference %><BR><BR>
-<FORM NAME="collect_popper" method="post" action="javascript:void(0)" onSubmit="popcollect()">
+<FORM NAME="collect_popper" method="post" action="<%= $popup_url %>">
<%=
- my %itemhash = @collectitems;
+ my %itemhash = @collectitems ;
foreach my $input (keys %itemhash) {
$OUT .= qq!<INPUT NAME="$input" TYPE="hidden" VALUE="$itemhash{$input}">!;
}