Как обойти страницу подтверждения заказа (One Page Checkout for PS 1.5)

Я вот так делал в 1.4, в шаблоне validation.tpl модуля cashondelivery

Код:
{*
* 2007-2012 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2012 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}

{capture name=path}{l s='Shipping' mod='cashondelivery'}{/capture}

<h2>{l s='Order summation' mod='cashondelivery'}</h2>

{assign var='current_step' value='payment'}
{include file="$tpl_dir./order-steps.tpl"}

<h3>{l s='Cash on delivery (COD) payment' mod='cashondelivery'}</h3>
<div class="cashloader"><img src="/modules/cashondelivery/ajax-loader.gif" width="31px" height="31px">Подождите.</div>
<form action="{$this_path_ssl}validation.php" method="post" style="display:none">
    <input type="hidden" name="confirm" value="1" />
    <p>
        <img src="{$this_path}cashondelivery.jpg" alt="{l s='Cash on delivery (COD) payment' mod='cashondelivery'}" style="float:left; margin: 0px 10px 5px 0px;" />
        {l s='You have chosen the cash on delivery method.' mod='cashondelivery'}
        <br/><br />
        {l s='The total amount of your order is' mod='cashondelivery'}
        <span id="amount_{$currencies.0.id_currency}" class="price">{convertPrice price=$total}</span>
        {if $use_taxes == 1}
            {l s='(tax incl.)' mod='cashondelivery'}
        {/if}
    </p>
    <p>
        <br /><br />
        <br /><br />
        <b>{l s='Please confirm your order by clicking \'I confirm my order\'' mod='cashondelivery'}.</b>
    </p>
    <p class="cart_navigation">
        <a href="{$link->getPageLink('order.php', true)}?step=3" class="button_large">{l s='Other payment methods' mod='cashondelivery'}</a>
        <input type="submit" name="submit" value="{l s='I confirm my order' mod='cashondelivery'}" class="exclusive_large" />
    </p>
</form>

<script>
$(window).bind("load", function() {
   $('.cart_navigation input.exclusive_large').click();
});
</script>

Файл validation.tpl вроде есть внутри каждого платежного модуля.

Суть в том что в этом шаблоне я скрываю весь контент, оставляю только:

Код:
<div class="cashloader"><img src="/modules/cashondelivery/ajax-loader.gif" width="31px" height="31px">Подождите.</div>

Картинку крутилки, типа ajax загрузки которые ставят.

Картинку анимации загрузки соответственно нужно залить и прописать верный путь.

После того как страница загрузиться срабатывать код который жмет на кнопку оформления заказа:


Код:
<script>
$(window).bind("load", function() {
   $('.cart_navigation input.exclusive_large').click();
});
</script>

Обратите внимание что там нужно прописать класс или ID кнопки на которую надо нажать после загрузки страницы.
 
Последнее редактирование:
Сделал еще проще. При попадении на эту страницу срабатывал JS скрипт перехода по ссылке кнопки подтверждения и все. Эдакий редирект по ссылке
 
Mencoba UNTUK menggunakannya hearts Urutan Halaman Yang sama PS.1.5 kerja
 

Вложения

  • v1.2.2-onepagecheckoutps.zip
    742,5 KB · Просмотры: 29
В любом платежном модуле должен лежать файл controllers/front/validation.php

В файле в функции postProcess нужно найти:


Код:
        if (Tools::getValue('confirm'))
        {
            $customer = new Customer((int)$this->context->cart->id_customer);
            $total = $this->context->cart->getOrderTotal(true, Cart::BOTH);
            $this->module->validateOrder((int)$this->context->cart->id, Configuration::get('PS_OS_PREPARATION'), $total, $this->module->displayName, null, array(), null, false, $customer->secure_key);
            Tools::redirectLink(__PS_BASE_URI__.'order-confirmation.php?key='.$customer->secure_key.'&id_cart='.(int)$this->context->cart->id.'&id_module='.(int)$this->module->id.'&id_order='.(int)$this->module->currentOrder);
        }

И заменить на:


Код:
            $customer = new Customer((int)$this->context->cart->id_customer);
            $total = $this->context->cart->getOrderTotal(true, Cart::BOTH);
            $this->module->validateOrder((int)$this->context->cart->id, Configuration::get('PS_OS_PREPARATION'), $total, $this->module->displayName, null, array(), null, false, $customer->secure_key);
            Tools::redirectLink(__PS_BASE_URI__.'order-confirmation.php?key='.$customer->secure_key.'&id_cart='.(int)$this->context->cart->id.'&id_module='.(int)$this->module->id.'&id_order='.(int)$this->module->currentOrder);

Т.е. убрать условие if (Tools::getValue('confirm'))

В зависимости от платежного модуля код внутри условия может быть разным, так что проверяйте все.
 
Вручную очистил кеш (по этой инструкции Для просмотра ссылки Войди или Зарегистрируйся) и удалил class_index.php
Результат все так же пустая страница

Наконец разобрался, дело было в том что логитип сайта нужен не в png, а в gif. (Из-за формата изображения была пустая страница).
 
В любом платежном модуле должен лежать файл controllers/front/validation.php

В зависимости от платежного модуля код внутри условия может быть разным, так что проверяйте все.

То есть нужно пробежаться по всем подобным модулям и отключить ручками?
 
В любом платежном модуле должен лежать файл controllers/front/validation.php

В файле в функции postProcess нужно найти:


Код:
        if (Tools::getValue('confirm'))
        {
            $customer = new Customer((int)$this->context->cart->id_customer);
            $total = $this->context->cart->getOrderTotal(true, Cart::BOTH);
            $this->module->validateOrder((int)$this->context->cart->id, Configuration::get('PS_OS_PREPARATION'), $total, $this->module->displayName, null, array(), null, false, $customer->secure_key);
            Tools::redirectLink(__PS_BASE_URI__.'order-confirmation.php?key='.$customer->secure_key.'&id_cart='.(int)$this->context->cart->id.'&id_module='.(int)$this->module->id.'&id_order='.(int)$this->module->currentOrder);
        }

И заменить на:


Код:
            $customer = new Customer((int)$this->context->cart->id_customer);
            $total = $this->context->cart->getOrderTotal(true, Cart::BOTH);
            $this->module->validateOrder((int)$this->context->cart->id, Configuration::get('PS_OS_PREPARATION'), $total, $this->module->displayName, null, array(), null, false, $customer->secure_key);
            Tools::redirectLink(__PS_BASE_URI__.'order-confirmation.php?key='.$customer->secure_key.'&id_cart='.(int)$this->context->cart->id.'&id_module='.(int)$this->module->id.'&id_order='.(int)$this->module->currentOrder);

Т.е. убрать условие if (Tools::getValue('confirm'))

В зависимости от платежного модуля код внутри условия может быть разным, так что проверяйте все.
Сам использовал твою подсказку до тех пор, пока не обнаружился страшный баг. С отключенным этим методом перенаправлением после ввода контактных данных и многократного изменения количества какого-либо товара кнопками увеличить/уменьшить сама кнопка оформления перестает работать, т.е. вообще не реагирует. Есть возможность проверить? Буду благодарен, т.к. хочется убедиться, что у меня проблема была именно в этом.
 
Наконец разобрался, дело было в том что логитип сайта нужен не в png, а в gif. (Из-за формата изображения была пустая страница).

У тебя получилось убрать страницу подтверждения?
 
Назад
Сверху