Jump to content

Archived

This topic is now archived and is closed to further replies.

ACE99

Checkout Proceedure

Recommended Posts

It is not the software that is patented. Software can't be patented in the US either. Ideas & processes are what you can patent.

 

Amazon has a patent for the process of a checkout that involves 1 click.

 

Whatever scripts their site is powered by, I'm sure they hold the copyrights to if they were developed in-house or for-hire, but that is pretty irrelevant to their patent.


The only thing necessary for evil to flourish is for good men to do nothing

- Edmund Burke

Share this post


Link to post
Share on other sites
This kind of standpoint will divide owners and administrators of osc-shops into two parts - legal and illegal - so what is left to americans to do?

 

Personally I think that it can't hurt to have the functionality present in some form but not enabled by default. It's the users own resposibility whether to use it. Just make it clear to the user that it's not allowed to be used in the US.

 

I don't think it's a good idea to not offer certain functionality just because it's illegal in some parts of the world. If the US had a speedlimit of 40 MPH, would the entire world have to obey it?

Share this post


Link to post
Share on other sites
It is not the software that is patented.  Software can't be patented in the US either.  Ideas & processes are what you can patent.

 

Amazon has a patent for the process of a checkout that involves 1 click.

 

Whatever scripts their site is powered by, I'm sure they hold the copyrights to if they were developed in-house or for-hire, but that is pretty irrelevant to their patent.

 

Well, IANAL, but I think the 1 click patent is currently not enforcable in the EU. It might become enforcable, but it's unclear if and when this will happen.

 

The EU software patent proposal is very much in limbo now and will quite possibly not be enacted for the forseeable future. http://news.bbc.co.uk/1/hi/technology/4232971.stm

Share this post


Link to post
Share on other sites
Please provide any comments on changes you would like to see to the checkout process or any additional features you would like to see.

 

Hi there,

My first post here... I've been investigating OS Commerce for some time now as a background task. I think many of the comments on this subject are valid (a desire to have easier checkout process). However, making too many simplifications / assumptions about what the customer will want will inevitably mean more work for those that do want to change things. I appreciate everyone's experience with OSC on this, but my experience from another shopping system suggests that once a customer has chosen our store, they are prepared to put a little effort into the checkout process.

 

What is more important to my mind is that the process is 100% understandable as possible! The current system seems good in this respect, however I am concerned that the Payment Information comes before the Order Confirmation.

 

Therefore, my suggestion is that the Order Confirmation comes after selecting the shipping method. If the customer confirms at this stage, that's it, the order could become 'locked' in some way... and the only choice then is how to pay.

 

I do not know if it is possible to surcharge certain payment mechanisms, but if so, this could muck up my suggestion. However, I would guess that most payment methods do not attract surcharges? This suggestion may also more naturally lead to a 'Payment Info Pending' order status... which could lead to reduce errors with orders being lost by links to external payment sites.

 

By the way, I have a small mod that I hope to post soon, to make the payment options look more like the Delivery options, with an icon and descriptive text. Nice to highlight the way you want people to pay!

 

Nij

Share this post


Link to post
Share on other sites
Hi all,

 

Just trying to set up OSC to my liking, and reading through all this found it very useful. As I see it the main problem with os is the requirement to set up accounts. And the long checkout process.

 

The automatic creation of accounts modand shortening of process suggested above is excellent idea and I would find it useful once worked out.

 

In the meantime what I've managed to do (and I have no idea if I'm doing something wrong somehere  :-" ) Is

 

1. install the Purchase Without Account contribution

 

2. Change all the links that say "checkout", ie from basket and nav bars to go to the page where you input your details for a "no account creation" choice. this misses out the login/create account page completely and so doesn't put off the one time purchaser, or those that see the word "account" and run away.

 

3. At the top of this page have a small note to the effect that if you want to track orders etc set up account or login here. which would take them to usual log in page.

 

Otherwise checkout process is standard  - so far  :D

Thats one page out of the process

If I can get shipping details and payment options onto the one page that would make it ideal.

Interested to see what happens

 

Cheers

 

K

Share this post


Link to post
Share on other sites
Hi all,

 

Just trying to set up OSC to my liking, and reading through all this found it very useful. As I see it the main problem with os is the requirement to set up accounts. And the long checkout process.

 

