#php #api #curl #walmart-api
Вопрос:
Я устраняю неполадки в Walmart.Ошибка аутентификации ввода-вывода. Я создал приложение на Walmart.io, Я получил идентификатор клиента, скачал PuTTYgen, создал Открытый и закрытый ключи и сохранил файл .pem в папке проекта.
<?php
$consumer_id = '080ece23-73fd-40a2-9e60-a845b6864f7a';
$sec_key_version = '1'; // Here comes you key version
$private_key_file = 'WM_IO_private_key.pem';
$url = 'https://developer.api.walmart.com/api-proxy/service/affil/product/v2/taxonomy';
$timestamp = time()*1000;
$message = $consumer_id."n".$timestamp."n".$sec_key_version."n";
$pkeyid = openssl_pkey_get_private(str_replace("r", "", file_get_contents($private_key_file)), 'Glocom-WL');
openssl_sign($message, $signature, $pkeyid, OPENSSL_ALGO_SHA256);
$signature = base64_encode($signature);
$signature = str_replace("r", "", $signature);
openssl_free_key($pkeyid);
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
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(
'WM_SEC.KEY_VERSION: '.$sec_key_version,
'WM_CONSUMER.ID: '.$consumer_id,
'WM_CONSUMER.INTIMESTAMP: '.$timestamp,
'WM_SEC.AUTH_SIGNATURE: '.$signature
),
));
$responseObj = curl_exec($curl);
if(curl_exec($curl) === false)
{
echo 'Curl error: ' . curl_error($curl);
}
else
{
echo 'Operation completed without any errors, you have the response';
}
echo "<pre>"; print_r($responseObj);
curl_close($curl);
Когда я запускаю код, я получаю сообщение об ошибке : «{«подробности»:{«Описание»:»Не удалось выполнить аутентификацию по запросу, аутентификация подписи : Не удалось проверить подпись: affil-продукт, версия: 2.0.0, env: prod»,»wm_svc.версия»:»2.0.0″,»wm_svc.name»:»affil-продукт»,»wm_svc.env»:»prod»}}»
Может кто-нибудь, пожалуйста, помочь мне понять, что я могу сделать, чтобы исправить это??