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

pup*_*upa 7 php payment redirect payment-gateway laravel-5

我想将用户发送到支付门。通常它可以通过这种形式制作:

<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>
Run Code Online (Sandbox Code Playgroud)

用户按“支付”并重定向到支付门。

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

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

问题是:如何将用户从控制器重定向到外部资源(方法应该是 POST,我需要发送一些数据,例如 MNT_ID 等(参见上面的表单示例)?

Sam*_*mbo 1

它可以帮助您照常使用 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>
Run Code Online (Sandbox Code Playgroud)

在你的控制器中:

public function method(Request $request)
{
     // Validate
     // Store
     // ...
     Redirect::away('https://demo.moneta.ru/assistant.htm')->withInputs(Input::all());

}
Run Code Online (Sandbox Code Playgroud)

我没有测试它,但我很确定它有效(或接近解决方案)。

您可以从官方指南获得其他建议:http://laravel.com/docs/5.1/responses#redirects