From d6741df87df9e3352d7ae47a02d0e3f46154fef9 Mon Sep 17 00:00:00 2001 From: mark Date: Tue, 21 Dec 2010 09:12:45 +0000 Subject: changes to support eWay third-party payment, #10208 --- .../cgi/make_thirdparty_payment.html | 55 +++++----- .../cgi/post_thirdparty_payment.html | 42 ++++++++ fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 118 +++++++++++++-------- 3 files changed, 145 insertions(+), 70 deletions(-) create mode 100644 fs_selfservice/FS-SelfService/cgi/post_thirdparty_payment.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html b/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html index 4055ed09e..b5b9eea1f 100755 --- a/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html @@ -1,35 +1,36 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> -<%= include('header', 'Pay now') %> +<%= $url = "$selfurl?session=$session_id;action="; + $cgi = new CGI; + ''; %> +<%= include('header', 'Make a payment') %> + +
+ + + + + + + + + + + + + +
Balance due + $<%=sprintf("%.2f", $balance)%> +
Payment amount + $"> +
+ - -<%= if ( $error ) { - $OUT .= qq!$error

!; -}else{ - $OUT .= <
- Your transaction reference number is $reference

-
-EOF - - my %itemhash = @collectitems; - foreach my $input (keys %itemhash) { - $OUT .= qq!!; - } - - $OUT .= qq!!; - $OUT .= qq!
!; -} -%> - <%= include('footer') %> diff --git a/fs_selfservice/FS-SelfService/cgi/post_thirdparty_payment.html b/fs_selfservice/FS-SelfService/cgi/post_thirdparty_payment.html new file mode 100644 index 000000000..17710b2e5 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/post_thirdparty_payment.html @@ -0,0 +1,42 @@ +<%= $url = "$selfurl?session=$session_id;action="; ''; %> +<%= include('header', 'Pay now') %> + + + + + + + +<%= if ( $error ) { + $OUT .= qq!$error

!; +}else{ + $OUT .= <
+ Your transaction reference number is $reference

+
+EOF + +# + my %itemhash = @collectitems; +# my $query = join(';', +# map { uri_escape($_) . '=' . uri_escape($itemhash{$_}) } +# keys(%itemhash) +# ); + foreach my $input (keys(%itemhash)) { + $OUT .= qq!\n!; + } + $OUT .= qq!
! +} +%> + +<%= +# +%> + +<%= include('footer') %> diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 1f8e55025..3f0562a81 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -16,13 +16,13 @@ use FS::SelfService qw( part_svc_info provision_acct provision_external provision_phone unprovision_svc change_pkg suspend_pkg domainselector list_svcs list_svc_usage list_cdr_usage list_support_usage - myaccount_passwd list_invoices create_ticket get_ticket did_report + myaccount_passwd list_invoices create_ticket get_ticket mason_comp ); $template_dir = '.'; -$DEBUG = 1; +$DEBUG = 0; $form_max = 255; @@ -72,8 +72,51 @@ if ( $cgi->param('session') eq 'login' ) { $session_id = $cgi->param('session'); #order|pw_list XXX ??? -$cgi->param('action') =~ - /^(myaccount|tktcreate|tktview|didreport|invoices|view_invoice|make_payment|make_ach_payment|make_term_payment|make_thirdparty_payment|payment_results|ach_payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|change_pay|process_change_bill|process_change_ship|process_change_pay|customer_order_pkg|process_order_pkg|customer_change_pkg|process_change_pkg|process_order_recharge|provision|provision_svc|process_svc_acct|process_svc_phone|process_svc_external|delete_svc|view_usage|view_usage_details|view_cdr_details|view_support_details|change_password|process_change_password|customer_suspend_pkg|process_suspend_pkg)$/ +my @actions = ( qw( + myaccount + tktcreate + tktview + didreport + invoices + view_invoice + make_payment + make_ach_payment + make_term_payment + make_thirdparty_payment + post_thirdparty_payment + payment_results + ach_payment_results + recharge_prepay + recharge_results + logout + change_bill + change_ship + change_pay + process_change_bill + process_change_ship + process_change_pay + customer_order_pkg + process_order_pkg + customer_change_pkg + process_change_pkg + process_order_recharge + provision + provision_svc + process_svc_acct + process_svc_phone + process_svc_external + delete_svc + view_usage + view_usage_details + view_cdr_details + view_support_details + change_password + process_change_password + customer_suspend_pkg + process_suspend_pkg +)); + +$cgi->param('action') =~ ( '^(' . join('|', @actions) . ')$' ) or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -83,9 +126,11 @@ $FS::SelfService::DEBUG = $DEBUG; my $result = eval "&$action();"; die $@ if $@; -#fixed "Use of uninitialized value in string eq"; very annoying when developing -if ( $result->{error} && ($result->{error} eq "Can't resume session" - || $result->{error} eq "Expired session") ) { +warn Dumper($result) if $DEBUG; + +if ( $result->{error} eq "Can't resume session" + || $result->{error} eq "Expired session" ) { #ick + my $login_info = login_info(); do_template('login', $login_info); exit; @@ -106,7 +151,9 @@ do_template($action, { #-- use Data::Dumper; -sub myaccount { my $result = customer_info( 'session_id' => $session_id ); warn Dumper($result); $result;} +sub myaccount { + customer_info( 'session_id' => $session_id ); +} sub change_bill { my $payment_info = payment_info( 'session_id' => $session_id ); @@ -580,9 +627,22 @@ sub ach_payment_results { } sub make_thirdparty_payment { + payment_info('session_id' => $session_id); +} + +sub post_thirdparty_payment { $cgi->param('payby_method') =~ /^(CC|ECHECK)$/ or die "illegal payby method"; - realtime_collect( 'session_id' => $session_id, 'method' => $1 ); + my $method = $1; + $cgi->param('amount') =~ /^(\d+(\.\d*)?)$/ + or die "illegal amount"; + my $amount = $1; + my $result = realtime_collect( + 'session_id' => $session_id, + 'method' => $method, + 'amount' => $amount, + ); + $result; } sub make_term_payment { @@ -619,15 +679,6 @@ sub logout { FS::SelfService::logout( 'session_id' => $session_id ); } -sub didreport { - my $result = did_report( 'session_id' => $session_id, - 'format' => $cgi->param('type'), - 'recentonly' => $cgi->param('recentonly'), - ); - die $result->{'error'} if exists $result->{'error'} && $result->{'error'}; - $result; -} - sub provision { my $result = list_pkgs( 'session_id' => $session_id ); die $result->{'error'} if exists $result->{'error'} && $result->{'error'}; @@ -815,31 +866,12 @@ sub do_template { or die $Text::Template::ERROR; #warn "filling in $template with $fill_in\n"; - - if($result && ref($result) && $result->{'format'} && $result->{'content'} - && $result->{'format'} eq 'csv') { - print $cgi->header('-expires' => 'now', - '-Content-Type' => 'text/csv', - '-Content-Disposition' => "attachment;filename=output.csv", - ), - $result->{'content'}; - } - elsif($result && ref($result) && $result->{'format'} && $result->{'content'} - && $result->{'format'} eq 'xls') { - print $cgi->header('-expires' => 'now', - '-Content-Type' => 'application/vnd.ms-excel', - '-Content-Disposition' => "attachment;filename=output.xls", - '-Content-Length' => length($result->{'content'}), - ), - $result->{'content'}; - } - else { - print $cgi->header( '-expires' => 'now' ), - $template->fill_in( PACKAGE => 'FS::SelfService::_selfservicecgi', - HASH => $fill_in - ); - } - + my $data = $template->fill_in( + PACKAGE => 'FS::SelfService::_selfservicecgi', + HASH => $fill_in, + ) || "Error processing template $source"; # at least print _something_ + print $cgi->header( '-expires' => 'now' ); + print $data; } #*FS::SelfService::_selfservicecgi::include = \&Text::Template::fill_in_file; -- cgit v1.2.1