Перейти к содержанию
annyta

При генерации урла добавляет "\"

Рекомендуемые сообщения

Захотела я поставить себе кнопочку быстрого заказа, с яндекс маркета, пол дня угробила, кнопка заработала заказ оформляется, все работает но вместо редиректа на index.php?route=checkout/success, я попадаю на http://mysite.ru/checkout/ с такой вот фигней в браузере: {"status":"success","redirect":"http:\/\/antistress-tomsk.ru\/index.php?route=checkout\/success"}. Как такой финт победить, помогите пожалуйста, не знаю что для решения нужно, предоставлю все все, что попросите. Если не туда написала не ругайтесь, я тут новенькая еще не разобралась, просто нежно пните в нужную сторону).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нежно пинаю в сторону вашего .htaccess, в котором вы, возможно, перемудрили с ЧПУ и переадресацией некоторых адресов.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело не в .htaccess это точно, потому что при заполнение полей в ручную все работает отлично, такая вот фигня только после возврата с быстрого заказа яндекс.

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

Я зарегистрировала для возврата http://mysite.ru/checkout/ поставила кнопку в checkout.tpl код отданый яндексом, все работает на ура, заказ оформляется, ошибок в журналах нет, но почему-то не дает страничку с успешным заказом.

Я не уверена но мне кажется этот редирект формируется джавой в checkout.tpl, а для мну джава это совсем дремучий лес, пхп то еще как то так, а джаааваааа) помогите пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Путем долгого рытья инета пришла к выводу, что добавление "\", дело функции "json_encode" как исправить, не знаю, спасайте пожалуйста, почему он их добавляет, узнать бы хоть причину, может кто знает, а я пока ушла с головой в познание неизведанной функции json_encode.

Мои мысли: работает данная функция только с utf-8, может ли это быть причиной ошибки кодировки, и могла ли как то измениться кодировка из-за возврата с яндекс маркета?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да стоит seopro и форма укороченного заказа.

И еще в catalog/controler/checkount.php пришлось сделать исправление

if(isset($_POST['phone']))

$data['telephone'] = $this->request->post['phone'];

else

$data['telephone'] = $this->request->post['telephone'];

так как яндекс передает свои переменные, которые не совпадают с opencart

Так же пришлось поступить с адресом, но это ведь не могло повлиять, или....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите в таблице url_alias запись checkout/success

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кнопочку сами ставили? Хочу в форму быстрого заказа добавить. Может поделитесь ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В таблице этой записи нет, я ее добавляла виде checkout/succesы; success но толку нет просто выдает

{"status":"success","redirect":"http:\/\/antistress-tomsk.ru\/success"}А при заполнение полей в ручную все работает прекрасно

Кнопочку добавляла сама, но там нужно код кнопки брать на яндексе каждому персонально хотя это просто, проблема только в том что переменные у яндекса и у опенкар-а разные исправляла как писала выше выше через проверку переменной. адрес у яндекса передается весь разбитый на улицу, дом, квартиру, корпус, все отдельно, придется складывать, но этим пока не занималась сейчас хочу корявый редирект победить)

кстати когда например телефон проверку не проходит, он тоже всякую чушь пишет(

Я так поняла что когда возвращаемся с быстрого запуска что то ломается в этой записи

$json["status"] = "success";

$json["redirect"] = $this->url->link('checkout/success');

$this->response->setOutput(json_encode($json));

А конкретно json_encode($json) а можно ли как то совсем от нее избавиться?

проверки тоже выдаются коряво, но это я обошла упрощением проверки номера телефона, минимум 1 знак, все остальные поля проверяет сам яндекс так что они будут, телефон у него тоже обязателен но там минимум 1 знак, проблема только с редиректом на удачное завершение заказа

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В таблице этой записи нет, я ее добавляла виде checkout/succesы; success но толку нет просто выдает

{"status":"success","redirect":"http:\/\/antistress-tomsk.ru\/success"}

хорошо, а какой код это выдает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хорошо, а какой код это выдает?

не поняла вопроса)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если номер телефона не проходит валидацию пишет вот так:

{"errors":{"telephone":"\u041d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442 3 \u0434\u043e 32 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432!"}}

Я так поняла так выглядит массив переменной $json если его выводить командой echo, то есть вместо редиректа он просто выводит массив в браузер

Урл страницы выглядит так: test.ru/checkout/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Появилось предположение что веной всему отсутствие клика, который нужен для работы джавы в checkout.tpl, ну в ней я вообще ничего не смыслю, поэтому возможно это полная глупость)

Кто понимает в джаве помогите у меня скоро мозг сломается

вот сам код

$('#button-confirm').live('click', function() {

$.ajax({

url: 'index.php?route=checkout/checkout',

type: 'post',

data: $('#checkout_form').serialize(),

dataType: 'json',

beforeSend: function() {

$('#button-confirm').attr('disabled', true);

$('#button-confirm').after('<span class="wait"> <img src="catalog/view/theme/default/image/loading.gif" alt="" /></span>');

},

complete: function() {

$('#button-confirm').attr('disabled', false);

$('.wait').remove();

},

success: function(json) {

$('.warning').remove();

$('.error').remove();

if (json['redirect']) {

location = json['redirect'];

}

if (json.errors) {

for (var key in json.errors) {

$('#checkout .checkout-content input[name=\'' + key + '\']').

after('<span class="error" >' + json.errors[key] + '</span>');

}

} else {

if (json.result = "success") {

location.url = json.redirect;

}

}

}

});

});

$('input[name=shipping_method]').live('click', function() {

$.ajax({

url: 'index.php?route=checkout/checkout/change_shipping',

type: 'post',

data: 'shipping_method='+$("input[name=shipping_method]:checked").val(),

dataType: 'json',

success: function(json) {

$('#total_data').html(json['totals_data']);

}

})

});

//--></script>

click - это щелчок мыши, но при возвращение с регистрации яндекса клика нет, это может быть причиной? если да как это победить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вобщем на 3 день мозг вскипел и местами надломлен, избавилась варварским методом:

function redirect($url,$time=0)

{

ob_start();

ob_end_clean();

header("Refresh:".$time."; ".$url);

}

if(isset($_POST['phone'])){

redirect("http://test.ru/success");}

Но очень хочется красивого решения вопроса)

Если нужно помогу с вставкой кнопочки, хотя не уверена что у мну вставлено грамотно, но по крайне мере работает)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$json["status"] = "success";

$json["redirect"] = $this->url->link('checkout/success');

$this->response->setOutput(json_encode($json));

return;

я так думаю что присваиватся статус и урл создается вот здесь checkout.php строки 329-332

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да какие вопросы? - annyta пытается GET`om/POST`om ходить на "ajax-only" форму.

тут надо дублировать один/несколько методов в checkout и давать яндексу другую ссылку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

какую другую ссылку, кого дублировать, яндекс отсылает данные POSTом, только вот название переменных чуток не совпадают, но это не проблема, я же объясняю что все работает, заказы оформляются полностью, и качественно, письма доставляются, просто покупатель после оформления, видит не красивую страничку с благодарностью за покупку, а непонятную строчку в верху браузера, но и эту проблему решила пока варварски, но по другому пока не как.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

напишите

$this->log->write($this->url->link('checkout/success')); и посмотрите журнал ошибок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Журнал ошибок;

2013-02-18 19:43:04 - httр//antistress-tomsk.ru/index.php?route=checkout/success

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно адрес магазина вашего и сценарий воспризведения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.