Zen Cart Logo
Forums / All Other Contributions/Addons / One-Page Checkout [Support Thread]

One-Page Checkout [Support Thread]

Views: 628,918

Results 41 to 60 of 3,073
07 Aug 2016, 11:38
#41
frank18 avatar

frank18

Deceased

Join Date:
Nov 2007
Location:
Sunny Coast, Australia
Posts:
3,427
Plugin Contributions:
2

One-Page Checkout [Support Thread]

lat9:

Thanks for that, Frank. I'll just note that any changes to the One-Page Checkout's default templates should be treated just like any other template-override, i.e. copy the file from /includes/templates/template_default/templates into /includes/templates/YOUR_TEMPLATE/templates before making those changes!

Otherwise, those changes (like the ones to the page's header_php.php) will be overwritten on a plugin update (unless you remember where you made those changes).

Makes sense Cindy - noted. Pls check PM

08 Aug 2016, 12:10
#42
lat9 avatar

lat9

Administrator

Join Date:
Sep 2009
Location:
Stuart, FL
Posts:
14,065
Plugin Contributions:
56

Re: One-Page Checkout [Support Thread]

Grrr, :censored: IE. Why do I always leave the testing of that browser for the end?

Turns out that the checkout_one page's form doesn't submit properly on IE (IE-11, at least) and just redisplays the checkout_one page on submit-key click.

The issue is that by disabling the HTML <div> in which the submit-button resides on-click, IE disables ***all ***the hidden-input variables in that section as well, so the plugin's confirmation page doesn't "see" that it was a real form-submit and redirects back to the main checkout page.

That said, a two-line change to /includes/modules/pages/checkout_one/jscript_main.php is required (it'll be staged for v1.0.2 in the plugin's GitHub repository). Towards the bottom of the file, find:

    $('form[name="checkout_payment"]').submit(function() {
        zcLog2Console ('Form submitted, orderConfirmed ('+orderConfirmed+')');
        if (orderConfirmed) {
            $('#checkoutOneSubmit').attr('disabled', true);
<?php 
if ($flagOnSubmit) { 
?>
            var formPassed = check_form();
            zcLog2Console ('Form checked, passed ('+formPassed+')');
            if (formPassed == false) {
                $('#checkoutOneSubmit').attr('disabled', false);
            }
            return formPassed;
<?php 
} 
?>
        }
    });

and make the two highlighted changes:

    $('form[name="checkout_payment"]').submit(function() {
        zcLog2Console ('Form submitted, orderConfirmed ('+orderConfirmed+')');
        if (orderConfirmed) {
            $('#[B]confirm-order[/B]').attr('disabled', true);
<?php 
if ($flagOnSubmit) { 
?>
            var formPassed = check_form();
            zcLog2Console ('Form checked, passed ('+formPassed+')');
            if (formPassed == false) {
                $('#[B]confirm-order[/B]').attr('disabled', false);
            }
            return formPassed;
<?php 
} 
?>
        }
    });
08 Aug 2016, 15:21
#43
fjbern1943 avatar

fjbern1943

Zen Follower

Join Date:
Apr 2015
Location:
United States
Posts:
144
Plugin Contributions:
0

Re: One-Page Checkout [Support Thread]

lat9:

Grrr, :censored: IE. Why do I always leave the testing of that browser for the end?

Turns out that the checkout_one page's form doesn't submit properly on IE (IE-11, at least) and just redisplays the checkout_one page on submit-key click.

The issue is that by disabling the HTML <div> in which the submit-button resides on-click, IE disables ***all ***the hidden-input variables in that section as well, so the plugin's confirmation page doesn't "see" that it was a real form-submit and redirects back to the main checkout page.

That said, a two-line change to /includes/modules/pages/checkout_one/jscript_main.php is required (it'll be staged for v1.0.2 in the plugin's GitHub repository). Towards the bottom of the file, find:

$('form[name="checkout_payment"]').submit(function() {
    zcLog2Console ('Form submitted, orderConfirmed ('+orderConfirmed+')');
    if (orderConfirmed) {
        $('#checkoutOneSubmit').attr('disabled', true);
<?php if ($flagOnSubmit) { ?>
        var formPassed = check_form();
        zcLog2Console ('Form checked, passed ('+formPassed+')');
        if (formPassed == false) {
            $('#checkoutOneSubmit').attr('disabled', false);
        }
        return formPassed;
<?php } ?>
    }
});
> and make the two highlighted changes:
> ```
    $('form[name="checkout_payment"]').submit(function() {
        zcLog2Console ('Form submitted, orderConfirmed ('+orderConfirmed+')');
        if (orderConfirmed) {
            $('#[B]confirm-order[/B]').attr('disabled', true);
<?php 
if ($flagOnSubmit) { 
?>
            var formPassed = check_form();
            zcLog2Console ('Form checked, passed ('+formPassed+')');
            if (formPassed == false) {
                $('#[B]confirm-order[/B]').attr('disabled', false);
            }
            return formPassed;
<?php 
} 
?>
        }
    });

Hello,

I am unhappy to report that I am having a problem with this plugin when trying to use Braintree Credit Card Processor.

I have version 1.01 installed and the above modifications. I can't tell you if it was working before with version 1.00 because I assumed it was working because the payment method appeared on the one-page checkout form but I never really tested it. Shame on me!

I am getting this error in my logs:

[08-Aug-2016 07:30:55 America/Chicago] PHP Parse error: syntax error, unexpected T_STRING in /hsphere/local/home/religiousshop/religious-shop.com/includes/languages/english/responsive_sheffield_blue/checkout_confirmation.php on line 15

I have debug turned on in the admin for this plugin nd here is a copy of it:

2016-08-08 08:02:02 checkout_one_observer: checkout_one redirect: Array
(
[main_page] => checkout_shipping
)

2016-08-08 08:02:03 checkout_one: CHECKOUT_ONE_ENTRY, version (1.0.1 (2016-08-06)), Zen Cart version (1.5.4), template (responsive_sheffield_blue)
2016-08-08 08:02:03 checkout_one: CHECKOUT_ONE_AFTER_SHIPPING_CALCULATIONS, pass (), free_shipping (), array (
'id' => 'freeoptions_freeoptions',
'title' => 'Free Shipping Options (Free Shipping)',
'cost' => 0,
'extras' => '',
)
2016-08-08 08:02:06 checkout_one: CHECKOUT_ONE_SHIPPING_CHECK (freeoptions_freeoptions)
Array
(
[0] => Array
(
[id] => freeoptions
[module] => Free Shipping Options
[methods] => Array
(
[0] => Array
(
[id] => freeoptions
[title] => Free Shipping
[cost] => 0
)

            )

    )

[1] => Array
    (
        [id] => usps
        [module] => United States Postal Service (1 Boxes)  (0 lbs, 8 oz)
        [methods] => Array
            (
                [0] => Array
                    (
                        [id] => First-Class Mail Parcel
                        [title] => First-Class Mail Parcel (2 - 5 days)
                        [cost] => 8.9
                        [insurance] => 0
                    )

                [1] => Array
                    (
                        [id] => Priority MailTM
                        [title] => Priority Mail™ (2 - 3 days)
                        [cost] => 11.25
                        [insurance] => 0.00
                    )

            )

        [tax] => 
        [icon] => <img src="includes/templates/template_default/images/icons/shipping_usps.gif" alt="United States Postal Service" title=" United States Postal Service " width="50" height="13" />
    )

[2] => Array
    (
        [id] => fedexwebservices
        [module] => FedEx (1 x 0.50lbs)
        [info] => 
        [methods] => Array
            (
                [0] => Array
                    (
                        [id] => PRIORITYOVERNIGHT
                        [title] => Priority Overnight
                        [cost] => 34.28
                    )

                [1] => Array
                    (
                        [id] => STANDARDOVERNIGHT
                        [title] => Standard Overnight
                        [cost] => 31.96
                    )

                [2] => Array
                    (
                        [id] => FEDEX2DAY
                        [title] => Fedex 2 Day
                        [cost] => 23.62
                    )

                [3] => Array
                    (
                        [id] => FEDEXEXPRESSSAVER
                        [title] => Fedex Express Saver
                        [cost] => 22.73
                    )

                [4] => Array
                    (
                        [id] => GROUNDHOMEDELIVERY
                        [title] => Ground Home Delivery (1 business day)
                        [cost] => 13.88
                    )

            )

    )

)

Array
(
[0] => freeoptions_freeoptions
[1] => usps_First-Class Mail Parcel
[2] => usps_Priority MailTM
[3] => fedexwebservices_PRIORITYOVERNIGHT
[4] => fedexwebservices_STANDARDOVERNIGHT
[5] => fedexwebservices_FEDEX2DAY
[6] => fedexwebservices_FEDEXEXPRESSSAVER
[7] => fedexwebservices_GROUNDHOMEDELIVERY
)

2016-08-08 08:02:06 checkout_one: CHECKOUT_ONE_AFTER_SHIPPING_QUOTES
array (
'id' => 'freeoptions_freeoptions',
'title' => 'Free Shipping Options (Free Shipping)',
'cost' => 0,
'extras' => '',
)order Object
(
[info] => Array
(
[order_status] => 1
[currency] => USD
[currency_value] => 1.00000000
[payment_method] =>
[payment_module_code] =>
[coupon_code] =>
[shipping_method] => Free Shipping Options (Free Shipping)
[shipping_module_code] => freeoptions_freeoptions
[shipping_cost] => 0
[subtotal] => 8.1
[shipping_tax] =>
[tax] => 0
[total] => 8.1
[tax_groups] => Array
(
[0] => 0
)

        [comments] => 
        [ip_address] => 96.245.162.177 - 96.245.162.177
    )

[totals] => Array
    (
    )

[products] => Array
    (
        [0] => Array
            (
                [qty] => 1
                [name] => Round Swarovski Dark Amethyst Birthstones
                [model] => CB506FEB
                [tax_groups] => Array
                    (
                        [0] => Sales Tax
                    )

                [tax_description] => Sales Tax
                [price] => 8.1000
                [final_price] => 8.1
                [vendors_id] => 3
                [vendors_name] => HMH
                [onetime_charges] => 0
                [weight] => 0.5
                [products_priced_by_attribute] => 0
                [product_is_free] => 0
                [products_discount_type] => 0
                [products_discount_type_from] => 0
                [id] => 3830
                [rowClass] => rowEven
                [tax] => 0
            )

    )

[customer] => Array
    (
        [firstname] => Frank
        [lastname] => Bernstein
        [company] => 
        [street_address] => 31115 Beaver Circle
        [suburb] => 
        [city] => Lewes
        [postcode] => 19958
        [state] => Delaware
        [zone_id] => 15
        [country] => Array
            (
                [id] => 223
                [title] => United States
                [iso_code_2] => US
                [iso_code_3] => USA
            )

        [format_id] => 2
        [telephone] => 3022978848
        [email_address] => [email protected]
    )

[delivery] => Array
    (
        [firstname] => Frank
        [lastname] => Bernstein
        [company] => 
        [street_address] => 31115 Beaver Circle
        [suburb] => 
        [city] => Lewes
        [postcode] => 19958
        [state] => Delaware
        [zone_id] => 15
        [country] => Array
            (
                [id] => 223
                [title] => United States
                [iso_code_2] => US
                [iso_code_3] => USA
            )

        [country_id] => 223
        [format_id] => 2
    )

[content_type] => physical
[email_low_stock] => 
[products_ordered_attributes] => 
[products_ordered] => 
[products_ordered_email] => 
[attachArray] => 
[billing] => Array
    (
        [firstname] => Frank
        [lastname] => Bernstein
        [company] => 
        [street_address] => 31115 Beaver Circle
        [suburb] => 
        [city] => Lewes
        [postcode] => 19958
        [state] => Delaware
        [zone_id] => 15
        [country] => Array
            (
                [id] => 223
                [title] => United States
                [iso_code_2] => US
                [iso_code_3] => USA
            )

        [country_id] => 223
        [format_id] => 2
    )

)
messageStack Object
(
[messages] => Array
(
)

)
Array
(
[0] => Array
(
[id] => freeoptions
[module] => Free Shipping Options
[methods] => Array
(
[0] => Array
(
[id] => freeoptions
[title] => Free Shipping
[cost] => 0
)

            )

    )

[1] => Array
    (
        [id] => usps
        [module] => United States Postal Service (1 Boxes)  (0 lbs, 8 oz)
        [methods] => Array
            (
                [0] => Array
                    (
                        [id] => First-Class Mail Parcel
                        [title] => First-Class Mail Parcel (2 - 5 days)
                        [cost] => 8.9
                        [insurance] => 0
                    )

                [1] => Array
                    (
                        [id] => Priority MailTM
                        [title] => Priority Mail™ (2 - 3 days)
                        [cost] => 11.25
                        [insurance] => 0.00
                    )

            )

        [tax] => 
        [icon] => <img src="includes/templates/template_default/images/icons/shipping_usps.gif" alt="United States Postal Service" title=" United States Postal Service " width="50" height="13" />
    )

[2] => Array
    (
        [id] => fedexwebservices
        [module] => FedEx (1 x 0.50lbs)
        [info] => 
        [methods] => Array
            (
                [0] => Array
                    (
                        [id] => PRIORITYOVERNIGHT
                        [title] => Priority Overnight
                        [cost] => 34.28
                    )

                [1] => Array
                    (
                        [id] => STANDARDOVERNIGHT
                        [title] => Standard Overnight
                        [cost] => 31.96
                    )

                [2] => Array
                    (
                        [id] => FEDEX2DAY
                        [title] => Fedex 2 Day
                        [cost] => 23.62
                    )

                [3] => Array
                    (
                        [id] => FEDEXEXPRESSSAVER
                        [title] => Fedex Express Saver
                        [cost] => 22.73
                    )

                [4] => Array
                    (
                        [id] => GROUNDHOMEDELIVERY
                        [title] => Ground Home Delivery (1 business day)
                        [cost] => 13.88
                    )

            )

    )

)

2016-08-08 08:02:06 checkout_one: CHECKOUT_ONE_AFTER_ORDER_TOTAL_PROCESSING
order_total Object
(
[modules] => Array
(
[0] => ot_subtotal.php
[1] => ot_shipping.php
[2] => ot_coupon.php
[3] => ot_group_pricing.php
[4] => ot_quantity_discount.php
[5] => ot_bogo.php
[6] => ot_tax.php
[7] => ot_loworderfee.php
[8] => ot_gv.php
[9] => ot_total.php
)

)
order Object
(
[info] => Array
(
[order_status] => 1
[currency] => USD
[currency_value] => 1.00000000
[payment_method] =>
[payment_module_code] =>
[coupon_code] =>
[shipping_method] => Free Shipping Options (Free Shipping)
[shipping_module_code] => freeoptions_freeoptions
[shipping_cost] => 0
[subtotal] => 8.1
[shipping_tax] =>
[tax] => 0
[total] => 8.1
[tax_groups] => Array
(
[0] => 0
)

        [comments] => 
        [ip_address] => 96.245.162.177 - 96.245.162.177
    )

[totals] => Array
    (
    )

[products] => Array
    (
        [0] => Array
            (
                [qty] => 1
                [name] => Round Swarovski Dark Amethyst Birthstones
                [model] => CB506FEB
                [tax_groups] => Array
                    (
                        [0] => Sales Tax
                    )

                [tax_description] => Sales Tax
                [price] => 8.1000
                [final_price] => 8.1
                [vendors_id] => 3
                [vendors_name] => HMH
                [onetime_charges] => 0
                [weight] => 0.5
                [products_priced_by_attribute] => 0
                [product_is_free] => 0
                [products_discount_type] => 0
                [products_discount_type_from] => 0
                [id] => 3830
                [rowClass] => rowEven
                [tax] => 0
            )

    )

[customer] => Array
    (
        [firstname] => Frank
        [lastname] => Bernstein
        [company] => 
        [street_address] => 31115 Beaver Circle
        [suburb] => 
        [city] => Lewes
        [postcode] => 19958
        [state] => Delaware
        [zone_id] => 15
        [country] => Array
            (
                [id] => 223
                [title] => United States
                [iso_code_2] => US
                [iso_code_3] => USA
            )

        [format_id] => 2
        [telephone] => 3022978848
        [email_address] => [email protected]
    )

[delivery] => Array
    (
        [firstname] => Frank
        [lastname] => Bernstein
        [company] => 
        [street_address] => 31115 Beaver Circle
        [suburb] => 
        [city] => Lewes
        [postcode] => 19958
        [state] => Delaware
        [zone_id] => 15
        [country] => Array
            (
                [id] => 223
                [title] => United States
                [iso_code_2] => US
                [iso_code_3] => USA
            )

        [country_id] => 223
        [format_id] => 2
    )

[content_type] => physical
[email_low_stock] => 
[products_ordered_attributes] => 
[products_ordered] => 
[products_ordered_email] => 
[attachArray] => 
[billing] => Array
    (
        [firstname] => Frank
        [lastname] => Bernstein
        [company] => 
        [street_address] => 31115 Beaver Circle
        [suburb] => 
        [city] => Lewes
        [postcode] => 19958
        [state] => Delaware
        [zone_id] => 15
        [country] => Array
            (
                [id] => 223
                [title] => United States
                [iso_code_2] => US
                [iso_code_3] => USA
            )

        [country_id] => 223
        [format_id] => 2
    )

)
messageStack Object
(
[messages] => Array
(
)

)

2016-08-08 08:02:06 checkout_one: CHECKOUT_ONE_AFTER_PAYMENT_MODULES_SELECTION
payment Object
(
[modules] => Array
(
[0] => braintree_api.php
[1] => moneyorder.php
[2] => freecharger.php
[3] => paypalwpp.php
[4] => layaway.php
)

[selected_module] => 
[doesCollectsCardDataOnsite] => 1
[paymentClass] => layaway Object
    (
        [code] => layaway
        [title] => Layaway Payments <br/>Available for orders above $300.00. This splits the cost of your order into monthly payments, Your first payment is due now, please send your down payment check to us as soon as possible. Your order will NOT ship until paid in full
        [description] => Monthly Payments 
        [icon] => 
        [enabled] => 1
        [sort_order] => 5
        [email_footer] => Layaway Payment Plan  

        [layaway_payment_lengths_list] => Array
            (
                [0] => 3 Months
                [1] =>  6 Months
            )

        [layaway_payment_lengths_list_dropdown] => Array
            (
                [0] => Array
                    (
                        [id] => 0
                        [text] => 3 Months
                    )

                [1] => Array
                    (
                        [id] => 1
                        [text] =>  6 Months
                    )

            )

    )

)
array (
'id' => 'freeoptions_freeoptions',
'title' => 'Free Shipping Options (Free Shipping)',
'cost' => 0,
'extras' => '',
)
2016-08-08 08:02:06 checkout_one: CHECKOUT_ONE_TEMPLATE_SHIPPING_QUOTES:
array (
'id' => 'freeoptions_freeoptions',
'title' => 'Free Shipping Options (Free Shipping)',
'cost' => 0,
'extras' => '',
)
array (
0 =>
array (
'id' => 'freeoptions',
'module' => 'Free Shipping Options',
'methods' =>
array (
0 =>
array (
'id' => 'freeoptions',
'title' => 'Free Shipping',
'cost' => 0,
),
),
),
1 =>
array (
'id' => 'usps',
'module' => 'United States Postal Service (1 Boxes) (0 lbs, 8 oz)',
'methods' =>
array (
0 =>
array (
'id' => 'First-Class Mail Parcel',
'title' => 'First-Class Mail Parcel (2 - 5 days)',
'cost' => 8.9,
'insurance' => 0,
),
1 =>
array (
'id' => 'Priority MailTM',
'title' => 'Priority Mail™ (2 - 3 days)',
'cost' => 11.25,
'insurance' => '0.00',
),
),
'tax' => NULL,
'icon' => '<img src="includes/templates/template_default/images/icons/shipping_usps.gif" alt="United States Postal Service" title=" United States Postal Service " width="50" height="13" />',
),
2 =>
array (
'id' => 'fedexwebservices',
'module' => 'FedEx (1 x 0.50lbs)',
'info' => '',
'methods' =>
array (
0 =>
array (
'id' => 'PRIORITYOVERNIGHT',
'title' => 'Priority Overnight',
'cost' => 34.28,
),
1 =>
array (
'id' => 'STANDARDOVERNIGHT',
'title' => 'Standard Overnight',
'cost' => 31.96,
),
2 =>
array (
'id' => 'FEDEX2DAY',
'title' => 'Fedex 2 Day',
'cost' => 23.62,
),
3 =>
array (
'id' => 'FEDEXEXPRESSSAVER',
'title' => 'Fedex Express Saver',
'cost' => 22.73,
),
4 =>
array (
'id' => 'GROUNDHOMEDELIVERY',
'title' => 'Ground Home Delivery (1 business day)',
'cost' => 13.88,
),
),
),
)

When I switch back to the old multi-page checkout everything works ok.

Please help,

Frank

08 Aug 2016, 16:07
#44
lat9 avatar

lat9

Administrator

Join Date:
Sep 2009
Location:
Stuart, FL
Posts:
14,065
Plugin Contributions:
56

Re: One-Page Checkout [Support Thread]

Frank, I appreciate the posting of the log file! Next time, though, you should post that (or any code-related items) using the "CODE" tags (the big # in the menu-bar as you're writing your post). That just places that information into a scrollable text-box so that the information doesn't occupy so much screen-space.

There are two issues ... first, the debug-log that you received. Find the following block in your /includes/languages/english/YOUR_TEMPLATE/checkout_confirmation.php (where, for your case, YOUR_TEMPLATE is responsive_sheffield_blue):

//-bof-one_page_checkout-lat9  *** 1 of 1 ***
if (defined ('CHECKOUT_ONE_ENABLED') && CHECKOUT_ONE_ENABLED == 'true') {
    define ('NAVBAR_TITLE_2', 'Review and Submit')
    define ('HEADING_TITLE', 'Review Order Details and Submit Your Order');
} else {
    define('NAVBAR_TITLE_2', 'Confirmation');

    define('HEADING_TITLE', 'Step 3 of 3 - Order Confirmation');
}
//-eof-one_page_checkout-lat9  *** 1 of 1 ***

and add that missing semi-colon:

//-bof-one_page_checkout-lat9  *** 1 of 1 ***
if (defined ('CHECKOUT_ONE_ENABLED') && CHECKOUT_ONE_ENABLED == 'true') {
    define ('NAVBAR_TITLE_2', 'Review and Submit')[B];[/B]
    define ('HEADING_TITLE', 'Review Order Details and Submit Your Order');
} else {
    define('NAVBAR_TITLE_2', 'Confirmation');

    define('HEADING_TITLE', 'Step 3 of 3 - Order Confirmation');
}
//-eof-one_page_checkout-lat9  *** 1 of 1 ***

Now, as to the Braintree payment method "not working", could you elaborate a bit on what's not working? I see from the log that the payment-method collects payment data on-site and you're running Zen Cart 1.5.4. I think you'd mentioned previously, but I have to ask: Have you copied the ajax.php and jscript_framework.php files from the plugin's /pre_zc155a folder to your store (and the template's jscript folder)?

08 Aug 2016, 17:23
#45
lat9 avatar

lat9

Administrator

Join Date:
Sep 2009
Location:
Stuart, FL
Posts:
14,065
Plugin Contributions:
56

Re: One-Page Checkout [Support Thread]

FWIW, I just created a Braintree sandbox account, installed and configured Braintree 1.3.1 and, with the ZC 1.5.5a responsive_classic template, successfully placed an order.

That said, @fjbern1943, I'm puzzled as to the source of the issue you're having.

09 Aug 2016, 11:30
#46
fjbern1943 avatar

fjbern1943

Zen Follower

Join Date:
Apr 2015
Location:
United States
Posts:
144
Plugin Contributions:
0

Re: One-Page Checkout [Support Thread]

lat9:

FWIW, I just created a Braintree sandbox account, installed and configured Braintree 1.3.1 and, with the ZC 1.5.5a responsive_classic template, successfully placed an order.

That said, @fjbern1943, I'm puzzled as to the source of the issue you're having.

Hello,

I added the ";" to the checkout_confirmation.php page. I had already uploaded the ajax.php and jscript_framework.php files from the plugin's /pre_zc155a folder. Everything now looks ok and was able to checkout with Braintree. So, the problem was only the missing ";" .

Thanks for the help.
Frank

09 Aug 2016, 12:13
#47
lat9 avatar

lat9

Administrator

Join Date:
Sep 2009
Location:
Stuart, FL
Posts:
14,065
Plugin Contributions:
56

Re: One-Page Checkout [Support Thread]

Thanks, @fjbern1943, for the update! That "missing semi-colon" fix is booked for the plugin's 1.0.2 release.

09 Aug 2016, 14:32
#48
fjbern1943 avatar

fjbern1943

Zen Follower

Join Date:
Apr 2015
Location:
United States
Posts:
144
Plugin Contributions:
0

Re: One-Page Checkout [Support Thread]

lat9:

Thanks, @fjbern1943, for the update! That "missing semi-colon" fix is booked for the plugin's 1.0.2 release.

Unfortunately I have another problem. I have a vendor type application installed on the site, which associates an order with a vendor, produces a packing slip pdf file which attaches to an email that is automatically sent to the vendor with our order information and packing slip. This works fine with the standard 3 page checkout but is not working with the new one-page checkout. The main file that has been modified to accomplish this is the includes/modules/checkout_process.php file which is called by the header_php.php file. I examined both of the regular checkout and checkout one files and can't see why the checkout_process file is not being called by the checkout one files.

This more than likely off topic but might be valuable for other zeners with this type or similar applications that might be called by the checkout_process.php file.

Any help or direction would be greatly appreciated.

Frank

09 Aug 2016, 14:37
#49
frank18 avatar

frank18

Deceased

Join Date:
Nov 2007
Location:
Sunny Coast, Australia
Posts:
3,427
Plugin Contributions:
2

Re: One-Page Checkout [Support Thread]

lat9:

Thanks, @fjbern1943, for the update! That "missing semi-colon" fix is booked for the plugin's 1.0.2 release.

Noted and done - thanks!

09 Aug 2016, 15:14
#50
lat9 avatar

lat9

Administrator

Join Date:
Sep 2009
Location:
Stuart, FL
Posts:
14,065
Plugin Contributions:
56

Re: One-Page Checkout [Support Thread]

fjbern1943:

Unfortunately I have another problem. I have a vendor type application installed on the site, which associates an order with a vendor, produces a packing slip pdf file which attaches to an email that is automatically sent to the vendor with our order information and packing slip. This works fine with the standard 3 page checkout but is not working with the new one-page checkout. The main file that has been modified to accomplish this is the includes/modules/checkout_process.php file which is called by the header_php.php file. I examined both of the regular checkout and checkout one files and can't see why the checkout_process file is not being called by the checkout one files.

This more than likely off topic but might be valuable for other zeners with this type or similar applications that might be called by the checkout_process.php file.

Any help or direction would be greatly appreciated.

Frank
Frank, the checkout_process functionality is untouched by the One-Page Checkout's processing. There might be, however, some changes that your application introduced into the checkout_payment/confirmation processing that are not getting picked up.

Are there any observer-class (i.e. /includes/classes/observers) modules that "help" with the operation? Or any additional header_php_xxxx.php files present in the /includes/modules/pages/checkout_payment or /includes/modules/pages/checkout_confirmation folders?

11 Aug 2016, 10:49
#51
fjbern1943 avatar

fjbern1943

Zen Follower

Join Date:
Apr 2015
Location:
United States
Posts:
144
Plugin Contributions:
0

Re: One-Page Checkout [Support Thread]

lat9:

Frank, the checkout_process functionality is untouched by the One-Page Checkout's processing. There might be, however, some changes that your application introduced into the checkout_payment/confirmation processing that are not getting picked up.

Are there any observer-class (i.e. /includes/classes/observers) modules that "help" with the operation? Or any additional header_php_xxxx.php files present in the /includes/modules/pages/checkout_payment or /includes/modules/pages/checkout_confirmation folders?

There aren't any additional header.php files or observers that I am aware of or can find but the vendor application does modify the checkout payment, process, shipping and confirmation pages. That should explain why the vendor application works with standard checkout process and not the one page checkout. I will try to merge these changes with the one page checkout files. I will let you know I make out.

Frank

Thanks for jogging my memory

11 Aug 2016, 11:22
#52
lat9 avatar

lat9

Administrator

Join Date:
Sep 2009
Location:
Stuart, FL
Posts:
14,065
Plugin Contributions:
56

Re: One-Page Checkout [Support Thread]

Darn it, another bug, this one occurs if the customer's applied a discount coupon to their order and then updated their shipping-method.

When that happens, a debug log similar to:

Call to a member function bindVars() on null in /dir_fs_catalog/classes/ajax/zcAjaxOnePageCheckout.php on line 34

gets generated.

The correction's simple: edit /includes/classes/ajax/zcAjaxOnePageCheckout.php (line 20), adding the $db to the list of globally-referenced variables:

        // -----
        // Since we're running as a function, need to declare the objects we're instantiating here, for use by the various classes
        // involved in creating the order's total-block.
        //
        global [B]$db, [/B]$order, $currencies, $checkout_one, $total_weight, $total_count, $discount_coupon;
        global $shipping_weight, $uninsurable_value, $shipping_quoted, $shipping_num_boxes, $current_page_base, $current_page, $template;
11 Aug 2016, 11:30
#53
frank18 avatar

frank18

Deceased

Join Date:
Nov 2007
Location:
Sunny Coast, Australia
Posts:
3,427
Plugin Contributions:
2

Re: One-Page Checkout [Support Thread]

lat9:

Darn it, another bug, this one occurs if the customer's applied a discount coupon to their order and then updated their shipping-method.

When that happens, a debug log similar to:

Call to a member function bindVars() on null in /dir_fs_catalog/classes/ajax/zcAjaxOnePageCheckout.php on line 34

> gets generated.
> 
> The correction's simple: edit /includes/classes/ajax/zcAjaxOnePageCheckout.php (line 20), adding the $db to the list of globally-referenced variables:
> ```
        // -----
        // Since we're running as a function, need to declare the objects we're instantiating here, for use by the various classes
        // involved in creating the order's total-block.
        //
        global [B]$db, [/B]$order, $currencies, $checkout_one, $total_weight, $total_count, $discount_coupon;
        global $shipping_weight, $uninsurable_value, $shipping_quoted, $shipping_num_boxes, $current_page_base, $current_page, $template;

Thank you Cindy, all noted and implemented :smile:

11 Aug 2016, 15:44
#54
fjbern1943 avatar

fjbern1943

Zen Follower

Join Date:
Apr 2015
Location:
United States
Posts:
144
Plugin Contributions:
0

Re: One-Page Checkout [Support Thread]

fjbern1943:

There aren't any additional header.php files or observers that I am aware of or can find but the vendor application does modify the checkout payment, process, shipping and confirmation pages. That should explain why the vendor application works with standard checkout process and not the one page checkout. I will try to merge these changes with the one page checkout files. I will let you know I make out.

Frank

Thanks for jogging my memory

As far as I can see there is no file correlation between my vendor application and one-page checkout.

The below code is from my existing checkout_confirmation.php page. Please note the two instances of MVS Start and End code. I think that this is the code I need to add to the one-page checkout plugin.

<?php
/*
  $Id$
  $Loc: /catalog/ $
  $Mod: MVS V1.3 Kymation $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2014 osCommerce

  Released under the GNU General Public License
*/

  require('includes/application_top.php');

// MVS start
  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PAYMENT);

