Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Display error message on checkout_payment


dennish

Recommended Posts

Hello,

 

I've installed a payment module, which displays a drop down menu (on checkout_payment.php), from which the customer should select the name of his/her bank.

 

The HTML code:

 

<td><select name="sisow_bank" enabled>\n<option value="">Select your bank</option>\n<option value="99">Sisow Bank (Test)</option>\n</select></td>

 

The module (1) uses javascript validation, and (2) allows the customer to proceed to checkout_conformation.php despite the fact no bank was selected (after which the customer is redirected again to checkout_payment.php, where an error is displayed).

 

Instead, I would like to (1) use the regular messageStack for error messages, and (2) let the customer stay on checkout_payment.php, until a bank is selected as required.

 

To accomplish this, I've added two pieces of code to checkout_payment.php:

 

1. First, to produce an error when the customer fails to select a bank, I inserted:

 

if ($payment == 'sisowideal') {
if ($sisow_bank == '') {
 $error = true;
 $messageStack->add('checkout_payment', ENTRY_SISOWIDEAL_ERROR);
}
}

 

before:

 

require(DIR_WS_INCLUDES . 'template_top.php');
?>

 

2. Secondly, to display the error message I added:

 

<?php
if ($messageStack->size('checkout_payment') > 0) {
echo $messageStack->output('checkout_payment');
}
?>

 

after:

 

<?php
if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) {
?>
<div class="contentText">
<?php echo '<strong>' . tep_output_string_protected($error['title']) . '</strong>'; ?>
<p class="messageStackError"><?php echo tep_output_string_protected($error['error']); ?></p>
</div>
<?php
}
?>

 

What do I need to change in addition, to:

  1. let the customer stay on checkout_pament.php as long as errors remain (no selection made in drop down menu)
     
  2. let the customer move on to chechout_confirmation.php as soon as errors have cleared (bank was selected)

I took a look at both:

 

<?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true); ?>

 

and create_account.php (similar approach) but couldn't figure out how to get it right.

 

Any help is much appreciated.

 

Kind regards,

 

Dennis

Link to comment
Share on other sites

Hi

 

An idea would be if you hooked in using jQuery (I'm not able to code right now but here's the gist)

 

jQuery - document ready function stuff

 

remove attr action from form checkout_payment

substitute validation stuff (i.e. dropdown selected)

if OK then replace the form action and submit with jQuery

Link to comment
Share on other sites

@@Bob

 

Thanks for your suggestion.

 

I decided to continue on the "create_account" path and came up with the following code (Look for New code markers. Original checkout_payment.php file was taken from the osC 2.3.3.4 package):

 

<?php
/*
$Id$
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2010 osCommerce
Released under the GNU General Public License
*/
require('includes/application_top.php');
// if the customer is not logged on, redirect them to the login page
if (!tep_session_is_registered('customer_id')) {
$navigation->set_snapshot();
tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}
// if there is nothing in the customers cart, redirect them to the shopping cart page
if ($cart->count_contents() < 1) {
tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
}
// if no shipping method has been selected, redirect the customer to the shipping method selection page
if (!tep_session_is_registered('shipping')) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}
// avoid hack attempts during the checkout procedure by checking the internal cartID
if (isset($cart->cartID) && tep_session_is_registered('cartID')) {
if ($cart->cartID != $cartID) {
 tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}
}
// Stock Check
if ( (STOCK_CHECK == 'true') && (STOCK_ALLOW_CHECKOUT != 'true') ) {
$products = $cart->get_products();
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
 if (tep_check_stock($products[$i]['id'], $products[$i]['quantity'])) {
 tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
 break;
 }
}
}
// if no billing destination address was selected, use the customers own address as default
if (!tep_session_is_registered('billto')) {
tep_session_register('billto');
$billto = $customer_default_address_id;
} else {
// verify the selected billing address
if ( (is_array($billto) && empty($billto)) || is_numeric($billto) ) {
 $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$billto . "'");
 $check_address = tep_db_fetch_array($check_address_query);
 if ($check_address['total'] != '1') {
 $billto = $customer_default_address_id;
 if (tep_session_is_registered('payment')) tep_session_unregister('payment');
 }
}
}
// New code - Start
$process = false;
if (isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process') && isset($HTTP_POST_VARS['formid']) && ($HTTP_POST_VARS['formid'] == $sessiontoken)) {
$process = true;

$error = false;
if ($HTTP_POST_VARS['sisow_bank'] == '') {
 $error = true;
 $messageStack->add('checkout_payment', ENTRY_SISOWIDEAL_ERROR);
}
// New code - End

require(DIR_WS_CLASSES . 'order.php');
$order = new order;
if (!tep_session_is_registered('comments')) tep_session_register('comments');
if (isset($HTTP_POST_VARS['comments']) && tep_not_null($HTTP_POST_VARS['comments'])) {
$comments = tep_db_prepare_input($HTTP_POST_VARS['comments']);
}
$total_weight = $cart->show_weight();
$total_count = $cart->count_contents();
// load all enabled payment modules
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment;
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PAYMENT);
// New code - Start
if ($error == false) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'));
}
}
// New code - End
$breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
$breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
require(DIR_WS_INCLUDES . 'template_top.php');
?>
<script type="text/javascript"><!--
var selected;
function selectRowEffect(object, buttonselect) {
if (!selected) {
if (document.getElementById) {
 selected = document.getElementById('defaultSelected');
} else {
 selected = document.all['defaultSelected'];
}
}
if (selected) selected.className = 'moduleRow';
object.className = 'moduleRowSelected';
selected = object;
// one button is not an array
if (document.checkout_payment.payment[0]) {
document.checkout_payment.payment[buttonselect].checked=true;
} else {
document.checkout_payment.payment.checked=true;
}
}
function rowOverEffect(object) {
if (object.className == 'moduleRow') object.className = 'moduleRowOver';
}
function rowOutEffect(object) {
if (object.className == 'moduleRowOver') object.className = 'moduleRow';
}
//--></script>
<?php echo $payment_modules->javascript_validation(); ?>
<h1><?php echo HEADING_TITLE; ?></h1>
<!-- New code - Start //-->
<?php // echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true); ?>
<?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true) . tep_draw_hidden_field('action', 'process'); ?>
<!-- New code - End //-->
<div class="contentContainer">
<?php
if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) {
?>
<div class="contentText">
<?php echo '<strong>' . tep_output_string_protected($error['title']) . '</strong>'; ?>
<p class="messageStackError"><?php echo tep_output_string_protected($error['error']); ?></p>
</div>
<?php
}
?>
<!-- New code - Start //-->
<?php
if ($messageStack->size('checkout_payment') > 0) {
echo $messageStack->output('checkout_payment');
}
?>
<!-- New code - End //-->
<!-- New code - Start //-->
<!-- Only for testing purposes! Outputs $HTTP_POST_VARS / $_POST //-->
<?php
foreach ($_POST as $key => $value)
{
echo $key ." => ". $value . '<br>';
}
?>
<!-- New code - End //-->
<h2><?php echo TABLE_HEADING_BILLING_ADDRESS; ?></h2>
<div class="contentText">
<div class="ui-widget infoBoxContainer" style="float: right;">
 <div class="ui-widget-header infoBoxHeading"><?php echo TITLE_BILLING_ADDRESS; ?></div>
 <div class="ui-widget-content infoBoxContents">
 <?php echo tep_address_label($customer_id, $billto, true, ' ', '<br />'); ?>
 </div>
