0

我是一名后端开发人员,在使用 Android google chrome 时遇到了重定向问题。

我开发的网站与支付网关集成。

付款流程如下:-

1- 在网站数据库上创建的付款订单。

2- API 请求发送到支付网关以创建支付请求。

3- 提供支付 URL 的 API 网关响应。

4- 用户被重定向到该支付 URL。

5-一旦用户成功支付并捕获支付状态,支付网关网站通过以下链接将用户重定向回我的网站:-

http://mywebsite.com/payment/callback?cancelled=0&hash=5e02f05b78766&order_id=277&tx_date=31-December-2019%2008:16:03&tx_amt=4.1000&Result=CAPTURED&PaymentID=106201936565342280&PostDate=1231&TranID=201936565319193&Auth=259819&Ref=936533003451&tx_id=386306&tx_mode=KNET&tx_status =

6-在处理路由(/payment/callback)的后端代码控制器中,我有以下php代码:-

public function callback(Request $request)
    {


        // Check if cancelled value = 1 (user cancelled) OR cancelled in knet payment page
        if ($request->cancelled OR (!$request->cancelled && $request->Result == 'CANCELED') OR $request->Result != 'CAPTURED')
        {
            //Here to return to view if the payment is cancelled in gateway payment page
            echo 'the request cancelled';


            return redirect()->route('payment_status')->with($request->all());


        }


        //Query order
        $order = Order::where('payment_ref',$request->hash)->first();
        \Auth::login($order->user);
        if ($order == null) {
            return 'Could Not Find Order, Please Contact IT Support';


        }


        if (!$request->cancelled  && $request->Result = 'CAPTURED')
        {
            if ($order->status === 'closed'){
               die('This Page Has Been Expired');
            }


            $order->status = 'closed';
            $order->save();
           return redirect()->route('payment_status')->with($request->all());
}

问题是当用户使用谷歌浏览器(Android 版本)时向他显示一条消息:-

此页面已过期

虽然它应该向他显示交易详细信息,但由以下代码制作(其他浏览工作正常):-

return redirect()->route('payment_status')->with($request->all());

我尝试使用以下 google chrome 手机(Samsung Note 9 和 OnePlus 3T)。

*使用的 php 框架(Laravel)。

请指教。

4

1 回答 1

1

我相信第一个问题是:

if (!$request->cancelled  && $request->Result = 'CAPTURED')

您在此处将 CAPTURED 分配给结果,它可能应该是

if (!$request->cancelled  && $request->Result == 'CAPTURED')
于 2019-12-31T18:50:40.533 回答