// If a shipping method has not been selected for all vendors, redirect the customer to the shipping method selection page
  if (SELECT_VENDOR_SHIPPING == 'true') { // This test only works under MVS
    if (!is_array ($shipping['vendor']) || count ($shipping['vendor']) != count ($cart->vendor_shipping)) { // No shipping selected or not all selected
      tep_redirect (tep_href_link (FILENAME_CHECKOUT_SHIPPING, 'error_message=' . ERROR_NO_SHIPPING_SELECTED, 'SSL'));
    }
  }
// MVS end
  
// if the customer is not logged on, redirect them to the login page
  if (!tep_session_is_registered('customer_id')) {
    $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));
    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));
  }

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

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

  if (!tep_session_is_registered('payment')) tep_session_register('payment');
  if (isset($_POST['payment'])) $payment = $_POST['payment'];

  if (!tep_session_is_registered('comments')) tep_session_register('comments');
  if (isset($_POST['comments']) && tep_not_null($_POST['comments'])) {
    $comments = tep_db_prepare_input($_POST['comments']);
  }

// load the selected payment module
  require(DIR_WS_CLASSES . 'payment.php');
  $payment_modules = new payment($payment);

  require(DIR_WS_CLASSES . 'order.php');
  $order = new order;

  $payment_modules->update_status();

  if ( ($payment_modules->selected_module != $payment) || ( is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && !is_object($$payment) ) || (is_object($$payment) && ($$payment->enabled == false)) ) {
    tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL'));
  }

  if (is_array($payment_modules->modules)) {
    $payment_modules->pre_confirmation_check();
  }

