我目前正在将我管理的基于 PHP/MySQL 的电子商务网站与 RBS Worldpay 支付网关集成在一起。这是我的问题:
客户填满了他的购物篮,当他这样做时,内容将存储在$_SESSION
全局数组中,同时也存储在 cookie 中。当客户结账时,他会被发送到 Worldpay 页面以输入他的付款详细信息。我正在使用“付款响应”/回调功能将成功的付款重定向到我自己的页面“confirmation.php”,它告诉客户一切正常,并在后台进行一些数据库查询。
一切都好!
但是,此时我也希望从$_SESSION
数组中清空购物车数据并删除 cookie。很好,我只是使用:
$_SESSION['cart'] = array();
setcookie('cart', '', 0, '/');
但这不起作用。这与这个重定向页面的 URL 实际上是https://secure-test.wp3.rbsworldpay.com/wcc/purchase
而不是www.mysite.co.uk/confirmation.php
. 作为测试,我让我的确认页面回显了 phpinfo() 和 $_SERVER 变量,一切似乎都很好,例如:
_SERVER["DOCUMENT_ROOT"] /var/www/vhosts/mysite.co.uk/httpdocs
_SERVER["SCRIPT_FILENAME"] /var/www/vhosts/mysite.co.uk/httpdocs/confirmation.php
_SERVER["SERVER_PROTOCOL"] HTTP/1.0
_SERVER["REQUEST_METHOD"] POST
_SERVER["QUERY_STRING"] installation=[xxxxxx]&msgType=authResult
_SERVER["REQUEST_URI"] /confirmation.php?installation=xxxxxx&msgType=authResult
_SERVER["SCRIPT_NAME"] /confirmation.php
_SERVER["PHP_SELF"] /confirmation.php
_SERVER["HTTP_USER_AGENT"] WJHRO/1.0 (WorldPay Java HTTP Request Object)
因此,由于 URL 指向不同的域,我的脚本似乎无法访问 $_SESSION 和 $_COOKIE 数据,也无法对其进行操作。我不知道这个 Worldpay 系统是如何做到的,它不是 iframe 或类似的东西,但我怀疑它与用户代理有关 - “WJHRO/1.0(WorldPay Java HTTP 请求对象)”
有人熟悉这个吗?我怎样才能解决这个问题?
谢谢阅读!
迈克尔