我希望有人可以帮助我解决这个问题,因为我已经花了很多时间试图找到解决方案?
我正在使用 OS SOLUTION 的一个名为 OS Services Booking 的组件在 Joomla 3.6.5 网站上工作。
当我尝试将 WorldPay 配置为预订的支付网关时,我已经按照我的意愿配置了组件并在测试服务器上工作(在某种程度上)。
我遇到的问题是,一旦通过 WorldPay 处理了付款,“购物者响应”(或重定向)到目前为止似乎只能工作,直到它遇到 303 错误并挂起。
我相信这个 303 错误的原因是由于 WorldPay 的响应到达操作系统服务预订组件后如何处理。
组件提供的购物者响应 URL 并放入 WorldPay 配置是 - http://YOURDOMAINN/index.php?option=com_osservicesbooking&task=defaul_paymentconfirm&payment_method=os_worldpay
据我了解,这是 WorldPay 将交易结果传回的 URL。从 WorldPay 发回的数据到达 OS 服务预订,因此组件更新其数据库以记录交易/预订时间段并发送通知电子邮件。
该过程的最后一部分是让组件将您重定向到您网站上的页面,通知客户交易失败/成功。
为此,组件传递变量以创建 url(这一切似乎都发生在文件中... components > com_osservicesbooking > helpers > payment > omnipay.php 从第 135 行开始)
protected function setPaymentSuccessUrl($id, $data = array())
{
$Itemid = JFactory::getApplication()->input->get->getInt('Itemid',0);
$this->paymentSuccessUrl = JRoute::_('index.php?option=com_osservicesbooking&task=defaul_paymentconfirm&Itemid=' . $Itemid, false, false);
}
我已经跟踪了 url(使用 wheregoes.com),并且组件处理此函数的方式似乎是通过 303 重定向。
WorldPay 似乎不喜欢这个 303 重定向,然后一切都停止了,客户被留在 WorldPays 网页上(我相信它们被称为 resultsY.html 或 resultsC.html,而不是被重定向回您的网站!
经过研究并与之交谈后,如果采用的路由使用元刷新而不是 303 重定向,WorldPay 可能会通过此 URL 重定向。
考虑到这一点,我希望如果可以编辑代码以执行元刷新,那么一切都可以正常工作吗?
类似的东西(我的 PHP 技能不存在)
protected function setPaymentSuccessUrl($id, $data = array())
{
$Itemid = JFactory::getApplication()->input->get->getInt('Itemid',0);
echo '<META HTTP-EQUIV="Refresh" Content="0; URL="';
$this->paymentSuccessUrl = JRoute::_('index.php?option=com_osservicesbooking&task=defaul_paymentconfirm&Itemid=' . $Itemid, false, false);
echo '">';
}
(但这不起作用!)
如果有人可以提供帮助,将不胜感激