我正在try 调用批处理getItemOffersBatch
使用PHP和curl来签名和进行调用--我可以单独调用getItemOffers
,没有任何问题. 我运行了一个批处理2,我得到了一个403 Forbidden错误-这里是代码(PHP 8):
json_encode($body, JSON_THROW_ON_ERROR);
$post = 'POST';
$body=json_encode($body, JSON_UNESCAPED_SLASHES);
//var_dump($body);
$urlbatch= "https://sellingpartnerapi-na.amazon.com/batches/products/pricing/v0/itemOffers". $body ;
//var_dump($urlbatch);
$ch = curl_init($urlbatch);
curl_setopt_array($ch, [CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true
,CURLOPT_CONNECTTIMEOUT => 5,]);
// var_dump($header);
if ($post) curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
if ($header) curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, fopen('curl.log', 'a+'));
$out = curl_exec($ch);
if (curl_errno($ch)) exit('Error: ' . curl_error($ch));
if ($status !== null) $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
return $out
* 是有效的私有亚马逊数据. 在与亚马逊和使用POSTMAN来回之后,我让它在POSTMAN中工作,但我很难正确添加数据部分,这里是POSTMAN的代码.
curl --location 'https://sellingpartnerapi-na.amazon.com/batches/products/pricing/v0/itemOffers' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'x-amz-access-token: ****' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=****/20240110/us-east-1/execute-api/aws4_request,SignedHeaders=host;user-agent;x-amz-access-token;x-amz-date,Signature=******' \
--data '{
"requests": [
{
"uri": "/products/pricing/v0/items/B000P6Q7MY/offers",
"method": "GET",
"MarketplaceId": "ATVPDKIKX0DER",
"ItemCondition": "New",
"CustomerType": "Consumer"
},
{
"uri": "/products/pricing/v0/items/B001Q3KU9Q/offers",
"method": "GET",
"MarketplaceId": "ATVPDKIKX0DER",
"ItemCondition": "New",
"CustomerType": "Consumer"
}
]
}‘
我try 将数据添加到
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
但这不管用,任何帮助都好,我差不多有了.