问题是我在某个条件下使用 laravel 重定向将用户重定向到特定的外部 URL,并且条件为 true,但重定向仅登录网络,并没有真正更改浏览器中的 URL。我也尝试了纯 PHP 中的标头函数,但没有帮助。
这是我的代码:
public function purchase(Request $request, Transaction $transaction, User $user_model)
{
$username = $request->input('username');
if (!isset($username)) {
$this->setMessage(400, 'پر کردن فیلد username الزامی است');
return response()->json(['status' => 'error', 'data' => $this->getMessage()]);
}
$user = $user_model->scopeGetUserId($username);
if ($user == null) {
$this->setMessage(404, 'کاربر یافت نشد');
return response()->json(['status' => 'error', 'data' => $this->getMessage()], 200);
}
$user_id = $user->id;
$diet_type_id = $request->input('diet_type_id');
$price = 100;
$Amount = $price; //Amount will be based on Toman - Required
$Description = "پرداخت مبلغ $price تومان برای دریافت رژیم از سلامتپاد"; // Required
$Email = 'm.esmiran@gmail.com'; // Optional
$Mobile = '09123456789'; // Optional
$CallbackURL = 'http://salamatpaad.com/test/public/api/verify/' . $user_id . '/' . $diet_type_id; // Required
$client = new SoapClient('https://ir.zarinpal.com/pg/services/WebGate/wsdl', array('encoding' => 'UTF-8'));
$result = $client->PaymentRequest(
array(
'MerchantID' => $transaction->scopeGetMerchantId(),
'Amount' => $Amount,
'Description' => $Description,
'Email' => $Email,
'Mobile' => $Mobile,
'CallbackURL' => $CallbackURL
)
);
//Redirect to URL You can do it also by creating a form
if ($result->Status == 100) {
return redirect()->to('https://www.zarinpal.com/pg/StartPay/' . $result->Authority);
} else {
echo 'ERR: ' . $result->Status;
}
}
响应
如文档中所述,要重定向到外部链接,请使用redirect()->away()
方法。