add card processing to example self-service, RT#75279
authorIvan Kohler <ivan@freeside.biz>
Sat, 2 Dec 2017 02:31:06 +0000 (18:31 -0800)
committerIvan Kohler <ivan@freeside.biz>
Sat, 2 Dec 2017 02:31:06 +0000 (18:31 -0800)
fs_selfservice/wordpress/elements/card.php [new file with mode: 0644]
fs_selfservice/wordpress/example_selfservice.php
fs_selfservice/wordpress/payment_cc.php [new file with mode: 0644]

diff --git a/fs_selfservice/wordpress/elements/card.php b/fs_selfservice/wordpress/elements/card.php
new file mode 100644 (file)
index 0000000..eb29aef
--- /dev/null
@@ -0,0 +1,53 @@
+<TR>
+  <TD ALIGN="right">Card&nbsp;number</TD>
+  <TD COLSPAN=6>
+    <TABLE>
+      <TR>
+        <TD>
+          <INPUT TYPE="text" NAME="payinfo" SIZE=20 MAXLENGTH=19 VALUE="<?php echo $payinfo ?>"> </TD>
+        <TD>Exp.</TD>
+        <TD>
+          <SELECT NAME="month">
+            <?php $months = array( '01', '02', '03' ,'04', '05', '06', '07', '08', '09', '10', '11', '12' );
+               foreach ( $months AS $m ) {
+            ?>
+                 <OPTION <?php if ($m == $month) { echo 'SELECTED'; } ?>><?php echo $m; ?>
+            <?php } ?>
+          </SELECT>
+        </TD>
+        <TD> / </TD>
+        <TD>
+          <SELECT NAME="year">
+            <?php $years = array( '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023' );
+               foreach ( $years as $y ) {
+            ?>
+                  <OPTION <?php if ($y == $year ) { echo 'SELECTED'; } ?>><?php echo $y; ?>
+            <?php } ?>
+          </SELECT>
+        </TD>
+      </TR>
+    </TABLE>
+  </TD>
+</TR>
+<?php  if ( $withcvv ) { ?>
+  <TR>
+    <TD ALIGN="right">CVV2&nbsp;(<A HREF="javascript:myopen('cvv2.html','cvv2','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=480,height=288')">help</A>)</TD>
+    <TD><INPUT TYPE="text" NAME="paycvv" VALUE="" SIZE=4 MAXLENGTH=4></TD>
+  </TR>
+<?php } ?>
+<TR>
+  <TD ALIGN="right">Exact&nbsp;name&nbsp;on&nbsp;card</TD>
+  <TD COLSPAN=6><INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="payname" VALUE="<?php echo $payname; ?>"></TD>
+</TR>
+
+<?php $lf = $freeside->mason_comp(array(
+           'session_id'     => $_COOKIE['freeside_session_id'],
+           'comp'       => '/elements/location.html',
+           'args'       => [
+                             'no_asterisks'   , 1,
+                             #'address1_label' , 'Card billing address',
+                             'address1_label' , 'Card&nbsp;billing&nbsp;address',
+                           ],
+         ));
+   echo $lf['output'];
+?>
index d753f2d..c503f38 100644 (file)
@@ -60,6 +60,7 @@ get_header();
 <p><a href="view_invoice.php?invnum=<?php echo $max_invnum ?>">View my Bill</a></p>
 <p><a href="change_bill.php">Change Bill Deliver Options</a></p>
 <p><a href="services_new.php">Order a new service</a></p>
 <p><a href="view_invoice.php?invnum=<?php echo $max_invnum ?>">View my Bill</a></p>
 <p><a href="change_bill.php">Change Bill Deliver Options</a></p>
 <p><a href="services_new.php">Order a new service</a></p>
+<p><a href="payment_cc.php">Credit card payment</a></p>
 <p><a href="process_logout.php">Logout</a></p>
 
 
 <p><a href="process_logout.php">Logout</a></p>
 
 