// load the selected shipping module
//MVS start
  if (SELECT_VENDOR_SHIPPING == 'true') {
    include_once (DIR_WS_CLASSES . 'vendor_shipping.php');
  } else{
    include_once (DIR_WS_CLASSES . 'shipping.php');
  }
//MVS End
  $shipping_modules = new shipping($shipping);

  require(DIR_WS_CLASSES . 'order_total.php');
  $order_total_modules = new order_total;
  $order_total_modules->process();

// Stock Check
  $any_out_of_stock = false;
  if (STOCK_CHECK == 'true') {
    for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
      if (tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty'])) {
        $any_out_of_stock = true;
      }
    }
    // Out of Stock
    if ( (STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true) ) {
      tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
    }
  }

  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_CONFIRMATION);

  $breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
  $breadcrumb->add(NAVBAR_TITLE_2);

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

<h1><?php echo HEADING_TITLE; ?></h1>

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

  if (isset($$payment->form_action_url)) {
    $form_action_url = $$payment->form_action_url;
  } else {
    $form_action_url = tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL');
  }

  echo tep_draw_form('checkout_confirmation', $form_action_url, 'post');
?>

<div class="contentContainer">
  <h2><?php echo HEADING_SHIPPING_INFORMATION; ?></h2>

  <div class="contentText">
    <table border="0" width="100%" cellspacing="1" cellpadding="2">
      <tr>

