解決策を見つけるために何時間も費やしたので、誰かがこれを手伝ってくれることを願っていますか?
OS SOLUTIONによるOS Services Bookingというコンポーネントを使用して、Joomla 3.6.5 Webサイトに取り組んでいます。
希望どおりにコンポーネントを構成し、テストサーバーで (ある程度まで) 作業し、WorldPay を予約の支払いゲートウェイとして構成しようとしています。
私が経験している問題は、WorldPay を介して支払いが処理されると、303 エラーが発生してハングするまで、「買い物客の応答」(またはリダイレクト) が機能しているように見えることです。
この 303 エラーの理由は、WorldPay からの応答が OS Services Booking コンポーネントに到達した後の処理方法によるものだと思います。
コンポーネントによって提供され、WorldPay 構成に入れる買物客応答 URL は、 http://YOURDOMAINN/index.php?option=com_osservicesbooking&task=defaul_paymentconfirm&payment_method=os_worldpay です。
私の理解では、これは WorldPay がトランザクションの結果を返す URL です。WorldPay から送り返されたデータは OS サービスの予約に到達し、その結果、コンポーネントはそのデータベースを更新してトランザクションをログに記録し、タイムスロットを予約し、通知メールを送信します。
プロセスの最後の部分は、コンポーネントが Web サイトのページにリダイレクトして、顧客にトランザクションが失敗/成功したことを通知することです。
これを行うために、コンポーネントは変数を渡して 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);
}
(wheregoes.com を使用して) URL を追跡したところ、コンポーネントがこの関数を処理する方法は 303 リダイレクトを介しているようです。
WorldPay はこの 303 リダイレクトを好まないようで、すべてが停止し、顧客は WorldPays Web ページにハングアップしたままになります (Web サイトにリダイレクトされるのではなく、resultsY.html または resultsC.html と呼ばれていると思います!
調査して話し合った結果、ルートが 303 リダイレクトではなく Meta Refresh を使用している場合、WorldPay はこの URL リダイレクトを渡す可能性があるようです。
それを念頭に置いて、コードを編集して Meta Refresh を実行できれば、すべてが機能することを期待しています。
のようなもの(私の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 '">';
}
(しかし、それはうまくいきません!)
誰かが助けることができれば、それは非常に高く評価されます