diff --git a/fs_selfservice/wordpress/payment_cc.php b/fs_selfservice/wordpress/payment_cc.php
new file mode 100644 (file)
index 0000000..ba5cd88
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+
+require( dirname( __FILE__ ) . '/wp-blog-header.php' );
+
+$freeside = new FreesideSelfService();
+
+if ( isset($_POST['amount']) && $_POST['amount'] ) {
+
+  $payment_results = $freeside->process_payment(array(
+    'session_id' => $_COOKIE['freeside_session_id'],
+    'payby'      => 'CARD',
+    'amount'     => $_POST['amount'],
+    'payinfo'    => $_POST['payinfo'],
+    'paycvv'     => $_POST['paycvv'],
+    'month'      => $_POST['month'],
+    'year'       => $_POST['year'],
+    'payname'    => $_POST['payname'],
+    'address1'   => $_POST['address1'],
+    'address2'   => $_POST['address2'],
+    'city'       => $_POST['city'],
+    'state'      => $_POST['state'],
+    'zip'        => $_POST['zip'],
+    'country'    => $_POST['country'],
+    'save'       => $_POST['save'],
+    'auto'       => $_POST['auto'],
+    'paybatch'   => $_POST['paybatch'],
+    //'discount_term' => $discount_term,
+  ));
+
+  if ( $payment_results['error'] ) {
+    $_REQUEST['freeside_error'] = $payment_results['error'];
+  } else {
+    $receipt_html = $payment_results['receipt_html'];
+  }
+
+}
+
+if ( $receipt_html ) { ?>
+
+  Your payment was processed successfully.  Thank you.<BR><BR>
+  <?php echo $receipt_html; ?>
+
+<?php } else {
+
+  $payment_info = $freeside->payment_info( array(
+    'session_id' => $_COOKIE['freeside_session_id'],
+    'payment_payby' => 'CARD',
+  ) );
+
+  if ( isset($payment_info['error']) && $payment_info['error'] ) {
+    $error = $payment_info['error'];
+    wp_redirect('example_login.php?freeside_error='. urlencode($error));
+    die();
+  }
+
+  extract($payment_info);
+
+  $tr_amount_fee = $freeside->mason_comp(array(
+      'session_id' => $_COOKIE['freeside_session_id'],
+      'comp'       => '/elements/tr-amount_fee.html',
+      'args'       => [ 'amount',  $balance ],
+  ));
+  //$tr_amount_fee = $tr_amount_fee->{'error'} || $tr_amount_fee->{'output'};
+  $tr_amount_fee = $tr_amount_fee['output'];
+
+  ?>
+
+  <?php include('elements/error.php'); ?>
+
+  <FORM NAME="OneTrueForm" METHOD="POST" ACTION="payment_cc.php" onSubmit="document.OneTrueForm.process.disabled=true">
+
+  <TABLE>
+  <TR>
+    <TD ALIGN="right">Amount&nbsp;Due</TD>
+    <TD COLSPAN=7>
+      <TABLE><TR><TD>
+        $<?php echo sprintf("%.2f", $balance) ?>
+      </TD></TR></TABLE>
+    </TD>
+  </TR>
+
+  <?php echo $tr_amount_fee; ?>
+
+  <TR>
+    <TD ALIGN="right">Card&nbsp;type</TD>
+    <TD COLSPAN=7>
+      <SELECT NAME="card_type"><OPTION></OPTION>
+        <?php foreach ( $card_types AS $ct ) { ?>
+          <OPTION <?php if ( $card_type == $ct ) { echo 'SELECTED'; } ?>
+                  VALUE="<?php echo $ct; ?>"><?php echo $ct; ?>
+        <?php } ?>
+      </SELECT>
+    </TD>
+  </TR>
+
+  <?php include('elements/card.php'); ?>
+
+  <TR>
+    <TD COLSPAN=8>
+      <INPUT TYPE="checkbox" <?php if ( ! $save_unchecked ) { echo 'CHECKED'; } ?> NAME="save" VALUE="1">
+      Remember this card and billing address
+    </TD>
+  </TR><TR>
+    <TD COLSPAN=8>
+      <INPUT TYPE="checkbox" <?php if ( $payby == 'CARD' ) { echo ' CHECKED'; } ?> NAME="auto" VALUE="1" onClick="if (this.checked) { document.OneTrueForm.save.checked=true; }">
+      Charge future payments to this card automatically
+    </TD>
+  </TR>
+  </TABLE>
+  <BR>
+  <INPUT TYPE="hidden" NAME="paybatch" VALUE="<?php echo $paybatch ?>">
+  <INPUT TYPE="submit" NAME="process" VALUE="Process payment"> <!-- onClick="this.disabled=true"> -->
+  </FORM>
+
+<?php } ?>
+
+<?php get_footer(); ?>