php – Laravel 4将数据从控制器发送到外部URL

我正在寻找一种从控制器发送到外部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答案更多.谢谢.

最佳答案
让我澄清一些东西,并试图指出你正确的方向.

首先,您尝试执行的操作听起来像“从您的网络应用程序发出API请求”.在我如何表达它与你的这个措辞的区别在于它更通用.

>您可以在应用程序中的任何地方发出API请求,而不一定在您的控制器中(不要害怕为API调用等事项添加额外的类/模型)
>我很好奇为什么“必须”在你的控制器中完成?你的用例是什么?
> AJAX不存在于服务器端(在PHP中).这完全是一个特定于JavaScript的“技术”,它描述了JavaScript在客户端对URL的请求.

最后,你想做什么?您需要重定向用户吗?或者您是否需要进行API调用并在应用程序中解析结果?

您尝试的cURL请求应该用于提出API请求.这是在PHP代码中制作API请求的主要方式之一.但是,它不会允许前端的用户看到正在进行和处理的请求.使用cURL(和任何API请求),处理都在您的PHP后台(您的用户看不到)中.

转载注明原文:php – Laravel 4将数据从控制器发送到外部URL - 代码日志