skip to Main Content

currently i’m trying to test some API endpoint use postman. As we know that postman provide us the information to integrate the request into the code in many different languages. So i select code format PHP-cURL on my laravel framework and it works. however i want to convert PHP-cURL format into laravel Guzzle. but didn’t work.

here is the PHP-cURL code

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://sandbox.plaid.com/asset_report/create',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
   "client_id": "xxxx",
   "secret": "xxxx",
   "access_tokens": ["access-sandbox-xxx"],
   "days_requested": 30,
   "options": {
      "client_report_id": "ENTER_CLIENT_REPORT_ID_HERE",
      "webhook": "https://www.example.com/webhook",
      "user": {
        "client_user_id": "ENTER_USER_ID_HERE",
        "first_name": "ENTER_FIRST_NAME_HERE",
        "middle_name": "ENTER_MIDDLE_NAME_HERE",
        "last_name": "ENTER_LAST_NAME_HERE",
        "ssn": "111-22-1234",
        "phone_number": "1-415-867-5309",
        "email": "ENTER_EMAIL_HERE"
      }
   }
 }',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

this PHP-cURL format can success run and display the response on my laravel. but when i change to Laravel Guzzle.. it display error. here is the guzzle code

use GuzzleHttpClient;

$guzzle = new Client;
$getAccestToken = $guzzle->request('POST', 'https://sandbox.plaid.com/asset_report/create', [
    'headers' => ['Content-Type' => 'application/json'],
    'json' => [
                "client_id" => "xxx",
                "secret" => "xxx",
                "access_token" => [ "access-sandbox-xxx" ] ,
                "days_requested" => 30,
                "options" => [
                        "client_report_id" => "ENTER_CLIENT_REPORT_ID_HERE",
                        "webhook" => "https://www.example.com/webhook",
                        "user" => [
                                "client_user_id" => "ENTER_USER_ID_HERE",
                                "first_name" => "ENTER_FIRST_NAME_HERE",
                                "middle_name" => "ENTER_MIDDLE_NAME_HERE",
                                "last_name" => "ENTER_LAST_NAME_HERE",
                                "ssn" => "111-22-1234",
                                "phone_number" => "1-415-867-5309",
                                "email" => "ENTER_EMAIL_HERE"
                            ]
                    ]
                ]   
]); 

display error

Client error: POST https://sandbox.plaid.com/asset_report/create resulted in a 400 Bad Request response: { "display_message": null, "documentation_url": "https://plaid.com/docs/?ref=error#invalid-request-errors", "error (truncated…)

What is missing on my guzzle code.

please help.

3

Answers


  1. Chosen as BEST ANSWER

    i found the answer. i typo

    "access_token" => [ "access-sandbox-xxx" ] ,
    

    Should with "tokens"

    "access_tokens" => [ "access-sandbox-xxx" ] ,
    

    and it can be run correctly. thank you for all your response.


  2. Laravel has the Http client available which is a wrapper around guzzle:

    $response = Http::withToken($token)->post('yourUrl', [ params ]);
    
    dd($response->body());
    
    Login or Signup to reply.
  3. You should try replacing json with body:

    Also, convert the array into valid JSON format.

    References: https://stackoverflow.com/a/39525059/5192105

    use GuzzleHttpClient;
    
    $guzzle = new Client;
    $getAccestToken = $guzzle->request('POST', 
    'https://sandbox.plaid.com/asset_report/create', [
    'headers' => ['Content-Type' => 'application/json'],
    'body' => json_encode([
                "client_id" => "xxx",
                "secret" => "xxx",
                "access_token" => [ "access-sandbox-xxx" ] ,
                "days_requested" => 30,
                "options" => [
                        "client_report_id" => "ENTER_CLIENT_REPORT_ID_HERE",
                        "webhook" => "https://www.example.com/webhook",
                        "user" => [
                                "client_user_id" => "ENTER_USER_ID_HERE",
                                "first_name" => "ENTER_FIRST_NAME_HERE",
                                "middle_name" => "ENTER_MIDDLE_NAME_HERE",
                                "last_name" => "ENTER_LAST_NAME_HERE",
                                "ssn" => "111-22-1234",
                                "phone_number" => "1-415-867-5309",
                                "email" => "ENTER_EMAIL_HERE"
                            ]
                    ]
                ])   
    ]); 
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search