2013-05-20 50 views
0

我制作了一个自定义支付网关。现在我已经将3D安全功能集成到网关中,并且在确认订单后很难重新定向。Opencart页面不会重定向

我一直在使用

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

$this->redirect($url); 

以及

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

我也写我自己的自定义重定向功能,强迫HTML元刷新到代码尝试仍然没有骰子。

怎么样的错误...我没有得到任何错误,除了一次,当我直接调用PHP头('位置:'),并得到一个头已经发送错误。我也插入了我自己的错误日志/跟踪代码,我得到的信息是功能实际上正在执行。

我知道扩展工程,因为手动插入相关链接直接进入浏览器给我的结果。

任何帮助,将不胜感激。

谢谢。

+0

您是否尝试使用iframe中的重定向或沿着这些行的东西? –

+0

不,我不是。我正尝试从控制器内部直接调用重定向。 – toocoded

+0

如果您在** setOutput **之后重定向,并且您从JavaScript调用该方法,那当然不起作用。在** $ json **中发送一些响应url变量并使用javascript重定向。 – machineaddict

回答

0

如果您的代码是手动工作的,您可以使用JavaScript重定向而不是php头重定向功能。

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

有时候,头重定向有时不能,如果网页的编码不适合工作或得到一个错误,等等JavaScript重定向在相同的情况下为我工作。

+0

感谢您的建议。我创建了一个新的视图文件,并尝试在控制器中调用模板配置代码(请参阅WorldPay付款扩展中使用的此方法)。如果(file_exists(DIR_TEMPLATE。$ this-> config-> get('config_template')。'/template/payment/pay_send.tpl')){ \t \t \t \t $ this-> template = $ this-> config - > get('config_template')。 '/template/payment/pay_send.tpl'; \t \t \t}其他{ \t \t \t \t $这个 - >模板=“缺省的/模板/支付/ pay_send。第三方物流; \t \t \t} \t \t \t \t \t \t $这 - >响应 - > setOutput($这 - >渲染()); “尽管如此,仍然没有工作。遗憾的评论:( – toocoded

+0

@machineaddict的坏格式化我在视图中改变了这种线 如果(JSON [ '成功']){ 位置= JSON [ '成功']; } 到 如果(JSON [ '成功']){ 了window.location = JSON [ '成功'];} 。? ,现在重新定向谢谢耶稣 然而现在,它似乎重定向到”的index.php路线=“,即使完整的网址{”success“:”http:\/\/my_site \ /index.php?path=checkout\\\\\\\\\\\\\“}正在被传递 关于如何解决这个问题的任何建议? – toocoded

+0

解决方案在您的控制器文件中。从控制器发送json的成功元素中的完整url。你可以使用'$ this-> url->链接('checkout/checkout')'等。 – hkulekci