Я пытаюсь пропустить платежный адрес на странице оформления заказа
В процессе оформления заказа я пытаюсь скрыть второй шаг, который является платежным адресом . Мое решение состоит в том, чтобы сначала вызвать адрес доставки, а затем использовать тот же адрес для сохранения данных для адреса оплаты, а также с помощью метода ajax post.
Но я получаю ошибку в методе ajax post для index.php?route=checkout/payment_address/save
Я попытался сделать вызов payment_address / save POST внутри функции #button-shipping-address
click, но это не работает.
// 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">×</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 дней, но не могу найти решение.








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

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 %}