</div>
<?php echo TEXT_SELECTED_BILLING_DESTINATION; ?><br /><br /><?php echo tep_draw_button(IMAGE_BUTTON_CHANGE_ADDRESS, 'home', tep_href_link(FILENAME_CHECKOUT_PAYMENT_ADDRESS, '', 'SSL')); ?>
</div>
<div style="clear: both;"></div>
<h2><?php echo TABLE_HEADING_PAYMENT_METHOD; ?></h2>
<?php
$selection = $payment_modules->selection();
if (sizeof($selection) > 1) {
?>
<div class="contentText">
<div style="float: right;">
 <?php echo '<strong>' . TITLE_PLEASE_SELECT . '</strong>'; ?>
</div>
<?php echo TEXT_SELECT_PAYMENT_METHOD; ?>
</div>
<?php
} elseif ($free_shipping == false) {
?>
<div class="contentText">
<?php echo TEXT_ENTER_PAYMENT_INFORMATION; ?>
</div>
<?php
}
?>
<div class="contentText">
<?php
$radio_buttons = 0;
for ($i=0, $n=sizeof($selection); $i<$n; $i++) {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<?php
if ( ($selection[$i]['id'] == $payment) || ($n == 1) ) {
 echo '	 <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
} else {
 echo '	 <tr class="moduleRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
}
?>
 <td><strong><?php echo $selection[$i]['module']; ?></strong></td>
 <td align="right">
<?php
if (sizeof($selection) > 1) {
 echo tep_draw_radio_field('payment', $selection[$i]['id'], ($selection[$i]['id'] == $payment));
} else {
 echo tep_draw_hidden_field('payment', $selection[$i]['id']);
}
?>
 </td>
 </tr>
<?php
if (isset($selection[$i]['error'])) {
?>
 <tr>
 <td colspan="2"><?php echo $selection[$i]['error']; ?></td>
 </tr>
<?php
} elseif (isset($selection[$i]['fields']) && is_array($selection[$i]['fields'])) {
?>
 <tr>
 <td colspan="2"><table border="0" cellspacing="0" cellpadding="2">
<?php
 for ($j=0, $n2=sizeof($selection[$i]['fields']); $j<$n2; $j++) {
?>
	 <tr>
	 <td><?php echo $selection[$i]['fields'][$j]['title']; ?></td>
	 <td><?php echo $selection[$i]['fields'][$j]['field']; ?></td>
	 </tr>
<?php
 }
?>
 </table></td>
 </tr>
<?php
}
?>
</table>
<?php
$radio_buttons++;
}
?>
</div>
<h2><?php echo TABLE_HEADING_COMMENTS; ?></h2>
<div class="contentText">
<?php echo tep_draw_textarea_field('comments', 'soft', '60', '5', $comments); ?>
</div>

<!-- Must agree to terms - Start //-->
<div class="subHeader">
<h2><?php echo TITLE_CONDITION_AGREEMENT; ?></h2>
</div>
<?php
if ($order->content_type == 'virtual' or $order->content_type == 'mixed') {
?>
<?php echo TEXT_LICENSE_AGREEMENT; ?>
<?php
} else {
?>
<?php echo TEXT_CONDITION_AGREEMENT; ?>
<?php
}
?>
<?php echo tep_draw_checkbox_field('agree','true'); ?>
<!-- Must agree to terms - End //-->
<div class="contentText">
<div style="float: left; width: 60%; padding-top: 5px; padding-left: 15%;">
 <div id="coProgressBar" style="height: 5px;"></div>
 <table border="0" width="100%" cellspacing="0" cellpadding="2">
 <tr>
	 <td align="center" width="33%" class="checkoutBarFrom"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '" class="checkoutBarFrom">' . CHECKOUT_BAR_DELIVERY . '</a>'; ?></td>
	 <td align="center" width="33%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_PAYMENT; ?></td>
	 <td align="center" width="33%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td>
 </tr>
 </table>
</div>
<div style="float: right;"><?php echo tep_draw_button(IMAGE_BUTTON_CONTINUE, 'triangle-1-e', null, 'primary'); ?></div>
</div>
</div>
<script type="text/javascript">
$('#coProgressBar').progressbar({
value: 66
});
</script>
</form>
<?php
require(DIR_WS_INCLUDES . 'template_bottom.php');
require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

 

This works fine, in line with my requirements (see post #1).

 

However, a new issue emerged related to some (not all) $HTTP_POST_VARS (or $_POST) data.

 

For the Must agree to terms contribution (http://addons.oscommerce.com/info/574) I use in my shop, the customer is required to fill in:

 

<?php echo tep_draw_checkbox_field('agree','true'); ?>

 

At the start of checkout_confirmation.php the value of the field agree (true/false) is needed to perform a check to (dis)allow the customer to continue:

 

// Must agree to terms - Start
if ($HTTP_POST_VARS['agree'] != 'true') {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, tep_redirect(tep_href_link(FILENAME_CHECKOUT_FAIL)), 'SSL'));
}
// Must agree to terms - End

 

