PHP: как сделать запрос GET с аутентификацией HTTP-Basi c - PullRequest
0 голосов
/ 12 февраля 2020

Я хочу получить статус транзакции из этой конечной точки

https://api.sandbox.midtrans.com/v2/[orderid]/status

, но для этого требуется базовый c авторизация, когда я публикую его на URL-адресе, результат, который я получаю:

{
    "status_code": "401",
    "status_message": "Operation is not allowed due to unauthorized payload.",
    "id": "e722750a-a400-4826-986c-ebe679e5fd94"
}

и у меня есть сайт ayokngaji.com, тогда я хочу отправить basi c auth, чтобы получить статус с моим URL. Пример:

ayokngaji.com/v2/[orderid]/status = (BASIC AUTH INCLUDED)

Как мне это сделать?

Я также попытался использовать почтальон и использовать basi c, что работает, и показать правильный результат

когда я ищу его онлайн, он показывает меня как CURL, BASI C AUTH, но я не понимаю ни одного из этих руководств, потому что мой лимит на engli sh и небольшие знания на php

решены:

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.sandbox.midtrans.com/v2/order-101c-1581491105/status",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Accept: application/json",
    "Content-Type: application/json",
    "Authorization: Basic U0ItTWlkLXNl"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

1 Ответ

1 голос
/ 12 февраля 2020

Существует несколько способов сделать запрос GET к конечной точке API. Но разработчики предпочитают делать запросы, используя CURL. Я предоставляю фрагмент кода, который показывает, как установить заголовок Authorization с авторизацией Basi c Auth, как кодировать имя пользователя и пароль с помощью функции php base64_encode() (Basi c Авторизация авторизации поддерживает base64 и как подготовить заголовки к выполнению запроса с использованием библиотеки CURL php.

О! не забудьте заменить имя пользователя , пароль и конечная точка (конечная точка API) на ваши.

Использование CURL

<?php

$username = 'your-username';
$password = 'your-password'
$endpoint = 'your-api-endpoint';

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

$headers = [];
$headers[] = "Authorization: Basic {$credentials}";
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
$headers[] = 'Cache-Control: no-cache';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);

// Debug the result
var_dump($result); 

Использование потоковых контекстов

<?php

// Create a stream
$opts = array(
    'http' => array(
        'method' => "GET",
        'header' => "Authorization: Basic " . base64_encode("$username:$password")
    )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$result = file_get_contents($endpoint, false, $context);

echo '<pre>';
print_r($result);

Вы можете сослаться на это php do c как использовать потоковый контекст, используя file_get_contents().

Надеюсь, это поможет вам!

...