Skip to content
Advertisement

laravel ignore return redirect()

hi guys i’m trying to redirect user to bank but laravel is ignoring my return redirect

in here

public function checkout()
{
    
    $order = $this->makeOrder();

    $this->makePayment($order);

    $pal = resolve(zarinpal::class);

    $pal -> pay($order);

    $this->basket->clear();

    return $order;
}

i’m calling pay() in zarinpal class :

public function pay(Order $order)
{
    $this->redirectToBank($order);
}

private function redirectToBank($order)
{
    $zarinpal = zarinpal()
        ->amount($order->amount_rial)
        ->request()
        ->callback('http://lanjani/payment/zarinpal/callback')
        ->description($order->code)
        ->mobile($order->phone_number)
        ->send();

    if (!$zarinpal->success()){
        return $zarinpal->error()->message();
    }

    $authority=$zarinpal->authority();

    $input = [
        'authority' => $authority
    ];

    $orderItem = Order::find($order->id);

    $orderItem -> update($input);

    return redirect()->away('https://sandbox.zarinpal.com/pg/StartPay/'.$authority);

}

at the end of redirectToBank() user must redirect to bank but it is ignoring redirect and is returning $order in cheackout()

Advertisement

Answer

I think that the redirect returns a redirect object. And this object needs to be returned from the method on the route. So you would return

$pal -> pay($order);

from the checkout method and

$this->redirectToBank($order);

from the pay method. This obviously does not really have the effect you want. So you will need to return the redirect url form the redirectToBank method and then clear the basket and then in the checkout method redirect away.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement