Как вызвать API с использованием сырого ввода с помощью Guzzle - PullRequest
0 голосов
/ 03 августа 2020

У меня есть API, который хорошо работает с Postman, но при попытке вызвать его в коде я получаю ошибки. См. Ниже

В почтальоне Результат в почтальоне

Ниже показано, как я вызываю API в коде:

В коде

 public function pay_bill(Request $request){

        $client = new Client(); //GuzzleHttp\Client

        $username = 'xxxx';
        $password = 'xxx@2020*';

        $credentials = base64_encode("$username:$password");

        $transaction_id = intval($request->input('transaction_id'));
        $amount = (int)$request->input('amount');
        $bill_number = (int)$request->input('bill_number');
        $return_url = $request->input('return_url');
      
        $response = $client->post('https://gatewaytest.e.com:5000/gateway/initialize', [
             'headers' => [
                'Accept' => 'application/json',
                'Authorization' => 'Basic ' .  $credentials,
                'X-API-KEY' =>  '7c4a8d09ca3762af61e59520943dc26494f8941b',
            ],
            'form_params' => [
                'transaction_id' => $transaction_id,
                'total_amount' => $amount,
                'bills' => ["bill_ref" => $bill_number, "amount" => $amount],
                'return_url'=>  $return_url
            ],
            'verify' => true
        ]);

        $transaction_data = $response->getBody();
        return $transaction_data;
   }

Что я делаю не так? Как отправить тело в сыром виде, как в почтальоне? Я предполагаю, что проблема может быть связана с использованием form_params

1 Ответ

0 голосов
/ 03 августа 2020

Наконец-то я нашел решение, как показано ниже:

'bills' => [["bill_ref" => $bill_number, "amount" => $amount]]
...