However, in checkout_confirmation.php $HTTP_POST_VARS['agree'] (or $_POST['agree']) turns up empty! On the contrary, in checkout_payment.php $HTTP_POST_VARS['agree'] renders true, as expected (see my testing code).

 

The same goes for the new drop down menu rendered by my payment module (field sisow_bank).

 

Any ideas why these (new) fields drop their values when I go from checkout_payment.php to

checkout_confirmation.php?

 

Kind regards,

 

Dennis

Link to comment
Share on other sites

Hi

 

I can't see any reason why they are turning up empty other than lines 118 and 119 - 119 is submitting the page to itself so your $_POST data is being sent to checkout_payment , they're valid so line 80 redirects to checkout_confirmation but minus the $_POST stuff

 

You'd either need to work out a way of forwarding the $_POST at line 80 (maybe plug it into a $_SESSSION - but then you'd need to unset that all over the place) or else revert to line 118 and put the error checking stuff at the top of checkout_confirmation

 

Something like

 

$error=false;
if ($HTTP_POST_VARS['sisow_bank'] == '') {
	 $error = true;
	 $messageStack->add('checkout_payment', ENTRY_SISOWIDEAL_ERROR);
}
//same here for the MATC

//then if $error == true
//redirect here back to checkout_payment

Link to comment
Share on other sites

@@Bob

 

I found a solution here: http://coredogs.com/lesson/form-and-php-validation-one-page (with a full explanation of the method used).

 

My code for checkout_payment.php now looks like this:

 

