Ошибка Magento Rest API: «Подпись недействительна. Проверьте и повторите попытку.` после добавления фильтра searchCriterPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка Magento Rest API: «Подпись недействительна. Проверьте и повторите попытку.` после добавления фильтра searchCriter

Сообщение Anonymous »

Я пытаюсь отправить запрос API к API magento 2, чтобы получить все заказы. Я отправляю этот запрос из Laravel, используя файл Illuminate\Support\Facades\Http. Чтобы аутентифицироваться в magento, я использую учетные данные интеграции Oauth.
Я предоставил ресурсу интеграции доступ «все», чтобы упростить тестирование.
Версия Magento — 2.4.4

Код: Выделить всё

$orderEndpoint = '/rest/V1/orders';

$oauthParams = [
'oauth_consumer_key' => $clientId,
'oauth_nonce' => md5(uniqid(rand(), true)),
'oauth_signature_method' => 'HMAC-SHA256',
'oauth_timestamp' => time(),
'oauth_token' => $accessToken,
];

ksort($oauthParams);

$queryParams = [
'searchCriteria[currentPage]' => 1,
'searchCriteria[pageSize]' => 10,
];

$baseString = 'GET&' . rawurlencode($baseUrl . $orderEndpoint) . '&' . rawurlencode(http_build_query(array_merge($oauthParams, $queryParams), '', '&', PHP_QUERY_RFC3986));
dump($baseString);

$signatureKey = rawurlencode($consumerSecret) . '&' . rawurlencode($tokenSecret);
$signature = base64_encode(hash_hmac('sha256', $baseString, $signatureKey, true));
dump($signature);

$oauthParams['oauth_signature'] = $signature;

$authorizationHeader = 'OAuth ' . http_build_query($oauthParams, '', ', ', PHP_QUERY_RFC3986);
$fullUrl = $baseUrl . $orderEndpoint . '?' . http_build_query(array_merge($oauthParams, $queryParams));
dump($fullUrl);

$response = Http::withHeaders([
'Authorization' => $authorizationHeader,
])->get($baseUrl . $orderEndpoint, $queryParams);

if ($response->successful()) {
$orderData = $response->json();
dd($orderData);
} else {
dd($response->json());
}
Это мой код, и он работает так, как и должен, но когда я пытаюсь изменить $queryParams на:

Код: Выделить всё

$queryParams = [
'searchCriteria[filter_groups][0][filters][0][field]' => 'status',
'searchCriteria[filter_groups][0][filters][0][value]' => 'complete',
'searchCriteria[currentPage]' => 1,
'searchCriteria[pageSize]' => 10,
];
Я получаю сообщение об ошибке. Подпись недействительна. Проверьте и повторите попытку.
Кто-нибудь знает, что я делаю неправильно и какое может быть решение?

Подробнее здесь: https://stackoverflow.com/questions/775 ... in-after-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»