Php laravel忽略返回重定向()
嗨,伙计们,我正试图将用户重定向到银行,但laravel忽略了我的返回重定向 在这里Php laravel忽略返回重定向(),php,laravel,Php,Laravel,嗨,伙计们,我正试图将用户重定向到银行,但laravel忽略了我的返回重定向 在这里 public function checkout() { $order = $this->makeOrder(); $this->makePayment($order); $pal = resolve(zarinpal::class); $pal -> pay($order); $this->basket->clear();
public function checkout()
{
$order = $this->makeOrder();
$this->makePayment($order);
$pal = resolve(zarinpal::class);
$pal -> pay($order);
$this->basket->clear();
return $order;
}
我在zarinpal类中调用pay():
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);
}
在redirectToBank()的末尾,用户必须重定向到银行,但它忽略了重定向,并在cheackout()中返回$order。您错过了返回
public function pay(Order $order)
{
return $this->redirectToBank($order);
}
我认为重定向返回一个重定向对象。这个对象需要从路由上的方法返回。那么你会回来吗
$pal -> pay($order);
从检验方法和检验方法来看
$this->redirectToBank($order);
从支付方式来看。这显然没有达到你想要的效果。因此,您需要从
redirectToBank
方法返回重定向url,然后清除篮子,然后在签出方法中重定向。如果您将dd('here')
放在重定向触发之前,它会触发吗?是的,一切正常,我不知道我是否正确,但当您返回$this->redirectToBank时会发生什么($order);
从付款方式和$pal->pay($order);
来自checkout方法。我非常确定重定向返回一个对象,该对象需要从路由上的方法返回。是的,问题是如果我想在我的类中重定向,我在调用controller时,我必须在controllerthanks中返回这个确切的方法,但这也不起作用。我很困惑哦,对不起,我有点困惑不知道您调用的第一个控制器方法是什么。redirect()方法只会创建一个必须由控制器返回的对象,您必须传递该备份并返回该对象。因此,还要添加$redirect=$pal->pay($order);
然后在底部返回$redirect
但是checkout返回$order我如何返回$redirectand checkout()在控制器使用的另一个类中很难准确地看到调用的是什么,但是如果你想在调用路由时重定向,你需要返回一个重定向对象(通过调用redirect()创建)
)在最初调用的控制器中。