The automatic creation of accounts modand shortening of process suggested above is excellent idea and I would find it useful once worked out.

 

In the meantime what I've managed to do (and I have no idea if I'm doing something wrong somehere  :-" ) Is

 

1. install the Purchase Without Account contribution

 

2. Change all the links that say "checkout", ie from basket and nav bars to go to the page where you input your details for a "no account creation" choice. this misses out the login/create account page completely and so doesn't put off the one time purchaser, or those that see the word "account" and run away.

 

3. At the top of this page have a small note to the effect that if you want to track orders etc set up account or login here. which would take them to usual log in page.

 

Otherwise checkout process is standard  - so far  :D

Thats one page out of the process

If I can get shipping details and payment options onto the one page that would make it ideal.

Interested to see what happens

 

Cheers

 

K

Share this post


Link to post
Share on other sites

I know almost nothing about OSC but the six months I have used it I would have to agree that customers in general do not like to go through more then 3 steps to checkout.

 

I would like to add though i think just to make the store look a little more proffessional wouldnlt it be nice to have OSC randomly pick a unused # for a order # that way a customer can not tell how well your site is doing especially if you are just starting and a customer places an order with an order # of 1 they know they have made the first order on your store. You could even setup a control panel on the admin side that lets the site owner or administrator choose the length of the order # and other constraints involved with this.

 

I am not even sure how involved this would be but I just feel that an customer that sees a order # like 146789 or something will then get the impression the site is doing well and that there have been alot of orders.

Share this post


Link to post
Share on other sites

andy,

I am not even sure how involved this would be but I just feel that an customer that sees a order # like 146789 or something will then get the impression the site is doing well and that there have been alot of orders.

 

see this here:

 

Resetting The Order ID Value

 

:thumbsup:

Share this post


Link to post
Share on other sites

Hi everyone,

 

Like most people here I agree the checkout is unnecessarily lengthy, especially in my case.

 

My website only has one shipping and payment method. It would be nice if the customer could be directed straight from the create_acount.php page to the checkout confirmation page bypassing create_account_success.php as well as the shipping and payment pages.

 

Does any one know how I could achieve this? :rolleyes:

 

Thank You

 

James

Share this post


Link to post
Share on other sites

Wow, glad I found this post. I was about to post a new topic up.

 

This echo's a few other posts, but here is my idea:

 

On shopping cart page we have two boxes at bottom

1. New customer checkout

2. Standard login box

 

New customer checkout

1. Has billing address fields

2. Has check box to automatically fill out shipping address, or put in other address for shipping

3. Has *optional* filed for password if user wishes to create account (they can leave blank) OR just not have password fields at all, and send them a generated password like Burt said.

 

Shipping / Billing

1. Has shipping module for customer to choose shipping

2. Has payment modules to choose payment

 

Confirmation page

1. Click OK!

 

Sucess page, but no "continue button" just a message that they are done.

 

Thats it. IMO this would work perfecty for customers I have done OSC sites for in the past. If the customer does not enter a password at the end delete all the customer details and keep the order details, OR send them a generated password with a polilte message that if they want to order again they can use the password sent.

 

The only thing holding me back from coding this up is the next release of OSC. does anyone have any idea when the next MS is due? I'd hate to spend a week of time to make something that will be out of date soon.


I need to read the rules more often...

Share this post


Link to post
Share on other sites

all this sounds great and just what osC needs.

 

I think it may also be useful for admin to be able to 'turn-off' the use of a seperate shipping address. i know of quite a few merchants who only like to ship to the cardholders address for security purposes and that seems impossible to do under the current checkout. - i dont think this can even be modded at present!!

Share this post


Link to post
Share on other sites
all this sounds great and just what osC needs.

 

I think it may also be useful for admin to be able to 'turn-off' the use of a seperate shipping address. i know of quite a few merchants who only like to ship to the cardholders address for security purposes and that seems impossible to do under the current checkout. - i dont think this can even be modded at present!!

 

I this is actually already possible. Just change MAX address book entires to 1. This will allow people to have only 1 address.


I need to read the rules more often...

Share this post


Link to post
Share on other sites
My solution is as follows:

 

