不敢相信我在问这个问题,但这里......
(在 Codeigniter 中使用 PHP)
我正在将 Barclays EPDQ 集成到一个电子商务网站中以进行信用卡付款。成功付款后,EPDQ 将重定向回在 URL 中传递查询字符串参数的站点。我正在寻找从 EPDQ 发回的 orderID,如果它在那里,我会在 PHP 会话中存储一些东西并重定向到付款确认页面。如果付款不成功,订单 ID 将不存在,因此我重定向到显示 CI 视图文件的付款失败方法。
此检查和会话保存例程的条件如下:
$success = false;
if($_GET['orderID'])
{
$_SESSION['payment']['order_id'] = $_GET['orderID'];
$_SESSION['payment']['method'] = 'card';
$_SESSION['payment']['ref'] = $_GET['PAYID'];
$_SESSION['payment']['status'] = 'Completed';
$success = true;
}
(请注意,在执行此代码之前已初始化会话并创建了支付数组)
到目前为止很简单,对。方向的代码如下所示:
if(!$success)
{
redirect('payment/card/fail');
}
else
{
redirect('payment/confirmation');
}
我遇到的问题是这种重定向不像我预期的那样工作。EPDQ 报告付款成功并根据需要重定向回我们的网站。但是,当我的脚本评估它发送的 GET 参数并进行重定向时,它总是使用失败的重定向............除非,这是真正难倒我的一点,我做这个:
if(!$success)
{
exit('Failed');
redirect('payment/card/fail');
}
else
{
redirect('payment/confirmation');
}
(注意添加的“退出”)。
一旦我包含此退出,代码就会在所有测试用例中按需要执行,我们开始看到支付成功页面。移除出口会立即恢复到 100% 测试失败。
有谁知道为什么会发生这种情况,因为我以前从未见过这种情况?