Jump to content
NimaP

One Page Checkout Support

Recommended Posts

Thank you for the reply.

 

This is what I got:

Notice: Undefined property: coupon in /home/content/b/e/a/beangarage/html/catalog/includes/classes/order.php on line 322

 

Notice: Undefined property: coupon in /home/content/b/e/a/beangarage/html/catalog/includes/classes/order.php on line 366

 

Notice: Undefined property: coupon in /home/content/b/e/a/beangarage/html/catalog/includes/modules/order_total/ot_discount_coupon.php on line 51

 

Notice: Undefined variable: pass in /home/content/b/e/a/beangarage/html/catalog/includes/modules/order_total/ot_shipping.php on line 41

Hi

 

Try the latest contribution 1.0.8

 

Steve

Share this post


Link to post
Share on other sites

does it make a difference to use $_POST['whatever'] instead of $HTTP_POST_VARS['whatever'] ?

Hi Kira,

 

If your php version is >= 4.0.1

$_POST['whatever'] will work fine

 

Steve

Share this post


Link to post
Share on other sites

Version 1.08 released, all known issues have been resolved. Thanks for your support and enjoy. http://addons.oscommerce.com/info/6646

 

I've installed the new version 8, which has fixed the issue with the telephone number not being captured - however the post code is now not being captured. I'm using the option where no account is required / optional.

 

The order details is placed directly into the orders table, but without the postcode.

 

Any thoughts, as this was working before?

Share this post


Link to post
Share on other sites

RE POSTCODE ERROR:

 

found the problem where the postcode is not captured, it's in the includes/classes/onepage_checkout.php file

 

around line 554

 

change

 

$order->{$varName}['postcode'] = tep_db_prepare_input($_POST[$prefix . 'zipcode']);

 

to

 

$order->{$varName}['postcode'] = tep_db_prepare_input($_POST[$prefix . 'postcode']);

Share this post


Link to post
Share on other sites

1.08 is a lot better although still has some major bugs:

 

In 1.07 there were a lot of errors caused by duplicate entries added into the customers table when the order was placed. This is now fixed first time round. However, if you place an order (dont enter a password) then enter another order (with the system already having logged in from the previous one) another customer is entered into the customers table with the same details. Ie causing a duplication of the email address which causes big problems.

 

The second major issue is the storing of session variables for the customer details. Again if multiple orders are placed on after the other it is possible to have the customer details based on session variables from a previous order while the shipping and billing address are correct. These variables are alto used to create the duplicate account as detailed above.

 

One thing that would resolve a lot of problems is a check to see if the email address exists before adding the customer into the customers table and causing duplication.

 

It would also be nice to have telephone as a required field.

 

Bring on 1.09 :)

Edited by andychev

Share this post


Link to post
Share on other sites

To reslove the multiple new duplicate customers problem detailed in my post above in includes/classes/onepage_checkout.php

 

Around line 755 Replace

------------------