Product in Cart.  Clicks checkout (1st click), this leads to create_account/payment page where the buyer input Customer Details on the standard create_account form [this form also has a checkbox to indicate whether or not this is the shipping address as well as "choose payment method"], click continue (2nd click) which leads to checkout confirmation [exactly as the page is now].  Click continue (3rd click), order is written to database and person is transferred to the "home page", but the home page also has a message "thank you for purchasing at XYZ Store, your order will ship in X days"...

 

This makes sense for my needs.  It might not make sense for every store.

 

 

I agree with this. This checkout procedure would be the perfect fit for my sites. I am trying to develop one myself. I need to start over and rewrite the checkout process I think, but I am close.

 

If anyone has done this, PLEASE send your modifications my way.

Share this post


Link to post
Share on other sites

I would like to suggest that the payment page be revamped as well. So many of my customers do not see (or click) the radio button to the right of the payment option. The just enter their CC information, and continue on. When they come to the confirmation page, they are sent back to the payment page without any explanation.

 

So, a revamped payment page is high on my list. Has anyone done this already?


John Skurka

Share this post


Link to post
Share on other sites

To reduce the need for one of the clicks for new customers (which is most people) i would like to see this on the log-in page:

 

http://www.chantcd.com/index.php?page=chec...submit=Checkout

 

To replace:

 

http://www.oscommerce.com/osCommerce22ms2/login.php

 

and

 

http://www.oscommerce.com/osCommerce22ms2/create_account.php

 

Should be very easy for some of you with more skills than me.

Share this post


Link to post
Share on other sites

Hello

 

Great suggestments all over the place and here is what I wish to see:

 

FIRST:

 

I like to be able to set the countries I except for my store in terms of shipping and billing address (both individual) in the admin section.

 

With this done, the customer will never be able to sign up or choose a country I do not want to except (Billing address Afganistan, eg....).

 

SECOND:

 

When it comes to virtual products (Downloads, vouchers) the system would not check the shipping country, but still the billing country.

 

On the LogIn page I like to be able to input the code for the voucher or coupon (when I offer such service).

 

The customer easer logIn, create an account or purchaise without creating an account.

 

The shipping and payment page is on one page.

When you offer more than one shipping and payment methode, like us, it would be nice to show under each shipping methode the coresponding payment methodes. In my case it would be something like this:

 

Shipping

Japan Postal Service

(Ground) Prefered time for delivery (Morning)

Payment

Japan Postal Account

COD (cost 250Yen)

 

Shipping

UPS Japan

(Ground) Prefered time for delivery (8am - 12am)

Payment

Bank Account

COD (cost 350Yen)

ATM

 

This way the customer can choose the shipping (the shipping cost are displayed)

and under the shipping he will find the payment options and has to make a choice with a radio button.

 

When he confirm this page a java script check has to be done and if everything is fine he will see the checkout summery page.

 

What do you think?

 

Rich

 

:lol:

Share this post


Link to post
Share on other sites
I would like to suggest that the payment page be revamped as well.  So many of my customers do not see (or click) the radio button to the right of the payment option.  The just enter their CC information, and continue on.  When they come to the confirmation page, they are sent back to the payment page without any explanation.

 

So, a revamped payment page is high on my list.  Has anyone done this already?

 

I agree.. Many of my customers I think get very frustrated on this. What is the point of having a radio box when a simple if statement can easily detect the customers payment preference by their credit card number entry? It makes no sense.

 

My suggestions:

 

Make account creation seamless, send password after info is entered during the checkout process..

Keep billing and shipping information on same page.. Keep everything above the fold if possible.

Card expiration date fields should default to end of current month, or no entry at all with error checking. - the latter would probably be best.

Share this post


Link to post
Share on other sites

Hi everyone

 

I'm also looking for simpler way of checkout. I came across this contribution, and it looks very promising and what we looking for.

 

Contribution:

http://www.oscommerce.com/community/contributions,2197

 

support forum:

http://forums.oscommerce.com/index.php?act=ST&f=20&t=98630

 

I tried installing it yesterday but it doesn't work 100% correctly, im not sure if it is a bug, or I did something wrong during install. I will try reinstalling again tonight.

 

I think this is a good start, and maybe with a little tweaking we can make it work correctly.

 

Please post your comments.

 

Andrew

Share this post


Link to post
Share on other sites
I have searched but found no answer. has anyone been able to combine the checkout_shipping.php and the checkout_payment.php pages yet?

 

