我最近移动了服务器,自移动以来,我们的支付模块出现了问题。我们从PHP 5.2迁移到了PHP 5.4。
我们在xcart上安装了Realex支付模块来处理我们的付款,在结账期间,用户会被发送到一个安全的网站来输入他们的付款详细信息,付款过程,但他们会收到错误:您的交易已经成功,但连接回商家的网站时出现问题
Realex已经通知我,302重定向导致了问题,我们没有任何措施来导致此重定向。
以下是从realex收到的日志:
27.08.2013 17:02:18 carbonaction $response_uri = https://www.energysavingwarehouse.co.uk/store/payment/cc_realex_redirect.php
27.08.2013 17:02:18 carbonaction $num_remaining = 0
27.08.2013 17:02:18 carbonaction $client_return_url = https://www.energysavingwarehouse.co.uk/store/payment/cc_realex_redirect.php
27.08.2013 17:02:18 carbonaction $num_remaining = 0
27.08.2013 17:02:18 carbonaction Return URL: https://www.energysavingwarehouse.co.uk/store/payment/cc_realex_redirect.php
27.08.2013 17:02:18 carbonaction Client Host: www.energysavingwarehouse.co.uk
27.08.2013 17:02:18 carbonaction Client URLs: store/payment/cc_realex_redirect.php
27.08.2013 17:02:18 carbonaction ..start POST request, UserAgent timeout set to 180 seconds.
27.08.2013 17:02:20 carbonaction ..end POST request, UserAgent returned the status: 302 Moved Temporarily
27.08.2013 17:02:20 carbonaction Error connecting to client site:Moved Temporarily
这在旧服务器上运行良好,我们最近转到了vps,这里可能存在潜在的服务器配置问题吗?
谢谢你的帮助。
利亚姆
当我访问https://www.energysavingwarehouse.co.uk/store/payment/cc_realex_redirect.php
时,302
重定向会将我跳转到../
。这可能是因为我在做GET
而不是POST
,并且没有POST
字段。
如果您升级到了新版本的PHP,则可能是配置发生了更改,代码不再查找所有POST
字段-以前$HTTP_POST_VARS[]
可以,但现在应该使用$_POST[]
,有时PHP可以配置为自动为每个POST
字段创建新变量-例如name=Owen
自动创建值为Owen
的变量$name
。特别是,register_globals
选项在5.4.0中被完全删除,现在您需要在以前没有的某些情况下显式声明变量(请参见http://php.net/manual/en/security.globals.php)。
你能检查一下cc_realex_redirect.php
中的代码,看看是什么场景触发了302
重定向吗?这应该看起来像:
header('Location: ../');
然后添加一些日志以确保所有POST
数据都被正确提取。这将引导您找到解决方案。