<?php
/*
$Id$
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2010 osCommerce
Released under the GNU General Public License
*/
require('includes/application_top.php');
// if the customer is not logged on, redirect them to the login page
if (!tep_session_is_registered('customer_id')) {
$navigation->set_snapshot();
tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}
// if there is nothing in the customers cart, redirect them to the shopping cart page
if ($cart->count_contents() < 1) {
tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
}
// if no shipping method has been selected, redirect the customer to the shipping method selection page
if (!tep_session_is_registered('shipping')) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}
// avoid hack attempts during the checkout procedure by checking the internal cartID
if (isset($cart->cartID) && tep_session_is_registered('cartID')) {
if ($cart->cartID != $cartID) {
 tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}
}
// Stock Check
if ( (STOCK_CHECK == 'true') && (STOCK_ALLOW_CHECKOUT != 'true') ) {
$products = $cart->get_products();
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
 if (tep_check_stock($products[$i]['id'], $products[$i]['quantity'])) {
 tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
 break;
 }
}
}
// if no billing destination address was selected, use the customers own address as default
if (!tep_session_is_registered('billto')) {
tep_session_register('billto');
$billto = $customer_default_address_id;
} else {
// verify the selected billing address
if ( (is_array($billto) && empty($billto)) || is_numeric($billto) ) {
 $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$billto . "'");
 $check_address = tep_db_fetch_array($check_address_query);
 if ($check_address['total'] != '1') {
 $billto = $customer_default_address_id;
 if (tep_session_is_registered('payment')) tep_session_unregister('payment');
 }
}
}
// New code - Start
$process = false;
if (isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process') && isset($HTTP_POST_VARS['formid']) && ($HTTP_POST_VARS['formid'] == $sessiontoken)) {
$process = true;
$payment = tep_db_prepare_input($HTTP_POST_VARS['payment']);
$sisow_bank = tep_db_prepare_input($HTTP_POST_VARS['sisow_bank']);
$agree = tep_db_prepare_input($HTTP_POST_VARS['agree']);

$error = false;
if ($HTTP_POST_VARS['sisow_bank'] == '') {
 $error = true;
 $messageStack->add('checkout_payment', ENTRY_SISOWIDEAL_ERROR);
}
// New code - End

require(DIR_WS_CLASSES . 'order.php');
$order = new order;
if (!tep_session_is_registered('comments')) tep_session_register('comments');
if (isset($HTTP_POST_VARS['comments']) && tep_not_null($HTTP_POST_VARS['comments'])) {
$comments = tep_db_prepare_input($HTTP_POST_VARS['comments']);
}
$total_weight = $cart->show_weight();
$total_count = $cart->count_contents();
// load all enabled payment modules
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment;
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PAYMENT);
// New code - Start
if ($error == false) {
if ($HTTP_POST_VARS['sisow_bank'] != '') {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'sisow_bank=' . $sisow_bank . '&agree=' . $agree, 'SSL'));
} else {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'agree=' . $agree, 'SSL'));
}
}

}
// New code - End
$breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
$breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
require(DIR_WS_INCLUDES . 'template_top.php');
?>
<script type="text/javascript"><!--
var selected;
function selectRowEffect(object, buttonselect) {
if (!selected) {
if (document.getElementById) {
 selected = document.getElementById('defaultSelected');
} else {
 selected = document.all['defaultSelected'];
}
}
if (selected) selected.className = 'moduleRow';
object.className = 'moduleRowSelected';
selected = object;
// one button is not an array
if (document.checkout_payment.payment[0]) {
document.checkout_payment.payment[buttonselect].checked=true;
} else {
document.checkout_payment.payment.checked=true;
}
}
function rowOverEffect(object) {
if (object.className == 'moduleRow') object.className = 'moduleRowOver';
}
function rowOutEffect(object) {
if (object.className == 'moduleRowOver') object.className = 'moduleRow';
}
//--></script>
<?php // echo $payment_modules->javascript_validation(); ?>
<h1><?php echo HEADING_TITLE; ?></h1>
<!-- New code - Start //-->
<?php // echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true); ?>
<?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'), 'post', 'onsubmit="return check_form();"', true) . tep_draw_hidden_field('action', 'process'); ?>
<!-- New code - End //-->
<div class="contentContainer">
<?php
if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) {
?>
<div class="contentText">
<?php echo '<strong>' . tep_output_string_protected($error['title']) . '</strong>'; ?>
<p class="messageStackError"><?php echo tep_output_string_protected($error['error']); ?></p>
</div>
<?php
}
?>
<!-- New code - Start //-->
<?php
if ($messageStack->size('checkout_payment') > 0) {
echo $messageStack->output('checkout_payment');
}
?>
<!-- New code - End //-->
<!-- New code - Start //-->
<!-- Only for testing purposes! Outputs $HTTP_POST_VARS / $_POST //-->
<?php
foreach ($_POST as $key => $value)
{
echo $key ." => ". $value . '<br>';
}
?>
<!-- New code - End //-->
<h2><?php echo TABLE_HEADING_BILLING_ADDRESS; ?></h2>
<div class="contentText">
<div class="ui-widget infoBoxContainer" style="float: right;">
 <div class="ui-widget-header infoBoxHeading"><?php echo TITLE_BILLING_ADDRESS; ?></div>
 <div class="ui-widget-content infoBoxContents">
 <?php echo tep_address_label($customer_id, $billto, true, ' ', '<br />'); ?>
 </div>