Thanks

 

 

I get more folks checking out that choke on the shipping/billing address then anything else. Their credit cards don't go through because they are shipping to a different address then the billing address and they don't change it, or get confused.

 

Personally I think a lot of headaches would be fixed if there was a page that had the user fill in "Shipping Address" and "Billing Address" (with a check box if it was the same) when they first created an account. Would clear up alot of confusion, at least with my customers. The first person who creates the "1 page shipping/billing address" form will probably be one damn popular guy :P

Share this post


Link to post
Share on other sites

I've been able to combine checkout_shipping.php and checkout_payment.php onto one page. I'm going to clean up and comment the code tomorrow and post it here.

Share this post


Link to post
Share on other sites

This code is ALPHA

 

USE THIS CODE FOR TESTING PURPOSES ONLY

 

Known bugs: Only works with one payment module activated. If more than one module is activated, the radio buttons do not carry a "checked" value when the form is submitted, which causes redirection back to checkout_payment.php.

 

Possible bugs: For some reason my UPS module isn't catching the country the first time around loading checkout_shipping.php.

 

Tested with:

 

- PWA - Purchase Without Account

- Regular account

- All default shipping modules (multiple activated at once) except USPS

- Paypal IPN and check/money order

 

Notes:

 

- I haven't tested this with a virtual product yet.

- All javascript has been removed for now.

- Combining these two pages causes checkout_shipping.php to equal 30k in size.

- The checkout progress bar at the bottom has not been altered yet.

 

checkout_shipping.php code:

 

<?php

 require('includes/application_top.php');
 require('includes/classes/http_client.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));
 }
 
// register a random ID in the session to check throughout the checkout procedure
// against alterations in the shopping cart contents
 if (!tep_session_is_registered('cartID')) tep_session_register('cartID');
 $cartID = $cart->cartID;
   
 require(DIR_WS_CLASSES . 'order.php');
 $order = new order;
// load all enabled payment modules
 require(DIR_WS_CLASSES . 'payment.php');
 $payment_modules = new payment;
// load all enabled shipping modules
 require(DIR_WS_CLASSES . 'shipping.php');
 $shipping_modules = new shipping;
 
// 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 shipping destination address was selected, use the customers own address as default
 if (!tep_session_is_registered('sendto')) {
   tep_session_register('sendto');
   $sendto = $customer_default_address_id;
 } else {
// verify the selected shipping address
   $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)$sendto . "'");
   $check_address = tep_db_fetch_array($check_address_query);

   if ($check_address['total'] != '1') {
     $sendto = $customer_default_address_id;
     if (tep_session_is_registered('shipping')) tep_session_unregister('shipping');
   }
 }

// 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
   $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');
   }
 }

 if (!tep_session_is_registered('comments')) tep_session_register('comments');

