summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2003-05-20 05:43:47 +0000
committerivan <ivan>2003-05-20 05:43:47 +0000
commite354694764fb1442b6bc74a63189f094c51f1a89 (patch)
tree129a7e85829c554f9a6db556c6401c60f0676e26
parente2a51e422dbd070a4571f229f8e5c6929950d137 (diff)
working self-service self-payments!
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm4
-rw-r--r--FS/FS/cust_main.pm20
-rw-r--r--fs_selfservice/FS-SelfService/cgi/make_payment.html2
-rw-r--r--fs_selfservice/FS-SelfService/cgi/payment_results.html (renamed from fs_selfservice/FS-SelfService/cgi/process_payment.html)2
-rw-r--r--fs_selfservice/FS-SelfService/cgi/selfservice.cgi4
5 files changed, 21 insertions, 11 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index 6e9bf23a9..e12e93b12 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -193,7 +193,7 @@ sub process_payment {
my $new = new FS::cust_main { $cust_main->hash };
$new->set( $_ => $p->{$_} )
foreach qw( payname address1 address2 city state zip payinfo );
- $new->set( 'paydate' => $p->{'month'}. '-'. $p->{'year'} );
+ $new->set( 'paydate' => $p->{'year'}. '-'. $p->{'month'}. '-01' );
$new->set( 'payby' => $p->{'auto'} ? 'CARD' : 'DCRD' );
my $error = $new->replace($cust_main);
return { 'error' => $error } if $error;
@@ -201,7 +201,7 @@ sub process_payment {
}
my $error = $cust_main->realtime_bop( 'CC', $p->{'amount'}, quiet=>1,
- 'paydate' => $p->{'month'}. '-'. $p->{'year'},
+ 'paydate' => $p->{'year'}. '-'. $p->{'month'}. '-01',
map { $_ => $p->{$_} }
qw( payname address1 address2 city state zip payinfo )
);
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 09c56474c..7e2ff388e 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -33,7 +33,7 @@ use FS::Msgcat qw(gettext);
@ISA = qw( FS::Record );
-$Debug = 0;
+$Debug = 1;
#$Debug = 1;
$import = 0;
@@ -761,10 +761,15 @@ sub check {
unless $self->payby =~ /^(BILL|PREPAY|CHEK|LECB)$/;
$self->paydate('');
} else {
- $self->paydate =~ /^(\d{1,2})[\/\-](\d{2}(\d{2})?)$/
- or return "Illegal expiration date: ". $self->paydate;
- my $y = length($2) == 4 ? $2 : "20$2";
- $self->paydate("$y-$1-01");
+ my( $m, $y );
+ if ( $self->paydate =~ /^(\d{1,2})[\/\-](\d{2}(\d{2})?)$/ ) {
+ ( $m, $y ) = ( $1, length($2) == 4 ? $2 : "20$2" );
+ } elsif ( $self->paydate =~ /^(20)?(\d{2})[\/\-](\d{2})[\/\-]\d+$/ ) {
+ ( $m, $y ) = ( $3, "20$2" );
+ } else {
+ return "Illegal expiration date: ". $self->paydate;
+ }
+ $self->paydate("$y-$m-01");
my($nowm,$nowy)=(localtime(time))[4,5]; $nowm++; $nowy+=1900;
return gettext('expired_card')
if !$import && ( $y<$nowy || ( $y==$nowy && $1<$nowm ) );
@@ -1438,6 +1443,11 @@ I<quiet> can be set true to surpress email decline notices.
sub realtime_bop {
my( $self, $method, $amount, %options ) = @_;
+ if ( $Debug ) {
+ warn "$self $method $amount\n";
+ warn " $_ => $options{$_}\n" foreach keys %options;
+ }
+
$options{'description'} ||= 'Internet services';
#pre-requisites
diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html
index 1d860f08a..a1cda6d49 100644
--- a/fs_selfservice/FS-SelfService/cgi/make_payment.html
+++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html
@@ -8,7 +8,7 @@
<FONT SIZE=4>Make a payment</FONT><BR><BR>
<FORM NAME="OneTrueForm" METHOD="POST" ACTION="<%=$selfurl%>" onSubmit="document.OneTrueForm.process.disabled=true">
<INPUT TYPE="hidden" NAME="session" VALUE="<%=$session_id%>">
-<INPUT TYPE="hidden" NAME="action" VALUE="do_payment">
+<INPUT TYPE="hidden" NAME="action" VALUE="payment_results">
<TABLE BGCOLOR="#cccccc">
<TR>
<TD ALIGN="right">Amount&nbsp;Due</TD>
diff --git a/fs_selfservice/FS-SelfService/cgi/process_payment.html b/fs_selfservice/FS-SelfService/cgi/payment_results.html
index e4946dc8f..92c8cf51b 100644
--- a/fs_selfservice/FS-SelfService/cgi/process_payment.html
+++ b/fs_selfservice/FS-SelfService/cgi/payment_results.html
@@ -7,7 +7,7 @@
</TD><TD VALIGN="top">
<FONT SIZE=4>Payment results</FONT><BR><BR>
<%= if ( $error ) {
- $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">Error processing your payment: $error</FONT!;
+ $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">Error processing your payment: $error</FONT>!;
} else {
$OUT .= 'Your payment was processed sucessfully. Thank you.';
} %>
diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
index 456d2dde2..6d6716ddc 100644
--- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
+++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
@@ -55,7 +55,7 @@ if ( $cgi->param('session') eq 'login' ) {
$session_id = $cgi->param('session');
$cgi->param('action') =~
- /^(myaccount|view_invoice|make_payment|do_payment)$/
+ /^(myaccount|view_invoice|make_payment|payment_results)$/
or die "unknown action ". $cgi->param('action');
my $action = $1;
@@ -95,7 +95,7 @@ sub make_payment {
payment_info( 'session_id' => $session_id );
}
-sub do_payment {
+sub payment_results {
use Business::CreditCard;