NG selfservice webpay interface, #23579
authorMark Wells <mark@freeside.biz>
Wed, 24 Jul 2013 19:56:21 +0000 (12:56 -0700)
committerMark Wells <mark@freeside.biz>
Wed, 24 Jul 2013 19:56:21 +0000 (12:56 -0700)
FS/FS/ClientAPI_XMLRPC.pm
ng_selfservice/elements/post_thirdparty.php [new file with mode: 0644]
ng_selfservice/payment_finish.php [new file with mode: 0644]
ng_selfservice/payment_paypal.php
ng_selfservice/payment_webpay.php

index 50b2056..6f37ce8 100644 (file)
@@ -122,6 +122,8 @@ sub ss2clientapi {
   'process_payment_change_pkg' => 'MyAccount/process_payment_change_pkg',
   'process_payment_order_renew' => 'MyAccount/process_payment_order_renew',
   'process_prepay'            => 'MyAccount/process_prepay',
   'process_payment_change_pkg' => 'MyAccount/process_payment_change_pkg',
   'process_payment_order_renew' => 'MyAccount/process_payment_order_renew',
   'process_prepay'            => 'MyAccount/process_prepay',
+  'start_thirdparty'          => 'MyAccount/start_thirdparty',
+  'finish_thirdparty'         => 'MyAccount/finish_thirdparty',
   'realtime_collect'          => 'MyAccount/realtime_collect',
   'list_pkgs'                 => 'MyAccount/list_pkgs',     #add to ss (added?)
   'list_svcs'                 => 'MyAccount/list_svcs',     #add to ss (added?)
   'realtime_collect'          => 'MyAccount/realtime_collect',
   'list_pkgs'                 => 'MyAccount/list_pkgs',     #add to ss (added?)
   'list_svcs'                 => 'MyAccount/list_svcs',     #add to ss (added?)
diff --git a/ng_selfservice/elements/post_thirdparty.php b/ng_selfservice/elements/post_thirdparty.php
new file mode 100644 (file)
index 0000000..a543be9
--- /dev/null
@@ -0,0 +1,29 @@
+<?
+if ( $payment_results['error'] ) {
+  // an error at this stage isn't meaningful to the user
+  $error = 'Internal error communicating with payment processor.';
+} elseif ( isset($payment_results['url']) ) {
+  $url = $payment_results['url'];
+?>
+<H3>Redirecting to payment processor...</H3>
+<DIV STYLE="display:none">
+<FORM ID="autoform" METHOD="POST" ENCTYPE="multipart/form-data" ACTION="<?
+  echo($url);
+?>">
+<?
+if (isset($payment_results['post_params'])) {
+  foreach ($payment_results['post_params'] as $key => $value) {
+    echo("<INPUT TYPE=\"hidden\" NAME=\"$key\" VALUE=\"$value\">\n");
+  }
+} ?>
+  <INPUT TYPE="submit" VALUE="submit">
+</FORM>
+</DIV>
+<SCRIPT TYPE="text/javascript">
+window.onload = function() {
+  document.getElementById('autoform').submit();
+}
+</SCRIPT>
+<? } else {
+  $error = 'Internal error: no redirect URL.';
+} ?>
diff --git a/ng_selfservice/payment_finish.php b/ng_selfservice/payment_finish.php
new file mode 100644 (file)
index 0000000..413f497
--- /dev/null
@@ -0,0 +1,34 @@
+<? $title ='Payment Confirmation'; include('elements/header.php'); ?>
+<? $current_menu = ''; include('elements/menu.php'); ?>
+<?
+  $params = $_GET;
+  $params['session_id'] = $_COOKIE['session_id'];
+
+  //print_r($params);
+  $payment_results = $freeside->finish_thirdparty($params);
+
+  if ( isset($payment_results['error']) ) {
+    $error = $payment_results['error'];
+    include('elements/error.php');
+  } else {
+?>
+<TABLE>
+  <TR>
+    <TH COLSPAN=2><FONT SIZE=+1><B>Your payment details</B></FONT></TH>
+  </TR>
+  <TR>
+<TR>
+  <TD ALIGN="right">Payment&nbsp;#</TD>
+  <TD BGCOLOR="#ffffff"><B><? echo($payment_results['paynum']); ?></B></TD>
+</TR>
+<TR>
+  <TD ALIGN="right">Payment&nbsp;amount</TH>
+  <TD BGCOLOR="#ffffff"><B>$<? printf('%.2f', $payment_results['paid']); ?></B>
+  </TD>
+</TR>
+<TR>
+  <TD ALIGN="right">Processing&nbsp;#</TD>
+  <TD BGCOLOR="#ffffff"><B><? echo($payment_results['order_number']); ?></B>
+  </TD>
+</TR>
+<? } ?>
index a226089..feb852d 100644 (file)
@@ -1,5 +1,41 @@
 <? $title ='PayPal Payment'; include('elements/header.php'); ?>
 <? $current_menu = 'payment_paypal.php'; include('elements/menu.php'); ?>
 <? $title ='PayPal Payment'; include('elements/header.php'); ?>
 <? $current_menu = 'payment_paypal.php'; include('elements/menu.php'); ?>
-PayPal payment
+<?
+if ( isset($_POST['amount']) && $_POST['amount'] ) {
+
+  $payment_results = $freeside->start_thirdparty(array(
+    'session_id'  => $_COOKIE['session_id'],
+    'method'      => 'PAYPAL',
+    'amount'      => $_POST['amount'],
+  ));
+
+  include('elements/post_thirdparty.php');
+
+} else {
+
+  $payment_info = $freeside->payment_info( array(
+    'session_id' => $_COOKIE['session_id'],
+  ) );
+
+  $tr_amount_fee = $freeside->mason_comp(array(
+    'session_id'  => $_COOKIE['session_id'],
+    'comp'        => '/elements/tr-amount_fee.html',
+    'args'        => [ 'amount', $payment_info['balance'] ],
+  ));
+  $tr_amount_fee = $tr_amount_fee['output'];
+
+  include('elements/error.php'); ?>
+<FORM NAME="OneTrueForm" METHOD="POST" ACTION="payment_paypal.php">
+  <TABLE>
+  <TR>
+    <TD ALIGN="right">Amount&nbsp;Due</TD>
+    <TD>$<? echo sprintf('%.2f', $payment_info['balance']); ?></TD>
+  </TR>
+  <? echo $tr_amount_fee; ?>
+  </TABLE>
+  <BR>
+  <INPUT TYPE="submit" NAME="process" VALUE="Start payment">
+</FORM>
+<? } ?>
 <? include('elements/menu_footer.php'); ?>
 <? include('elements/footer.php'); ?>
 <? include('elements/menu_footer.php'); ?>
 <? include('elements/footer.php'); ?>
index 638761d..ff82078 100644 (file)
@@ -1,5 +1,41 @@
 <? $title ='Webpay Payment'; include('elements/header.php'); ?>
 <? $current_menu = 'payment_webpay.php'; include('elements/menu.php'); ?>
 <? $title ='Webpay Payment'; include('elements/header.php'); ?>
 <? $current_menu = 'payment_webpay.php'; include('elements/menu.php'); ?>
-Webpay
+<?
+if ( isset($_POST['amount']) && $_POST['amount'] ) {
+
+  $payment_results = $freeside->start_thirdparty(array(
+    'session_id'  => $_COOKIE['session_id'],
+    'method'      => 'CC',
+    'amount'      => $_POST['amount'],
+  ));
+
+  include('elements/post_thirdparty.php');
+
+} else {
+
+  $payment_info = $freeside->payment_info( array(
+    'session_id' => $_COOKIE['session_id'],
+  ) );
+
+  $tr_amount_fee = $freeside->mason_comp(array(
+    'session_id'  => $_COOKIE['session_id'],
+    'comp'        => '/elements/tr-amount_fee.html',
+    'args'        => [ 'amount', $payment_info['balance'] ],
+  ));
+  $tr_amount_fee = $tr_amount_fee['output'];
+
+  include('elements/error.php'); ?>
+<FORM NAME="OneTrueForm" METHOD="POST" ACTION="payment_webpay.php">
+  <TABLE>
+  <TR>
+    <TD ALIGN="right">Amount&nbsp;Due</TD>
+    <TD>$<? echo sprintf('%.2f', $payment_info['balance']); ?></TD>
+  </TR>
+  <? echo $tr_amount_fee; ?>
+  </TABLE>
+  <BR>
+  <INPUT TYPE="submit" NAME="process" VALUE="Start payment">
+</FORM>
+<? } ?>
 <? include('elements/menu_footer.php'); ?>
 <? include('elements/footer.php'); ?>
 <? include('elements/menu_footer.php'); ?>
 <? include('elements/footer.php'); ?>