当前位置: 首页 > 知识库问答 >
问题:

laravel发布数据并重定向到相同的发布url,无需提交表单

郁烨
2023-03-14

我需要将数据发布到支付服务(payment.com),并将数据重定向到payment.com(以填写信用卡号码等)

传统的做法是:

<form id="form" action="payment.com" method="POST">
</form>
<script type="text/javascript">
    document.getElementById('form').submit();
</script>

但我想通过控制器完成,而不是通过表单提交,因此无法更改任何数据。

这是我的控制器方法,我尝试了两种方法:redirect()Guzzle

  1. 我试图重定向()到包含post数据的url,但我得到“此路由不支持GET方法。支持的方法:post。”
public function postToPaymentServer(Request $request)
{
    $amount=$request['amount'];
    $payment=[
        'amount'=>$amount,
        'auth-id'=>config('auth-id')
    ];
    return redirect(url('api/payment/server'))->with(compact('payment'));
}

ps.这里我做了一个本地路由来模拟路由/api.php中的payment.com

Route::post('payment/server','PaymentController@server');
public function postToPaymentServer(Request $request)
{
    $amount=$request['amount'];
    $payment=[
        'amount'=>$amount,
        'auth-id'=>config('auth-id')
    ];
    $client = new Client();
    $response = $client->post('payment.com',[
        'body'=>[
            'payment'=>$payment,
            'allow_redirects' => true
        ],
    ]);
    return $response;
}

如有任何建议,将不胜感激!

共有1个答案

宇文飞翮
2023-03-14

您需要从重定向历史中检索最后一个位置并重定向到此位置。

查看track_重定向选项:

use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;

$httpClient = new Client();

$response = $httpClient->post(
    'http://payment.com',
    [
        RequestOptions::ALLOW_REDIRECTS => [
            'max' => 5,
            'track_redirects' => true,
        ],
        RequestOptions::FORM_PARAMS => [
            'payment' => $payment,
        ],
    ]
);

$lastLocation = end($response->getHeaders()['X-Guzzle-Redirect-History']);

return redirect($lastLocation);
 类似资料:
  • 问题内容: 我必须承认我有点困惑…我以前从未做过,而且我显然缺少一些东西 当我通过http.post将数据传递到我的php文件时,我似乎无法收集数据… 有人可以告诉我为什么这行不通吗? FormData会显示在控制台日志中,并且可以确定正在写入文件。但是,看起来好像没有数据传递。 这是在我的php文件中。试图将提交表单中的数据写入文件中(只是测试)。 问题答案: 经过大量研究后,我发现这有点像ph

  • 问题内容: 如何将POST数据发送到PHP中的URL(无表单)? 我将使用它来发送变量以完成并提交表单。 问题答案: 如果您希望将数据从PHP代码本身发布到URL(不使用html表单),则可以使用curl来完成。它看起来像这样: 这会将post变量发送到指定的url,页面返回的内容将在$ response中。

  • 我有一个简单的形式,我想转换成一个PHP后端系统。 现在,此表单有一个提交到URL的操作—URL仅在提交了名为的数据以及正确的信息(已编码的xml)时才接受邀请。 作品:-请注意,输入名称被称为和值包含的已经和它完美的工作。 但是,我希望通过在PHP中移动元素来实现以下目标,因为大量信息都是通过这种方式传递的。 请注意:链接是https,但它在本地不起作用,所以我不得不在CURL中禁用它。 我一直

  • 嘿, 我无法通过querystring将数据发布到action方法,action方法位于我的代码下面的控制器类中。 我键入一个url“http://localhost:53459/api/esb/post/test“发布价值,什么都不会发生 任何帮助都将不胜感激。

  • DaoCloud 文档后台 DaoCloud 文档采用 Grav CMS,内容通过 Markdown 格式写作,并在 GitHub 上完成版本管理、协作开发等工作。 创建本地环境 下载 Grav 主程序 把 ZIP 包解压缩到您的 weboot 目录, (例如 ~/www/grav-core/) 下载 并解压缩,或者直接克隆, 把 daocloud-docs 覆盖 grav-core 的 user

  • 问题内容: 我有一个名称列表和一些带有产品名称的按钮。当单击其中一个按钮时,列表信息将发送到PHP脚本,但是我无法点击“提交”按钮来发送其值。怎么做?我将代码简化为以下内容: 发送页面: 接收页面:buy.php 除了发送提交按钮值外,其他所有东西都可以正常工作。 问题答案: 按钮名称未提交,因此未设置php 值。如in 评估为false。