</div>
<?php echo TEXT_SELECTED_BILLING_DESTINATION; ?><br /><br /><?php echo tep_draw_button(IMAGE_BUTTON_CHANGE_ADDRESS, 'home', tep_href_link(FILENAME_CHECKOUT_PAYMENT_ADDRESS, '', 'SSL')); ?>
</div>
<div style="clear: both;"></div>
<h2><?php echo TABLE_HEADING_PAYMENT_METHOD; ?></h2>
<?php
$selection = $payment_modules->selection();
if (sizeof($selection) > 1) {
?>
<div class="contentText">
<div style="float: right;">
 <?php echo '<strong>' . TITLE_PLEASE_SELECT . '</strong>'; ?>
</div>
<?php echo TEXT_SELECT_PAYMENT_METHOD; ?>
</div>
<?php
} elseif ($free_shipping == false) {
?>
<div class="contentText">
<?php echo TEXT_ENTER_PAYMENT_INFORMATION; ?>
</div>
<?php
}
?>
<div class="contentText">
<?php
$radio_buttons = 0;
for ($i=0, $n=sizeof($selection); $i<$n; $i++) {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<?php
if ( ($selection[$i]['id'] == $payment) || ($n == 1) ) {
 echo '	 <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
} else {
 echo '	 <tr class="moduleRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
}
?>
 <td><strong><?php echo $selection[$i]['module']; ?></strong></td>
 <td align="right">
<?php
if (sizeof($selection) > 1) {
 echo tep_draw_radio_field('payment', $selection[$i]['id'], ($selection[$i]['id'] == $payment));
} else {
 echo tep_draw_hidden_field('payment', $selection[$i]['id']);
}
?>
 </td>
 </tr>
<?php
if (isset($selection[$i]['error'])) {
?>
 <tr>
 <td colspan="2"><?php echo $selection[$i]['error']; ?></td>
 </tr>
<?php
} elseif (isset($selection[$i]['fields']) && is_array($selection[$i]['fields'])) {
?>
 <tr>
 <td colspan="2"><table border="0" cellspacing="0" cellpadding="2">
<?php
 for ($j=0, $n2=sizeof($selection[$i]['fields']); $j<$n2; $j++) {
?>
	 <tr>
	 <td><?php echo $selection[$i]['fields'][$j]['title']; ?></td>
	 <td><?php echo $selection[$i]['fields'][$j]['field']; ?></td>
	 </tr>
<?php
 }
?>
 </table></td>
 </tr>
<?php
}
?>
</table>
<?php
$radio_buttons++;
}
?>
</div>
<h2><?php echo TABLE_HEADING_COMMENTS; ?></h2>
<div class="contentText">
<?php echo tep_draw_textarea_field('comments', 'soft', '60', '5', $comments); ?>
</div>

<!-- Must agree to terms - Start //-->
<div class="subHeader">
<h2><?php echo TITLE_CONDITION_AGREEMENT; ?></h2>
</div>
<?php
if ($order->content_type == 'virtual' or $order->content_type == 'mixed') {
?>
<?php echo TEXT_LICENSE_AGREEMENT; ?>
<?php
} else {
?>
<?php echo TEXT_CONDITION_AGREEMENT; ?>
<?php
}
?>
<?php echo tep_draw_checkbox_field('agree','true'); ?>
<!-- Must agree to terms - End //-->
<div class="contentText">
<div style="float: left; width: 60%; padding-top: 5px; padding-left: 15%;">
 <div id="coProgressBar" style="height: 5px;"></div>
 <table border="0" width="100%" cellspacing="0" cellpadding="2">
 <tr>
	 <td align="center" width="33%" class="checkoutBarFrom"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '" class="checkoutBarFrom">' . CHECKOUT_BAR_DELIVERY . '</a>'; ?></td>
	 <td align="center" width="33%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_PAYMENT; ?></td>
	 <td align="center" width="33%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td>
 </tr>
 </table>
</div>
<div style="float: right;"><?php echo tep_draw_button(IMAGE_BUTTON_CONTINUE, 'triangle-1-e', null, 'primary'); ?></div>
</div>
</div>
<script type="text/javascript">
$('#coProgressBar').progressbar({
value: 66
});
</script>
</form>
<?php
require(DIR_WS_INCLUDES . 'template_bottom.php');
require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

 

Notice the adapted redirect with parameters (line 101):

 

// New code - Start
if ($error == false) {
if ($HTTP_POST_VARS['sisow_bank'] != '') {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'sisow_bank=' . $sisow_bank . '&agree=' . $agree, 'SSL'));
} else {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, 'agree=' . $agree, 'SSL'));
}
}
}
// New code - End

 

The variables used are defined as (line 71):

 

$payment = tep_db_prepare_input($HTTP_POST_VARS['payment']);
$sisow_bank = tep_db_prepare_input($HTTP_POST_VARS['sisow_bank']);
$agree = tep_db_prepare_input($HTTP_POST_VARS['agree']);

 

I omitted the first variable $payment in my previous code (see post #3), but this needs to be included for the script to function correctly.

 

Finally, I changed the code for checkout_confirmation.php to:

 

// Must agree to terms - Start
// if ($HTTP_POST_VARS['agree'] != 'true') {
if ($_GET['agree'] != 'true') {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, tep_redirect(tep_href_link(FILENAME_CHECKOUT_FAIL)), 'SSL'));
}
// Must agree to terms - End

 

Thanks for putting me on the right track.

 

Kind regards,

 

Dennis

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...