Laravel 5:如何用数据重定向到外部资源表单控制器


Laravel 5: how to redirect with data to external resource form controller

我想把用户发送到支付门。通常情况下,它可以通过以下形式制作:

<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>

用户按下"支付"并重定向到支付门。

但我想实现这个工作流程:

  1. 用户输入交货信息、付款方式等
  2. 之后,他按下"支付"
  3. 首先,我想存储数据(我在控制器中存储)
  4. 。。。然后我想重定向用户到支付门。(我不清楚)

问题是:如何将用户从控制器重定向到外部资源(方法应该是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]);

将帮助您将请求作为带有所需参数的帖子发送。