【发布时间】:2019-05-31 03:26:10
【问题描述】:
我需要post 数据到支付服务(payment.com),redirect 到 payment.com(填写信用卡号等)
传统的做法是这样的:
<form id="form" action="payment.com" method="POST">
</form>
<script type="text/javascript">
document.getElementById('form').submit();
</script>
但我想通过
controller来完成,而不是通过表单提交,所以没有 数据可以更改。
这是我的控制器方法,我尝试了两种方法:redirect() 和Guzzle
- 我尝试
redirect()到带有发布数据的网址,但我得到“此路由不支持 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。这里我做了一个本地路由来模拟routes/api.php中的payment.com
Route::post('payment/server','PaymentController@server');
- 我尝试使用
Guzzle,但它不会重定向到帖子网址。
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;
}
任何建议将不胜感激!
【问题讨论】:
-
您需要在使用 guzzle 发出 post 请求后手动执行重定向 (
return redirect())。 payment.com 文档告诉您具体做什么?是不是需要重定向到api请求返回的部分数据的url? -
@Jeemusu payment.com 文档告诉我通过表单提交发布付款数据
-
@Autodesk 将
$client->post(url('payment.com')更改为$client->post('http://payment.com') -
@Jeemusu 重定向url和post url是一样的:payment.com
-
谢谢@AdityaThakur,事实上这是我的打字错误......哈哈