【发布时间】:2014-10-29 16:27:04
【问题描述】:
目前我的 SagePay 集成遇到了一些问题。在我必须回复通知 POST 之前,一切都很好。我的脚本以正确的信息响应通知帖子,但实际上我从 SagePay 收到了 5003 内部服务器错误(在其他 html 中)。
我已经多次致电 SagePay 支持,并检查了几笔交易的日志,我可以看到 SagePay 根本没有收到我发送的 POST 数据,这是有道理的,因为我收到了这个 5003 错误。我已确认我在流程早期提供给 SagePay 的 notificationURL 有效,并且 SagePay 能够成功联系该 URL。
以下是将我的响应发送给 SagePay 的相关代码,这也是执行与 SagePay 的初始通信的相同代码,可以正常工作:
curl_setopt($curlSession, CURLOPT_URL, $url);
curl_setopt($curlSession, CURLOPT_HEADER, 0);
curl_setopt($curlSession, CURLOPT_POST, 1);
curl_setopt($curlSession, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlSession, CURLOPT_TIMEOUT, $ttl);
curl_setopt($curlSession, CURLOPT_SSL_VERIFYHOST, 2);
if (!empty($caCertPath))
{
curl_setopt($curlSession, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curlSession, CURLOPT_CAINFO, $caCertPath);
}
else
{
curl_setopt($curlSession, CURLOPT_SSL_VERIFYPEER, 0);
}
$rawresponse = curl_exec($curlSession);
这是可以发送的数据示例,唯一的变化是状态可以正常,而 RedirectURL 可以指向 checkout_thanks.php:
$data['Status'] = 'ERROR';
$data['StatusDetail'] = 'Transaction not found in our system';
$data['RedirectURL'] = 'https://www.e-side.co.uk/checkout_error.php';
正如我所说,我已经设置好了,$rawresponse 变量实际上会通过电子邮件发送给我,所以我可以在这里看到我放入 PasteBin 的响应:http://pastebin.com/73107ga
我只是想补充一点,使用的所有链接都是 https 版本,并且在我尝试将其集成到的站点中有一个有效的 SSL 证书。
谢谢
【问题讨论】:
标签: opayo