Jump to content
Sign in to follow this  
annyta

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

else

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

В таблице этой записи нет, я ее добавляла виде 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 знак, проблема только с редиректом на удачное завершение заказа

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

{"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/

Share this post


Link to post
Share on other sites

Появилось предположение что веной всему отсутствие клика, который нужен для работы джавы в 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 - это щелчок мыши, но при возвращение с регистрации яндекса клика нет, это может быть причиной? если да как это победить?

Share this post


Link to post
Share on other sites

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

function redirect($url,$time=0)

{

ob_start();

ob_end_clean();

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

}

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

return;

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

напишите

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.