我正在寻找一种从控制器发送到外部URL的请求的方法.要发布的数据是一个PHP数组.接收的网址是外部网址的电子商务API.该职位必须通过控制器方法完成.网址应以“成功”,“错误”,“失败”或“trylater”字符串回覆.我没有成功尝试过以下内容:
return Redirect::to("https://backoffice.host.iveri.com/Lite/Transactions/New/Authorise.aspx",compact($array));
我也试过卷曲:
$url = 'https://backoffice.host.iveri.com/Lite/Transactions/New/Authorise.aspx'; //url-ify the data for the POST $fields_string =''; foreach($array as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string,'& '); //open connection $ch = curl_init(); //set the url,number of POST vars,POST data curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,count($array)); curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //execute post $result = curl_exec($ch); //close connection curl_close($ch);
要发送的数组的一部分是API用于响应的回调:
'Lite_Website_Successful_url' => 'https://mydomain.com/order/'.$order_id,'Lite_Website_Fail_url' => 'https://mydomain.com/checkout/fail','Lite_Website_TryLater_url' => 'https://mydomain.com/checkout/trylater','Lite_Website_Error_url' => 'https://mydomain.com/checkout/error'
请让我知道如何使用与外部网址一起携带的数据正确执行POST请求.从控制器的ajax职位也将有所帮助,但我尝试没有成功.但我更喜欢一个laravel PHP答案更多.谢谢.
让我澄清一些东西,并试图指出你正确的方向.
原文链接:https://www.f2er.com/laravel/133128.html首先,您尝试执行的操作听起来像“从您的网络应用程序发出API请求”.在我如何表达它与你的这个措辞的区别在于它更通用.
>您可以在应用程序中的任何地方发出API请求,而不一定在您的控制器中(不要害怕为API调用等事项添加额外的类/模型)
>我很好奇为什么“必须”在你的控制器中完成?你的用例是什么?
> AJAX不存在于服务器端(在PHP中).这完全是一个特定于JavaScript的“技术”,它描述了JavaScript在客户端对URL的请求.
最后,你想做什么?您需要重定向用户吗?或者您是否需要进行API调用并在应用程序中解析结果?
您尝试的cURL请求应该用于提出API请求.这是在PHP代码中制作API请求的主要方式之一.但是,它不会允许前端的用户看到正在进行和处理的请求.使用cURL(和任何API请求),处理都在您的PHP后台(您的用户看不到)中.