<?php
  if ($sendto != false) {
?>

        <td width="30%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
          <tr>
            <td><?php echo '<strong>' . HEADING_DELIVERY_ADDRESS . '</strong> <a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING_ADDRESS, '', 'SSL') . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>'; ?></td>
          </tr>
          <tr>
            <td><?php echo tep_address_format($order->delivery['format_id'], $order->delivery, 1, ' ', '<br />'); ?></td>
          </tr>

<?php
    if ($order->info['shipping_method']) {
?>

          <tr>
            <td><?php echo '<strong>' . HEADING_SHIPPING_METHOD . '</strong> <a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>'; ?></td>
          </tr>
          <tr>
            <td><?php echo $order->info['shipping_method']; ?></td>
          </tr>
<?php
    }
?>

        </table></td>

<?php
  }
?>

        <td width="<?php echo (($sendto != false) ? '70%' : '100%'); ?>" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">

<?php
  if (sizeof($order->info['tax_groups']) > 1) {
?>

          <tr>
            <td colspan="2"><?php echo '<strong>' . HEADING_PRODUCTS . '</strong> <a href="' . tep_href_link(FILENAME_SHOPPING_CART) . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>'; ?></td>
            <td align="right"><strong><?php echo HEADING_TAX; ?></strong></td>
            <td align="right"><strong><?php echo HEADING_TOTAL; ?></strong></td>
          </tr>

<?php
  } else {
?>

          <tr>
            <td colspan="3"><?php echo '<strong>' . HEADING_PRODUCTS . '</strong> <a href="' . tep_href_link(FILENAME_SHOPPING_CART) . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>'; ?></td>
          </tr>

<?php
  }

  for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
    echo '          <tr>' . "\n" .
         '            <td align="right" valign="top" width="30">' . $order->products[$i]['qty'] . ' x</td>' . "\n" .
         '            <td valign="top">' . $order->products[$i]['name'];

    if (STOCK_CHECK == 'true') {
      echo tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty']);
    }

    if ( (isset($order->products[$i]['attributes'])) && (sizeof($order->products[$i]['attributes']) > 0) ) {
      for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
        echo '<br /><nobr><small> <i> - ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'] . '</i></small></nobr>';
      }
    }

    echo '</td>' . "\n";

    if (sizeof($order->info['tax_groups']) > 1) echo '            <td valign="top" align="right">' . tep_display_tax_value($order->products[$i]['tax']) . '%</td>' . "\n";

    echo '            <td align="right" valign="top">' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . '</td>' . "\n" .
         '          </tr>' . "\n";
  }
