Как пропустить шаги выбора адреса при оформлении заказа?

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Серега Остапчик
  • Группа: Пользователь
  • Сообщений: 11
  • Регистрация: 29.11.2011

16.12.2011 11:46

Родной чекаут в магенте состоит из нескольких шагов.
Моя задача заключается в том, что бы отправить кастомера на необходимый шаг чекаута.
Ситуация выглядит следующим образом:
В корзине лежат товары.
Кастомер нажимает кнопочку (которую мы создали)
И по волшебству оказывается к примеру на шаге выбора шиппинг метода.
Разумеется предыдущие шаги должны выполниться автоматически, т.е. мы за кастомера сабмитим биллинг и шиппинг адреса.

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

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

16.12.2011 13:02

На рынке уже имеется достаточное количество модулей, способных пропускать те или иные шаги при оформлении заказа.
Просто купите один из них и посмотрите, как он устроен внутри.
Решения там довольно длинные и сложные, чтобы публиковать их в форумном сообщении.

#3 Серега Остапчик
  • Группа: Пользователь
  • Сообщений: 11
  • Регистрация: 29.11.2011

16.12.2011 14:26

Речь идет не о том, как пропустить шаги, а как их автоматически заполнить.
Модуль должен автоматически пройти нужные шаги и работает только с залогиненными кастомерами у которых есть дефолтные адреса, что неимоверно упрощает задачу.

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

16.12.2011 14:29

Я это и имел в виду.
О таких вещах спрашивают часто, готового короткого решения нет, хотя, очевидно, программированием или готовыми модулями задача решается.

#5 Серега Остапчик
  • Группа: Пользователь
  • Сообщений: 11
  • Регистрация: 29.11.2011

23.12.2011 15:44

Решил проблемку следующим образом:
Зная id адреса мы его дописываем в урл и редиректим на него. Получается нечто такое:
domain.com/index.php/checkout/onepage/index/billing/2 - (billing - название параметра, 2 - id адреса)

В лайоуте своего модуля добавляем свой скрипт:
    <checkout_onepage_index>
        <reference name="head">
            <action method="addJs">
                <script>mymodule/submitter.js</script>
            </action>
        </reference>
    </checkout_onepage_index>


И сам код submitter.js:
Submitter = Class.create(
    {
        initialize:function () {
            this.url = window.location.toString().split('/');
            try {
                this.id = parseInt(this.url.last())
            } catch (e) {
            }
        },
        submitBilling:function () {
            if (this.id > 0) {
                try {
                    $('billing-address-select').value = this.id;
                    $('billing:use_for_shipping_no').click();
                    billing.save();
                } catch (e) {
                    setTimeout('mysubmitter.submitBilling()', 2);
                }
            }
        }
    }
);
mysubmitter = new Submitter();
mysubmitter.submitBilling();


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

Поделиться темой: