我想把用户发送到支付门。通常情况下,它可以通过以下形式制作:
<form method="post" action="https://demo.moneta.ru/assistant.htm">
<input type="hidden" name="MNT_ID" value="12345678">
<input type="hidden" name="MNT_TRANSACTION_ID" value="000001">
<input type="hidden" name="MNT_CURRENCY_CODE" value="USD">
<input type="hidden" name="MNT_AMOUNT" value="123.45">
<input type="submit" value="Pay">
</form>
用户按下"支付"并重定向到支付门。
但我想实现这个工作流程:
- 用户输入交货信息、付款方式等
- 之后,他按下"支付"
- 首先,我想存储数据(我在控制器中存储)
- 。。。然后我想重定向用户到支付门。(我不清楚)
问题是:如何将用户从控制器重定向到外部资源(方法应该是POST,我需要发送一些数据,如MNT_ID等)(见上面的表单示例)?
我想这就是您想要的:
呼叫您的功能控制器:
public function redirectPOST(){
//params
$USERNAME='username';
return view('your vie', compact('USERNAME'));}
那么在你看来:
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<script type="text/javascript">
function closethisasap() {
document.forms["redirectpost"].submit();
}
</script>
</head>
<body onload="closethisasap();">
<form name="redirectpost" method="POST" action="http://URL">
<input type="hidden" id="USERNAME" name="USERNAME" value="{{$USERNAME}}">
</form>
</body>
</html>
它可以帮助您像往常一样使用Laravel控制器,并在之后重定向到外部资源。
在您的视图中,将操作重定向到您的控制器:
<form method="post" action={{ action('Controller@method') }}>
<input type="hidden" name="MNT_ID" value="12345678">
<input type="hidden" name="MNT_TRANSACTION_ID" value="000001">
<input type="hidden" name="MNT_CURRENCY_CODE" value="USD">
<input type="hidden" name="MNT_AMOUNT" value="123.45">
<input type="submit" value="Pay">
</form>
在您的控制器中:
public function method(Request $request)
{
// Validate
// Store
// ...
Redirect::away('https://demo.moneta.ru/assistant.htm')->withInputs(Input::all());
}
我没有测试它,但我非常确信它有效(或接近解决方案)。
您可以从官方指南中获得其他建议:http://laravel.com/docs/5.1/responses#redirects
您可以使用Laravels的重定向重定向到外部URL。首先将重定向导入控制器和
use Illuminate'Support'Facades'Redirect;
return Redirect::away($redirectUrl)->with(['user_id'=>$user_id]);
将帮助您将请求作为带有所需参数的帖子发送。