?>

        </table></td>
      </tr>
    </table>
  </div>

  <h2><?php echo HEADING_BILLING_INFORMATION; ?></h2>

  <div class="contentText">
    <table border="0" width="100%" cellspacing="1" cellpadding="2">
      <tr>
        <td width="30%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
          <tr>
            <td><?php echo '<strong>' . HEADING_BILLING_ADDRESS . '</strong> <a href="' . tep_href_link(FILENAME_CHECKOUT_PAYMENT_ADDRESS, '', 'SSL') . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>'; ?></td>
          </tr>
          <tr>
            <td><?php echo tep_address_format($order->billing['format_id'], $order->billing, 1, ' ', '<br />'); ?></td>
          </tr>
          <tr>
            <td><?php echo '<strong>' . HEADING_PAYMENT_METHOD . '</strong> <a href="' . tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL') . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>'; ?></td>
          </tr>
          <tr>
            <td><?php echo $order->info['payment_method']; ?></td>
          </tr>
        </table></td>
        <td width="70%" valign="top" align="right"><table border="0" cellspacing="0" cellpadding="2">

<?php
  if (MODULE_ORDER_TOTAL_INSTALLED) {
    echo $order_total_modules->output();
  }
?>

        </table></td>
      </tr>
    </table>
  </div>

