2013-05-20 2 views
0

Я сделал специальный платежный шлюз, который работает. Теперь я интегрировал 3D-защиту в шлюз, и мне сложно перенаправить после подтверждения заказа.Страница Opencart не будет перенаправляться

Я попытался с помощью

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

также

$this->redirect($url); 

, а также

$this->redirect($this->url->link($url)); //shortened $url 

Я также написал свой собственный пользовательский перенаправление функций, принудительный HTML метаобновление в код и до сих пор нет кубиков.

Что относительно ошибок ... Я не получаю никаких ошибок, кроме одного раза, когда я непосредственно вызывал заголовок php ('location:') и получил уже отправленные ошибки заголовков. Я также подключил свой собственный код регистрации/отслеживания ошибок. Я получаю информацию о том, что функции фактически выполняются.

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

Любая помощь будет оценена по достоинству.

Спасибо.

+0

Вы пытаетесь использовать перенаправление из iframe или что-то в этом направлении? –

+0

Нет, я не. Я пытаюсь вызвать перенаправление непосредственно из контроллера. – toocoded

+0

Если вы перенаправляете сразу после ** setOutput **, и вы вызвали этот метод из javascript, конечно, это не сработает. Отправьте некоторую переменную url ответа в ** $ json ** и переадресуйте с помощью javascript. – machineaddict

ответ

0

Если ваш код работал вручную, вы можете использовать перенаправление javascript вместо функции перенаправления заголовка php.

<script> window.location = '<?php echo $this->url->link($url); ?>' </script> 

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

+0

Спасибо за предложение. Я создал новый файл представления и попытался вызвать код конфигурации шаблона в контроллере (этот метод использовался в расширении оплаты WorldPay). 'if (file_exists (DIR_TEMPLATE. $ this-> config-> get ('config_template'). '/template/payment/pay_send.tpl')) { \t \t \t $ this-> template = $ this-> config -> get ('config_template'). '/template/payment/pay_send.tpl'; \t \t \t} еще { \t \t \t \t $ this-> шаблон = «по умолчанию/шаблон/оплаты/pay_send.TPL '; \t \t \t} \t \t \t \t \t \t $ этом-> response-> setOutput ($ этом-> визуализации()); «Тем не менее, все-таки не получилось. извините за плохое форматирование комментария :( – toocoded

+0

@machineaddict я изменил эту строку в представлении если (JSON [ 'успех']) { место = JSON [ 'успех'];} к если (JSON [ 'успех']) { window.location = JSON [ 'успех']; }..? и теперь перенаправляет Спасибо Иисус Теперь, однако, кажется, перенаправление «index.php маршрут = ", хотя передается полный URL-адрес {« успех »:« http: \/\/my_site \ /index.php? route = checkout \/checkout »}. Любые предложения по устранению этого вопроса? – toocoded

+0

решение находится в файле вашего контроллера. Отправьте полный URL-адрес в элемент успеха json от контроллера. Вы можете использовать ссылку $ this-> url-> ('checkout/checkout') 'или т. Д. – hkulekci

Смежные вопросы