Я надеюсь, что кто-то может помочь мне с этим, так как я сгорел много часов, пытаясь найти решение?
Я работаю над сайтом Joomla 3.6.5, используя компонент под названием OS Services Booking by OS SOLUTION.
Я настроил компонент так, как мне хотелось бы, и работал (до определенного момента) на тестовом сервере, в то время как я пытаюсь настроить WorldPay как платежный шлюз для бронирований.
Проблема, с которой я сталкиваюсь, заключается в том, что после обработки платежа через WorldPay «ответ покупателя» (или перенаправление) работает только до тех пор, пока не произойдет ошибка 303 и не произойдет зависание.
Я полагаю, что причина этой ошибки 303 заключается в том, как обрабатывается ответ от WorldPay, как только он достигает компонента бронирования служб ОС.
URL-адрес покупателя, предоставленный компонентом, и вы указали в своей конфигурации WorldPay:
HTTP: //YOURDOMAINN/index.php вариант = com_osservicesbooking&задача = defaul_paymentconfirm&PAYMENT_METHOD = os_worldpay
Из того, что я понимаю, это URL, по которому WorldPay передает результаты транзакции обратно. Данные, отправленные обратно из WorldPay, достигают бронирования OS Services, и в результате компонент обновляет свою базу данных, чтобы записать транзакцию / записать временной интервал и отправить уведомления по электронной почте.
Последняя часть процесса предназначена для того, чтобы компонент перенаправил вас на страницу на вашем веб-сайте, информирующую клиента о том, что транзакция не удалась / прошла успешно.
Для этого компонент передает переменные для создания URL-адреса (все это происходит в файле … компоненты> 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, а не перенаправляются обратно на ваш сайт!)
После исследования и разговора с ним кажется, что WorldPay может пропустить это перенаправление Url, если выбранный маршрут использует мета-обновление, а не перенаправление 303.
Имея это в виду, я надеюсь, что если код может быть отредактирован для выполнения мета-обновления, то все может работать?
Нечто подобное (мои навыки 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 '">';
}
(Но это не работает!)
Если кто-нибудь может помочь, это будет очень цениться
Задача ещё не решена.
Других решений пока нет …