// if the order contains only virtual products, forward the customer to the billing page as
// a shipping address is not needed
 if ($order->content_type == 'virtual') {
   if (!tep_session_is_registered('shipping')) tep_session_register('shipping');
   $shipping = false;
   $sendto = false;
   tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
 }
 
 $total_weight = $cart->show_weight();
 $total_count = $cart->count_contents();

 if ( defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') ) {
   $pass = false;

   switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
     case 'national':
       if ($order->delivery['country_id'] == STORE_COUNTRY) {
         $pass = true;
       }
       break;
     case 'international':
       if ($order->delivery['country_id'] != STORE_COUNTRY) {
         $pass = true;
       }
       break;
     case 'both':
       $pass = true;
       break;
   }

   $free_shipping = false;
   if ( ($pass == true) && ($order->info['total'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
     $free_shipping = true;

     include(DIR_WS_LANGUAGES . $language . '/modules/order_total/ot_shipping.php');
   }
 } else {
   $free_shipping = false;
 }
 
// process the selected shipping method
 if ( isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process') ) {
   if (!tep_session_is_registered('comments')) tep_session_register('comments');
   if (tep_not_null($HTTP_POST_VARS['comments'])) {
     $comments = tep_db_prepare_input($HTTP_POST_VARS['comments']);
   }

   if (!tep_session_is_registered('shipping')) tep_session_register('shipping');

   if ( (tep_count_shipping_modules() > 0) || ($free_shipping == true) ) {
     if ( (isset($HTTP_POST_VARS['shipping'])) && (strpos($HTTP_POST_VARS['shipping'], '_')) ) {
       $shipping = $HTTP_POST_VARS['shipping'];

       list($module, $method) = explode('_', $shipping);
       if ( is_object($$module) || ($shipping == 'free_free') ) {
         if ($shipping == 'free_free') {
           $quote[0]['methods'][0]['title'] = FREE_SHIPPING_TITLE;
           $quote[0]['methods'][0]['cost'] = '0';
         } else {
           $quote = $shipping_modules->quote($method, $module);
         }
         if (isset($quote['error'])) {
           tep_session_unregister('shipping');
         } else {
           if ( (isset($quote[0]['methods'][0]['title'])) && (isset($quote[0]['methods'][0]['cost'])) ) {
             $shipping = array('id' => $shipping,
                               'title' => (($free_shipping == true) ?  $quote[0]['methods'][0]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][0]['title'] . ')'),
                               'cost' => $quote[0]['methods'][0]['cost']);

             tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'));
           }
         }
       } else {
         tep_session_unregister('shipping');
       }
     }
   } else {
     $shipping = false;
               
     tep_redirect(tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'));
   }    
 }

// get all available shipping quotes
 $quotes = $shipping_modules->quote();

// if no shipping method has been selected, automatically select the cheapest method.
// if the modules status was changed when none were available, to save on implementing
// a javascript force-selection method, also automatically select the cheapest shipping
// method if more than one module is now enabled
 if ( !tep_session_is_registered('shipping') || ( tep_session_is_registered('shipping') && ($shipping == false) && (tep_count_shipping_modules() > 1) ) ) $shipping = $shipping_modules->cheapest();

 require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_SHIPPING);
 require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PAYMENT);
 
 $breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
 $breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<?php echo tep_draw_form('checkout_address', tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')) . tep_draw_hidden_field('action', 'process'); ?>
<table border="0" width="100%" cellspacing="3" cellpadding="3">
 <tr>
   <td width="<?php echo BOX_WIDTH; ?>" rowspan="2" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
   </table></td>
<!-- body_text //-->
<!-- begin shipping //-->
   <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
     <tr>
       <td>
 <table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
           <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_delivery.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
         <tr>
           <td class="main"><b><?php echo TABLE_HEADING_SHIPPING_ADDRESS; ?></b></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
               <td class="main" width="50%" valign="top"><?php echo TEXT_CHOOSE_SHIPPING_DESTINATION . '<br><br><a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING_ADDRESS, '', 'SSL') . '">' . tep_image_button('button_change_address.gif', IMAGE_BUTTON_CHANGE_ADDRESS) . '</a>'; ?></td>
               <td align="right" width="50%" valign="top"><table border="0" cellspacing="0" cellpadding="2">
                 <tr>
                   <td class="main" align="center" valign="top"><?php echo '<b>' . TITLE_SHIPPING_ADDRESS . '</b><br>' . tep_image(DIR_WS_IMAGES . 'arrow_south_east.gif'); ?></td>
                   <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
                   <td class="main" valign="top"><?php echo tep_address_label($customer_id, $sendto, true, ' ', '<br>'); ?></td>
                   <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
                 </tr>
               </table></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
<?php
 if (tep_count_shipping_modules() > 0) {
?>
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
         <tr>
           <td class="main"><b><?php echo TABLE_HEADING_SHIPPING_METHOD; ?></b></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
<?php
   if (sizeof($quotes) > 1 && sizeof($quotes[0]) > 1) {
?>
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td class="main" width="50%" valign="top"><?php echo TEXT_CHOOSE_SHIPPING_METHOD; ?></td>
               <td class="main" width="50%" valign="top" align="right"><?php echo '<b>' . TITLE_PLEASE_SELECT . '</b><br>' . tep_image(DIR_WS_IMAGES . 'arrow_east_south.gif'); ?></td>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
             </tr>
<?php
   } elseif ($free_shipping == false) {
?>
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td class="main" width="100%" colspan="2"><?php echo TEXT_ENTER_SHIPPING_INFORMATION; ?></td>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
             </tr>
<?php
   }

   if ($free_shipping == true) {
?>
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td colspan="2" width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                 <tr>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td class="main" colspan="3"><b><?php echo FREE_SHIPPING_TITLE; ?></b> <?php echo $quotes[$i]['icon']; ?></td>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
                 <tr>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td class="main" width="100%"><?php echo sprintf(FREE_SHIPPING_DESCRIPTION, $currencies->format(MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER)) . tep_draw_hidden_field('shipping', 'free_free'); ?></td>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
               </table></td>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
             </tr>
<?php
   } else {
     $radio_buttons = 0;
     for ($i=0, $n=sizeof($quotes); $i<$n; $i++) {
?>
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td colspan="2"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                 <tr>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td class="main" colspan="3"><b><?php echo $quotes[$i]['module']; ?></b> <?php if (isset($quotes[$i]['icon']) && tep_not_null($quotes[$i]['icon'])) { echo $quotes[$i]['icon']; } ?></td>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
<?php
       if (isset($quotes[$i]['error'])) {
?>
                 <tr>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td class="main" colspan="3"><?php echo $quotes[$i]['error']; ?></td>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
<?php
       } else {
         for ($j=0, $n2=sizeof($quotes[$i]['methods']); $j<$n2; $j++) {
// set the radio button to be checked if it is the method chosen
           $checked = (($quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'] == $shipping['id']) ? true : false);

           if ( ($checked == true) || ($n == 1 && $n2 == 1) ) {
             echo '                  <tr>' . "\n";
           } else {
             echo '                  <tr>' . "\n";
           }
?>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td class="main" width="75%"><?php echo $quotes[$i]['methods'][$j]['title']; ?></td>
<?php
           if ( ($n > 1) || ($n2 > 1) ) {
?>
                   <td class="main"><?php echo $currencies->format(tep_add_tax($quotes[$i]['methods'][$j]['cost'], (isset($quotes[$i]['tax']) ? $quotes[$i]['tax'] : 0))); ?></td>
                   <td class="main" align="right"><?php echo tep_draw_radio_field('shipping', $quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'], $checked); ?></td>
<?php
           } else {
?>
                   <td class="main" align="right" colspan="2"><?php echo $currencies->format(tep_add_tax($quotes[$i]['methods'][$j]['cost'], $quotes[$i]['tax'])) . tep_draw_hidden_field('shipping', $quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id']); ?></td>
<?php
           }
?>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
<?php
           $radio_buttons++;
         }
       }
?>
               </table></td>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
             </tr>
<?php
     }
   }
?>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
<?php
 }
?>
   </table></td>
<!-- body_text_eof //-->
   <td width="<?php echo BOX_WIDTH; ?>" rowspan="2" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- right_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
<!-- right_navigation_eof //-->
   </table></td>
 </tr>
 <tr>
   <td valign="top">
<!-- begin payment //-->
<table border="0" width="100%" cellspacing="0" cellpadding="0">
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
           <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_payment.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
<?php
 if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) {
?>
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
         <tr>
           <td class="main"><b><?php echo tep_output_string_protected($error['title']); ?></b></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBoxNotice">
         <tr class="infoBoxNoticeContents">
           <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td class="main" width="100%" valign="top"><?php echo tep_output_string_protected($error['error']); ?></td>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
<?php
 }
?>
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
         <tr>
           <td class="main"><b><?php echo TABLE_HEADING_BILLING_ADDRESS; ?></b></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
               <td class="main" width="50%" valign="top"><?php echo TEXT_SELECTED_BILLING_DESTINATION; ?><br><br><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_PAYMENT_ADDRESS, '', 'SSL') . '">' . tep_image_button('button_change_address.gif', IMAGE_BUTTON_CHANGE_ADDRESS) . '</a>'; ?></td>
               <td align="right" width="50%" valign="top"><table border="0" cellspacing="0" cellpadding="2">
                 <tr>
                   <td class="main" align="center" valign="top"><b><?php echo TITLE_BILLING_ADDRESS; ?></b><br><?php echo tep_image(DIR_WS_IMAGES . 'arrow_south_east.gif'); ?></td>
                   <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
                   <td class="main" valign="top"><?php echo tep_address_label($customer_id, $billto, true, ' ', '<br>'); ?></td>
                   <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
                 </tr>
               </table></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
         <tr>
           <td class="main"><b><?php echo TABLE_HEADING_PAYMENT_METHOD; ?></b></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
<?php
 $selection = $payment_modules->selection();

 if (sizeof($selection) > 1) {
?>
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td class="main" width="50%" valign="top"><?php echo TEXT_SELECT_PAYMENT_METHOD; ?></td>
               <td class="main" width="50%" valign="top" align="right"><b><?php echo TITLE_PLEASE_SELECT; ?></b><br><?php echo tep_image(DIR_WS_IMAGES . 'arrow_east_south.gif'); ?></td>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
             </tr>
<?php
 } else {
?>
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td class="main" width="100%" colspan="2"><?php echo TEXT_ENTER_PAYMENT_INFORMATION; ?></td>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
             </tr>
<?php
 }

 $radio_buttons = 0;
 for ($i=0, $n=sizeof($selection); $i<$n; $i++) {
?>
             <tr>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td colspan="2"><table border="0" width="100%" cellspacing="0" cellpadding="2">
<?php
   if ( ($selection[$i]['id'] == $payment) || ($n == 1) ) {
     echo '                  <tr>' . "\n";
   } else {
     echo '                  <tr>' . "\n";
   }
?>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td class="main" colspan="3"><b><?php echo $selection[$i]['module']; ?></b></td>
                   <td class="main" align="right">
<?php
   if (sizeof($selection) > 1) {
     echo tep_draw_radio_field('payment', $selection[$i]['id']);
   } else {
     echo tep_draw_hidden_field('payment', $selection[$i]['id']);
   }
?>
                   </td>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
<?php
   if (isset($selection[$i]['error'])) {
?>
                 <tr>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td class="main" colspan="4"><?php echo $selection[$i]['error']; ?></td>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
<?php
   } elseif (isset($selection[$i]['fields']) && is_array($selection[$i]['fields'])) {
?>
                 <tr>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td colspan="4"><table border="0" cellspacing="0" cellpadding="2">
<?php
     for ($j=0, $n2=sizeof($selection[$i]['fields']); $j<$n2; $j++) {
?>
                     <tr>
                       <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                       <td class="main"><?php echo $selection[$i]['fields'][$j]['title']; ?></td>
                       <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                       <td class="main"><?php echo $selection[$i]['fields'][$j]['field']; ?></td>
                       <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                     </tr>
<?php
     }
?>
                   </table></td>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
<?php
   }
?>
               </table></td>
               <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
             </tr>
<?php
   $radio_buttons++;
 }
?>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
         <tr>
           <td class="main"><b><?php echo TABLE_HEADING_COMMENTS; ?></b></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
             <tr>
               <td><?php echo tep_draw_textarea_field('comments', 'soft', '60', '5'); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
         <tr class="infoBoxContents">
           <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
             <tr>
               <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
               <td class="main"><b><?php echo TITLE_CONTINUE_CHECKOUT_PROCEDURE . '</b><br>' . TEXT_CONTINUE_CHECKOUT_PROCEDURE; ?></td>
               <td class="main" align="right"><?php echo tep_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE); ?></td>
               <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
             </tr>
           </table></td>
         </tr>
       </table></td>
     </tr>
     <tr>
       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
     </tr>
     <tr>
       <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
         <tr>
           <td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
             <tr>
               <td width="50%" align="right"><?php echo tep_draw_separator('pixel_silver.gif', '1', '5'); ?></td>
               <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>
             </tr>
           </table></td>
           <td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
             <tr>
               <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>
               <td><?php echo tep_image(DIR_WS_IMAGES . 'checkout_bullet.gif'); ?></td>
               <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>
             </tr>
           </table></td>
           <td width="25%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>
           <td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
             <tr>
               <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>
               <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '1', '5'); ?></td>
             </tr>
           </table></td>
         </tr>
         <tr>
           <td align="center" width="25%" class="checkoutBarFrom"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '" class="checkoutBarFrom">' . CHECKOUT_BAR_DELIVERY . '</a>'; ?></td>
           <td align="center" width="25%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_PAYMENT; ?></td>
           <td align="center" width="25%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td>
           <td align="center" width="25%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_FINISHED; ?></td>
         </tr>
       </table></td>
     </tr>
   </table>
<!-- body_text_eof //-->
</td>
 </tr>
</table>
<!-- body_eof //-->
</form>
<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

Share this post


Link to post
Share on other sites

×