Я пытаюсь пропустить платежный адрес на странице оформления заказа

Я пытаюсь пропустить платежный адрес на странице оформления заказа

13.09.2019 11:28:58 Просмотров 59 Источник

В процессе оформления заказа я пытаюсь скрыть второй шаг, который является платежным адресом . Мое решение состоит в том, чтобы сначала вызвать адрес доставки, а затем использовать тот же адрес для сохранения данных для адреса оплаты, а также с помощью метода ajax post.

Но я получаю ошибку в методе ajax post для index.php?route=checkout/payment_address/save

Я попытался сделать вызов payment_address / save POST внутри функции #button-shipping-addressclick, но это не работает.

// Shipping Address
...
$(document).delegate('#button-shipping-address', 'click', function() {
    $.ajax({
        url: 'index.php?route=checkout/shipping_address/save',
        type: 'post',
        data: $('#collapse-shipping-address input[type=\'text\'], #collapse-shipping-address input[type=\'date\'], #collapse-shipping-address input[type=\'datetime-local\'], #collapse-shipping-address input[type=\'time\'], #collapse-shipping-address input[type=\'password\'], #collapse-shipping-address input[type=\'checkbox\']:checked, #collapse-shipping-address input[type=\'radio\']:checked, #collapse-shipping-address textarea, #collapse-shipping-address select'),
        dataType: 'json',
        beforeSend: function() {
            $('#button-shipping-address').button('loading');
        },
        success: function(json) {      
            $('.alert-dismissible, .text-danger').remove();
            $('.form-group').removeClass('has-error');

            if (json['redirect']) {
                location = json['redirect'];
            } else if (json['error']) {
                $('#button-shipping-address').button('reset');

                if (json['error']['warning']) {
                    $('#collapse-shipping-address .panel-body').prepend('<div class="alert alert-warning alert-dismissible">' + json['error']['warning'] + '<button type="button" class="close" data-dismiss="alert">&times;</button></div>');
                }

                for (i in json['error']) {
                    var element = $('#input-shipping-' + i.replace('_', '-'));

                    if ($(element).parent().hasClass('input-group')) {
                        $(element).parent().after('<div class="text-danger">' + json['error'][i] + '</div>');
                    } else {
                        $(element).after('<div class="text-danger">' + json['error'][i] + '</div>');
                    }
                }

                // Highlight any found errors
                $('.text-danger').parent().parent().addClass('has-error');
            } else {

            //****** start payment address

                                $.ajax({
        url: 'index.php?route=checkout/payment_address/save',
        type: 'post',
        data: $('#collapse-shipping-address input[type=\'text\'], #collapse-shipping-address input[type=\'date\'], #collapse-shipping-address input[type=\'datetime-local\'], #collapse-shipping-address input[type=\'time\'], #collapse-shipping-address input[type=\'password\'], #collapse-shipping-address input[type=\'checkbox\']:checked, #collapse-shipping-address input[type=\'radio\']:checked, #collapse-shipping-address textarea, #collapse-shipping-address select,collapse-shipping-address label'),
        dataType: 'json',
        beforeSend: function() {
            //$('#button-payment-address').button('loading');
        },
        complete: function() {
            //$('#button-payment-address').button('reset');
        },
        success: function(jsons) {
            console.log('sent payment add'+JSON.stringify(jsons));
        }
    });

                            //******* end of payment call

                $.ajax({
                    url: 'index.php?route=checkout/shipping_method',
                    dataType: 'html', 

Это не работает, никакие данные не сохраняются в "/ payment_address / save". Как правило, он должен дать нулевой ответ массива ([]) что-то вроде этого, но его давая ошибку ниже:

{
    "error": {
        "firstname": "First Name must be between 1 and 32 characters!",
        "lastname": "Last Name must be between 1 and 32 characters!",
        "address_1": "Address 1 must be between 3 and 128 characters!",
        "city": "City must be between 2 and 128 characters!",
        "custom_field1": "Mobile required!"
    }
}

Я работаю над этим в течение последних 2 дней, но не могу найти решение.

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/57929995/i-am-trying-to-skip-the-payment-address-in-checkout-page#comment102277934_57929995
Да, мой друг, я посылаю одни и те же данные для обоих вызовов и их правильность, я подтвердил это, позвонив в индекс.php?route=checkout/shipping_address / save и я не получил никакой ошибки при вызове shipping_address/save и дал мне этот ответ, а также"[]"
https://stackoverflow.com/questions/57929995/i-am-trying-to-skip-the-payment-address-in-checkout-page#comment102282257_57929995
Предлагаю посмотреть на OC marketplace... например: opencart.com/index.php?route=marketplace/ ... там вы найдете то, что вам нужно и не очень дорого. Вы купите дешевый урок для себя на будущее. Я имею в виду, что вы найдете там код, который позволит вам понять, как он работает в OC framework.
https://stackoverflow.com/questions/57929995/i-am-trying-to-skip-the-payment-address-in-checkout-page#comment102283076_57929995
@ K. B. Спасибо за эту ссылку, но это не имеет значения, если его дешево или дорого я пытаюсь исправить проблему я знаю, что делаю правильно, но я застрял в этой проблеме может быть незначительное исправление для этой проблемы . И какой смысл поднимать вопрос о stackoverflow, когда можно купить модули: D
https://stackoverflow.com/questions/57929995/i-am-trying-to-skip-the-payment-address-in-checkout-page#comment102283538_57929995
ОК. Я думаю, что вы не можете достичь этого по-своему, потому что данные shipping_address еще не заполнены, прежде чем вы не на шаге shipping_adress, я имею в виду, что все поля пусты. Может быть, вам нужно создать какую-то функцию в контроллере checkout.php, где вы вызываете данные shipping_address из БД и вызываете их в ajax. Самый простой способ скрыть 3 шага.. и ваше решение должно сработать.
https://stackoverflow.com/questions/57929995/i-am-trying-to-skip-the-payment-address-in-checkout-page#comment102283724_57929995
@ K. B. хорошая идея позвольте мне попробовать это, я буду держать адрес выставления счетов видимым и попытаюсь скрыть адрес доставки.
https://stackoverflow.com/questions/57929995/i-am-trying-to-skip-the-payment-address-in-checkout-page#comment102284089_57929995
Вы должны использовать данные из payment_address. Эти данные уже заполнены в поля и разнесены.

Ответы - Я пытаюсь пропустить платежный адрес на странице оформления заказа / I am trying to skip the Payment Address in checkout page

K. B.

14.09.2019 12:03:58

рабочее решение для скрытия 3 шага на OC3. 0.икс: в файле catalog / controller / checkout/shipping_address.php somwhere после $this->load->language('checkout/checkout');add:

if (!empty($this->session->data['shipping_address']['address_id'])) {
    $this->session->data['shipping_address']['address_id'] = $this->session->data['payment_address']['address_id'];
}

После этого вам нужно пропустить 3 шага, чтобы идти вперед. в файле: catalog / view / theme / your_template / template / checkout/shipping_address.прут добавьте этот скрипт:

<script type="text/javascript"><!--
    if ($('#shipping-address-clicked').length == 0) {
        setTimeout(function(){
            $('#button-guest-shipping').click();
            $('#button-shipping-address').click();
            $('body').append('<div id="shipping-address-clicked" />');
                                }, 500);
                            }
        $('#button-guest, #button-register, #button-payment-address, #collapse-payment-address').click(function(){
        $('#shipping-address-clicked').remove();
        });
   //--></script>

после этого вам нужно скрыть этот шаг с помощью css в файле catalog / view / theme / your_theme / template / checkout / checkout.прут добавить стиль:

    <style type="text/css">
        #accordion > div:nth-child(3)  {
        display: none;
        }
   </style>

а также скрыть флажок с помощью стиля и добавить значение 1, Если требуется доставка в файлах: каталог / просмотр / тема / your_theme / шаблон / оформление заказа / гость.прут каталог / просмотр / тема / your_theme / шаблон / оформление заказа / Регистрация.прут найти: {% if shipping_required %} добавить после:

<input type="checkbox" name="shipping_address" value="1" checked="checked" style="display: none" />
{% else %}
Закрыть X