<?php
  if (is_array($payment_modules->modules)) {
    if ($confirmation = $payment_modules->confirmation()) {
?>

  <h2><?php echo HEADING_PAYMENT_INFORMATION; ?></h2>

  <div class="contentText">
    <table border="0" cellspacing="0" cellpadding="2">
      <tr>
        <td colspan="4"><?php echo $confirmation['title']; ?></td>
      </tr>

<?php
      if (isset($confirmation['fields'])) {
        for ($i=0, $n=sizeof($confirmation['fields']); $i<$n; $i++) {
?>

      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
        <td class="main"><?php echo $confirmation['fields'][$i]['title']; ?></td>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
        <td class="main"><?php echo $confirmation['fields'][$i]['field']; ?></td>
      </tr>

<?php
        }
      }
?>

    </table>
  </div>

<?php
    }
  }

  if (tep_not_null($order->info['comments'])) {
?>

  <h2><?php echo '<strong>' . HEADING_ORDER_COMMENTS . '</strong> <a href="' . tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL') . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>'; ?></h2>

  <div class="contentText">
    <?php echo nl2br(tep_output_string_protected($order->info['comments'])) . tep_draw_hidden_field('comments', $order->info['comments']); ?>
  </div>

<?php
  }
?>

  <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="checkoutBarFrom"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL') . '" class="checkoutBarFrom">' . CHECKOUT_BAR_PAYMENT . '</a>'; ?></td>
          <td align="center" width="33%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td>
        </tr>
      </table>
    </div>

    <div style="float: right;">

<?php
  if (is_array($payment_modules->modules)) {
    echo $payment_modules->process_button();
  }

  echo tep_draw_button(IMAGE_BUTTON_CONFIRM_ORDER, 'check', null, 'primary');
?>

    </div>
  </div>

</div>

<script type="text/javascript">
$('#coProgressBar').progressbar({
  value: 100
});
</script>

</form>

<?php
  require(DIR_WS_INCLUDES . 'template_bottom.php');
  require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

It looks like the I need to modify the modules/pages/checkout_confirmation/header_php.php file to incorporate these changes.

Am I on the right track? Can you help me in making these changes?

Thanks,

Frank

11 Aug 2016, 15:52
#55
lat9 avatar

lat9

Administrator

Join Date:
Sep 2009
Location:
Stuart, FL
Posts:
14,065
Plugin Contributions:
56

Re: One-Page Checkout [Support Thread]

Frank, just so I understand ... you've got an application that runs *separately *from the "normal" storefront, i.e. you access that application as https://www.example.com/application_name.php (where the application_name.php file is in the root directory of your store)?

11 Aug 2016, 16:28
#56
fjbern1943 avatar

fjbern1943

Zen Follower

Join Date:
Apr 2015
Location:
United States
Posts:
144
Plugin Contributions:
0

