11

コントローラーから外部 URL への投稿要求を行う方法を探しています。投稿されるデータはphp配列です。受け取る URL は、外部 URL の e コマース API です。投稿はコントローラーメソッドから行う必要があります。URL は、'success'、'error'、'failure'、または 'trylater' の文字列で応答する必要があります。次のことを試しましたが、成功しませんでした:

    return Redirect::to("https://backoffice.host.iveri.com/Lite/Transactions/New/Authorise.aspx", compact($array));

私もcurlを試しました:

    $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'

データを外部 URL に送信して POST リクエストを適切に実行する方法を教えてください。コントローラーからの ajax 投稿も役に立ちますが、試してみましたが成功しませんでした。しかし、私はlaravel phpの回答をもっと好むでしょう。ありがとうございました。

4

3 に答える 3

2

これまで試してきた方法で CURL を使用するか、このスレッドをチェックして、Guzzle http クライアントでの実行に関する簡単な回答を確認してください。Guzzle は、Laravel で使用するのに適したクライアントのようです...

コントローラーから外部 API 関数を呼び出す、LARAVEL 4

于 2014-07-08T05:59:54.933 に答える