function createCustomerAccount(){

global $currencies, $customer_id, $onepage, $customer_default_address_id, $customer_first_name, $customer_country_id, $customer_zone_id, $languages_id;

if ($onepage['createAccount'] === true){

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

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

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

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

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

 

$sql_data_array = array(

'customers_firstname' => $onepage['billing']['firstname'],

'customers_lastname' => $onepage['billing']['lastname'],

'customers_email_address' => $onepage['customer']['email_address'],

'customers_telephone' => $onepage['customer']['telephone'],

'customers_fax' => $onepage['customer']['fax'],

'customers_newsletter' => $onepage['customer']['newsletter'],

'customers_password' => tep_encrypt_password($onepage['customer']['password'])

);

 

if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $onepage['billing']['gender'];

if (ACCOUNT_DOB == 'true') $sql_data_array['customers_dob'] = tep_date_raw($onepage['customer']['dob']);

 

tep_db_perform(TABLE_CUSTOMERS, $sql_data_array);

 

 

------------------

With

------------------

function createCustomerAccount(){

global $currencies, $customer_id, $onepage, $customer_default_address_id, $customer_first_name, $customer_country_id, $customer_zone_id, $languages_id;

 

$check_query = tep_db_query("select count(*) as total from " . TABLE_CUSTOMERS . " where customers_email_address = '" . $onepage['customer']['email_address'] . "'");

$check_p = tep_db_fetch_array($check_query);

if ($check_p['total'] < 1) {

 

if ($onepage['createAccount'] === true){

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

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

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

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

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

 

$sql_data_array = array(

'customers_firstname' => $onepage['billing']['firstname'],

'customers_lastname' => $onepage['billing']['lastname'],

'customers_email_address' => $onepage['customer']['email_address'],

'customers_telephone' => $onepage['customer']['telephone'],

'customers_fax' => $onepage['customer']['fax'],

'customers_newsletter' => $onepage['customer']['newsletter'],

'customers_password' => tep_encrypt_password($onepage['customer']['password'])

);

 

if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $onepage['billing']['gender'];

if (ACCOUNT_DOB == 'true') $sql_data_array['customers_dob'] = tep_date_raw($onepage['customer']['dob']);

 

 

 

tep_db_perform(TABLE_CUSTOMERS, $sql_data_array);

 

}

---------------------

 

This will add a simple check to see whether the customer already exists in the customer table and skip adding them if they are. It also resolves the problem of logged in customers telephone numbers not being added to the orders table.

Share this post


Link to post
Share on other sites

I now only have design issues basically how everything looks.

 

I am wanting to change the layout of the sign in login box that uses the ui.css theme, I want to be able to design it specifically for each sts template rather than just have a default setting.

 

I have played around with the references etc and copied the files to the template directory I am using but its not working.

 

guessing now, but when I changed the references the box was drawn but without the formatting, css error, so it would appear that the link is either incorrect to the theme file in the template or I need to change some of the settings within the .css files?

 

can anyone point me in the right direction with this please.


Getting better with mods but no programmer am I.

Share this post


Link to post
Share on other sites

Everything works fine except for when enter a bad CC# in Authorize.net.

 

When I do, it returns the proper error, but the State field shows a red star next to it as if you need to re-select it.

Also, the Authorize.net table is collapsed. When you try to re-select the state, it doesn't work unless you select a different state first, then go back to the correct state. Doing this re-opens up the options for the Authorize.net entries.

 

When you enter an invalid CC# in Authorize.net, is there a way to carry over State properly so that the Authorize.net module is still showing properly? If not, is there a way to have the state option revert back to "Please Select" so the customer at least knows they need to re-select the state?

Share this post


Link to post
Share on other sites

In a version of ie7 the continue button does not show after filling in all fields it just keeps running the different updating texts in a loop.

The other thing I noticed is that I can enter anything I want in the phone nr field, is this supposed to be accepted?

Share this post


Link to post
Share on other sites

If I enter all shipping details and then change country, the continue button wont load. It stops at "Getting Country's Zones".

 

If I check the Error Console in Firefox I receive the following error:

Error: $el.get(0) is undefined

Source: http://www.URL.com/includes/checkout/checkout.js

Row: 39

I dont know if this has anyting t do with the error, since it appears in the error console if I upload the includes/checkout/checkout.js from version 1.07. But when I use it the continue button loads as it should.

 

There's also alot of warnings in the Error Console saying emty string sent to getElementById().

 

What is wrong and how can this be solved?

 

Thanks,

Fredrik

Share this post


Link to post
Share on other sites

I now only have design issues basically how everything looks.

 

I am wanting to change the layout of the sign in login box that uses the ui.css theme, I want to be able to design it specifically for each sts template rather than just have a default setting.

 

I have played around with the references etc and copied the files to the template directory I am using but its not working.

 

guessing now, but when I changed the references the box was drawn but without the formatting, css error, so it would appear that the link is either incorrect to the theme file in the template or I need to change some of the settings within the .css files?

 

can anyone point me in the right direction with this please.

Hi Johnny

 

Best to ask how to do that in STS support forum

 

Steve

Share this post


Link to post
Share on other sites

In a version of ie7 the continue button does not show after filling in all fields it just keeps running the different updating texts in a loop.

The other thing I noticed is that I can enter anything I want in the phone nr field, is this supposed to be accepted?

Hi

 

I dont think there is any validation on phone number

 

Steve

Share this post


Link to post
Share on other sites

If I enter all shipping details and then change country, the continue button wont load. It stops at "Getting Country's Zones".

 

If I check the Error Console in Firefox I receive the following error:

Error: $el.get(0) is undefined

Source: http://www.URL.com/includes/checkout/checkout.js

Row: 39

I dont know if this has anyting t do with the error, since it appears in the error console if I upload the includes/checkout/checkout.js from version 1.07. But when I use it the continue button loads as it should.

 

There's also alot of warnings in the Error Console saying emty string sent to getElementById().

 

What is wrong and how can this be solved?

 

Thanks,

Fredrik

 

Hi Fredrik

 

Check the installation instructions to make sure you havent missed anything out, it looks like some javascript isnt being loaded or called

 

Steve

Share this post


Link to post
Share on other sites

Everything works fine except for when enter a bad CC# in Authorize.net.

 

When I do, it returns the proper error, but the State field shows a red star next to it as if you need to re-select it.

Also, the Authorize.net table is collapsed. When you try to re-select the state, it doesn't work unless you select a different state first, then go back to the correct state. Doing this re-opens up the options for the Authorize.net entries.

 

When you enter an invalid CC# in Authorize.net, is there a way to carry over State properly so that the Authorize.net module is still showing properly? If not, is there a way to have the state option revert back to "Please Select" so the customer at least knows they need to re-select the state?

Hi

 

Im not sure on this please report the bug to kjavitz @ itwebexperts.com join email together

 

Steve

Share this post


Link to post
Share on other sites

Hi Fredrik

 

Check the installation instructions to make sure you havent missed anything out, it looks like some javascript isnt being loaded or called

 

Steve

Thanks for your reply Steve.

 

I use STS, so I deactivated STS in sts_display_output.php, but the problem remained.

I then uploaded includes/checkout/checkout.js from version 1.07 and then the continue-button was loaded after I change the countries. But If I skipped to choose a payment option and hit the continue-button I received the pre_confirmation_check error.

 

Then I changed

checkAllErrors();

to

return checkAllErrors();

in includes/checkout/checkout.js (version 1.07) at line 795.

 

And then it seems to work. But I found all this a bit odd.

Edited by redrum

Share this post


Link to post
Share on other sites

HI All.

 

I have just installed 1.08, and everything seems OK until I get to the last step.

Using paypal standard, you can order items, pay (payments work) and then when you click on the link to return to my web site (from Paypal), I get this error message

 

Fatal error: Call to a member function getAddressFormatted() on a non-object in /...../public_html/catalog3/includes/modules/payment/paypal_standard.php on line 522

 

I had the same problem in v1.07

 

The line in question is here

 

/* One Page Checkout - BEGIN */

$sendToFormatted = tep_address_label($customer_id, $sendto, 0, '', "\n");

if (ONEPAGE_CHECKOUT_ENABLED == 'True'){

---> $sendToFormatted = $onePageCheckout->getAddressFormatted('sendto');

}

 

$billToFormatted = tep_address_label($customer_id, $billto, 0, '', "\n");

if (ONEPAGE_CHECKOUT_ENABLED == 'True'){

$billToFormatted = $onePageCheckout->getAddressFormatted('billto');

}

/* One Page Checkout - END */

 

I don't understand why the return page is calling paypal_standard.php anyway - shouldn't it be calling checkout_success ???

 

Can anyone confirm the correct return page please ? (or have any ideas about this prob) ??

 

Thanks

 

Hardy

Share this post


Link to post
Share on other sites

Ok....i've tried installing all of the versions and the best I can get is the page to load...but nothing else to work.

I get a JS error coming from line 297 on checkout.php where there is $(document).ready(function () {

The JS error I get in IE references that line and says "Object Expected"

 

My php is pretty good....but not JS or Ajax.

 

Any ideas / help?

Share this post


Link to post
Share on other sites

Even weirder (sp?) I just tried installing it on another site and I get a 100% blank page....but doing a view source shows me all the html code / script

Share this post


Link to post
Share on other sites

Even weirder (sp?) I just tried installing it on another site and I get a 100% blank page....but doing a view source shows me all the html code / script

Blank page is a php error,

 

look in your hosts error log if they have one

 

if not after

  require('includes/application_top.php');

 

add

 

error_reporting(E_ALL);
ini_set('display_errors', '1');

 

now view that page again and see what the errors are

 

Steve

Share this post


Link to post
Share on other sites

HI All.

 

I have just installed 1.08, and everything seems OK until I get to the last step.

Using paypal standard, you can order items, pay (payments work) and then when you click on the link to return to my web site (from Paypal), I get this error message

 

Fatal error: Call to a member function getAddressFormatted() on a non-object in /...../public_html/catalog3/includes/modules/payment/paypal_standard.php on line 522

 

I had the same problem in v1.07

 

The line in question is here

 

/* One Page Checkout - BEGIN */

$sendToFormatted = tep_address_label($customer_id, $sendto, 0, '', "\n");

if (ONEPAGE_CHECKOUT_ENABLED == 'True'){

---> $sendToFormatted = $onePageCheckout->getAddressFormatted('sendto');

}

 

$billToFormatted = tep_address_label($customer_id, $billto, 0, '', "\n");

if (ONEPAGE_CHECKOUT_ENABLED == 'True'){

$billToFormatted = $onePageCheckout->getAddressFormatted('billto');

}

/* One Page Checkout - END */

 

I don't understand why the return page is calling paypal_standard.php anyway - shouldn't it be calling checkout_success ???

 

Can anyone confirm the correct return page please ? (or have any ideas about this prob) ??

 

Thanks

 

Hardy

Hi Hardy

 

paypal standard has its own process order, if you can get paypal to direct you back to checkout_process.php that will be good if not try making changes to paypal standard that contribution asked you to make to checkout_process

 

steve

Share this post


Link to post
Share on other sites

Sorry for my english. Two serius bugs encountered in new 1.08 version:

 

1. When a customer is logged in, you can not select shipping methods until you re-select shipping address in Addres Book and press Continue button.

 

2. When a customer is logged id and press continue to finish order and not selected any payment method you get an error same this:

 

Fatal error: Call to a member function on a non-object in /home/shop/includes/classes/onepage_checkout.php on line 716

 

IMPORTANT NOTE: This errors not occurs if customer log in in checkout.php page.

 

 

Tips usefull for next version:

 

1. Telephone Number must be required (order without telephone contact are not good for the majority of shops)

 

2. There are too many people that would like to use Paypal_ipn with this contribution but get the duplicate orders problem (one order from paypal_ipn module that is the correct to get de ipn status and another order from checkot.php and checkout_process.php). The ideal thing would be to get only the paypal_ipn created order

 

Best regards....

Edited by emmet11

Share this post


Link to post
Share on other sites

Blank page is a php error,

 

look in your hosts error log if they have one

 

if not after

  require('includes/application_top.php');

 

add

 

error_reporting(E_ALL);
ini_set('display_errors', '1');

 

now view that page again and see what the errors are

 

Steve

 

 

Steve - thanks for the fast reply. I think I mispoke about a "blank page"

What I meant is the script is not loading. I have error reporting turned on. There actually is something at the very bottom of the page - my page parse time.

And I can get the header and footer to load for the site.

 

But the middle body content that hold the checkout script is blank.

 

If I edit the script and remove the line: style="display:show;"

The I get the page but nothing works.

 

Its like the JQuery is not being loaded for the id="pageContentContainer"

 

I get a javascript error that points to

 

$(document).ready(function (){

 

And that the Object is not defined.

 

Thanks again for any ideas suggestions!!!

Edited by Monk

Share this post


Link to post
Share on other sites

Sorry for my english. Two serius bugs encountered in new 1.08 version:

 

1. When a customer is logged in, you can not select shipping methods until you re-select shipping address in Addres Book and press Continue button.

 

2. When a customer is logged id and press continue to finish order and not selected any payment method you get an error same this:

 

Fatal error: Call to a member function on a non-object in /home/shop/includes/classes/onepage_checkout.php on line 716

 

IMPORTANT NOTE: This errors not occurs if customer log in in checkout.php page.

 

 

 

 

I've solved this questions:

 

Open checkout.js and find:

 

this.updateFinalProductListing();
this.updateOrderTotals();

 

Change it to:

 

checkoutClass.updateShippingMethods();
this.updateFinalProductListing();
this.updateOrderTotals();

 

Open checkout/payment_method.php:

 

search for:

 

 if ($paymentMethod == ''){
$paymentMethod = ONEPAGE_DEFAULT_PAYMENT;
 }

 

and comment it to:

 

//  if ($paymentMethod == ''){
//$paymentMethod = ONEPAGE_DEFAULT_PAYMENT;
// }

 

This solves the probems.

 

Regards...

Share this post


Link to post
Share on other sites

I forgot to show you how to set required phone number:

 

In checkout/billing_address.php change:

 

<td class="main"><?php echo ENTRY_TELEPHONE; ?><br><?php echo tep_draw_input_field('billing_telephone', (isset($customerAddress) ? $customerAddress['telephone'] : ''), 'style="width:80%;float:left;"'); ?></td>

 

to:

 

<td class="main"><?php echo ENTRY_TELEPHONE; ?><br><?php echo tep_draw_input_field('billing_telephone', (isset($customerAddress) ? $customerAddress['telephone'] : ''), 'class="required" style="width:80%;float:left;"'); ?></td>

 

Regards!!

Share this post


Link to post
Share on other sites

I forgot to show you how to set required phone number:

 

In checkout/billing_address.php change:

 

<td class="main"><?php echo ENTRY_TELEPHONE; ?><br><?php echo tep_draw_input_field('billing_telephone', (isset($customerAddress) ? $customerAddress['telephone'] : ''), 'style="width:80%;float:left;"'); ?></td>

 

to:

 

<td class="main"><?php echo ENTRY_TELEPHONE; ?><br><?php echo tep_draw_input_field('billing_telephone', (isset($customerAddress) ? $customerAddress['telephone'] : ''), 'class="required" style="width:80%;float:left;"'); ?></td>

 

Regards!!

 

Hi emmet - have you ever encountered the error that I am having posted above??

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×