Re: One-Page Checkout [Support Thread]

Hello Again, Thanks for the response.

The answer to your question is NO. In addition to the core files for this application there are also over writes of some of the store standard files.

The way this works is after the order is confirmed the order information is stored in the database in the normal manner but also stored as an order associated with a particular vendor.

Then the admin can access the order and the associated vendor order and is shown as an order associated with a particular vendor. At that point you can elect to have the vendor order sent automatically or manually to the vendor via email with a copy of the packing slip.

The only part of the application, that I can tell, that is not being passed by one-page checkout is the MVS stuff (Vendor Shipping) in the file above.

So I think that if there is no vendor shipping associated with the order then the application does not recognize it as vendor order. Just a presumption on my part since I did not write the application, done by third party, which I believe was a modification and ##############ization of the old zencart plugin, MVS with PDF.

I hope that explains things a little. If you need any additional information, please let me know.

Frank

11 Aug 2016, 16:39
#57
lat9 avatar

lat9

Administrator

Join Date:
Sep 2009
Location:
Stuart, FL
Posts:
14,065
Plugin Contributions:
56

Re: One-Page Checkout [Support Thread]

@fjbern1943, I'm still not getting it. Is this "application" something that gets invoked by your Zen Cart's admin-console ***after ***the customer has placed the order?

11 Aug 2016, 17:42
#58
fjbern1943 avatar

fjbern1943

Zen Follower

Join Date:
Apr 2015
Location:
United States
Posts:
144
Plugin Contributions:
0

Re: One-Page Checkout [Support Thread]

lat9:

@fjbern1943, I'm still not getting it. Is this "application" something that gets invoked by your Zen Cart's admin-console ***after ***the customer has placed the order?

Hello,

Every product is associated with a particular vendor. When a customer orders a product the information is not only registered in the database as an order in the regular way but is also associated with that particular vendor. After the order and vendor information is written to the database in the backend the order with packing slip is sent to the vendor again either automatically or by sending it manually in the admin by pushing a button.. This can be set in the vendor setup. Everything is drop shipped by the vendor, I do not normally carry any inventory.

This allows me to automate the ordering process with my vendors. Otherwise, I would have to send them an order by email manually. This was setup with the expectation that there would be a lot of orders to enter daily. I hope this helps to clarify what the application does and how it is used.

Frank

11 Aug 2016, 18:54
#59
lat9 avatar

lat9

Administrator

Join Date:
Sep 2009
Location:
Stuart, FL
Posts:
14,065
Plugin Contributions:
56

Re: One-Page Checkout [Support Thread]

Frank, since the code you posted in post#55 starts by loading application_top.php and ends by loading application_bottom.php, I've got to assume that the script either runs under the admin or is stand-alone running from the root of your store-front.

The only thing that I can think of that might work is for that script to have its own auto-load "prefix" so that the one-page checkout doesn't interfere with that after-order script.

First, copy the file /includes/auto_loaders/config.core.php to a file named mvs.core.php in the same folder. Next, modify that script you posted, adding the following statement just prior to the require for the application_top.php script:

$loaderPrefix = 'mvs';

That will result in that script processing like the one-page checkout wasn't in the picture since its observer won't be loaded due to the change in that loader-prefix value.

11 Aug 2016, 20:22
#60
fjbern1943 avatar

fjbern1943

Zen Follower

Join Date:
Apr 2015
Location:
United States
Posts:
144
Plugin Contributions:
0

Re: One-Page Checkout [Support Thread]

lat9:

Frank, since the code you posted in post#55 starts by loading application_top.php and ends by loading application_bottom.php, I've got to assume that the script either runs under the admin or is stand-alone running from the root of your store-front.

The only thing that I can think of that might work is for that script to have its own auto-load "prefix" so that the one-page checkout doesn't interfere with that after-order script.

First, copy the file /includes/auto_loaders/config.core.php to a file named mvs.core.php in the same folder. Next, modify that script you posted, adding the following statement just prior to the require for the application_top.php script:

$loaderPrefix = 'mvs';

> That will result in that script processing like the one-page checkout wasn't in the picture since its observer won't be loaded due to the change in that loader-prefix value.

Hello,
First let me thank you very much, especially since this is away off topic for this thread.

I will give this a try and see how I make out.  Seems like a very reasonable approach.

Frank