Обновление инвентаря Walmart не работает перед 400

Я пытаюсь обновить инвентарь walmart, используя curl api, но столкнулся с проблемой с кодом ответа 400 ошибок.

Вот мой пример кода: я следовал за Walmart доктор, посетил код ошибки, связанный с документами walmart, и обнаружил, что они просят отправить заявку, поэтому публичного решения не найдено.

$URL = "https://marketplace.walmartapis.com/v2/inventory?sku=xxxxx";
$RequestMethod = 'PUT';
$Timestamp = round(microtime(true) * 1000); //Current system timestamp
$WalmartConsumerID = "xxxxxxxxxxxxxxxxxxxxxxx";

$Signature = _GetWalmartAuthSignature($URL, $RequestMethod, $Timestamp);



$headers = array();
$headers[] = "Accept: application/xml";
$headers[] = "Content-type: application/xml";
$headers[] = "WM_SVC.NAME: Walmart Marketplace";
$headers[] = "WM_QOS.CORRELATION_ID: ".mt_rand();
$headers[] = "WM_SEC.TIMESTAMP: ".$Timestamp;
$headers[] = "WM_SEC.AUTH_SIGNATURE: ".$Signature;
$headers[] = "WM_CONSUMER.ID: ".$WalmartConsumerID;
$headers[] = "WM_CONSUMER.CHANNEL.TYPE: 0f3e4dd4-0514-4346-b39d-af0e00ea";




$data = file_get_contents('inventory.xml');
$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
$response = curl_exec($ch);
echo $erroe = curl_error($ch);
echo $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

Ответ: 400

Это именно то, что объясняется в Walmart Api Doc.

P.S: Получите инвентарь, получите заказ и обновите цену, работающую хорошо с тем же ключом и подписью.
Вот мои данные XML

 <?xml version="1.0" encoding="UTF-8"?>
<inventory xmlns:ns2="http://walmart.com/">
<sku>Cxxxx2</sku>
<quantity>
<unit>EACH</unit>
<amount>7</amount>
</quantity>
<fulfillmentLagTime>1</fulfillmentLagTime>
</inventory>

1

Решение

Правильно ли работают другие API? Причина, по которой я спрашиваю, состоит в том, что я вижу, что в примере кода для _GetWalmartAuthSignature вы не передаете идентификатор потребителя и закрытый ключ, который необходим для генерации подписи.

Кроме того, вы можете опубликовать всю ошибку, которую вы получаете?

У них также есть новый метод аутентификации на основе токенов, который намного проще.

https://developer.walmart.com/#/apicenter/marketPlace/latest#apiAuthentication

Кроме того, проверьте, работает ли инвентарь GET нормально или нет для того же номера

—ОБНОВИТЬ —-

Похоже, что в запросе отсутствует

<?xml version="1.0" encoding="UTF-8"?>

— ОБНОВИТЬ —

Ваш xml не соответствует xsd
Используйте это (удаление: ns2)

<?xml version="1.0" encoding="UTF-8"?>
<inventory xmlns="http://walmart.com/">
<sku>Cxxxx2</sku>
<quantity>
<unit>EACH</unit>
<amount>7</amount>
</quantity>
<fulfillmentLagTime>1</fulfillmentLagTime>
</inventory>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]