You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Walmart市场API按SKU获取商品返回401错误求排查方案

问题排查及修复方案

返回401状态码属于接口认证校验失败,具体问题及修复方案如下:

  • 打印CURLOPT_HTTPGET得到80属于正常现象,这是PHP CURL扩展的内置常量值,不是错误返回值,无需处理。
  • 核心错误1:商品查询接口的Authorization计算逻辑错误,你将client_id和client_secret用加号+拼接后做base64编码,正确应该和获取token接口一致,用冒号:拼接,直接导致Basic认证校验不通过。
  • 核心错误2:access_token对应的请求头参数名写错,沃尔玛官方要求的请求头为WM_SEC.ACCESS_TOKEN,你写为了WM_SEC_ACCESS_TOKEN,把点号替换成了下划线,服务端无法识别你传入的access_token。
  • 冗余配置:GET请求没有提交请求体,不需要携带Content-Type: application/json请求头,虽然不会直接导致报错,但属于不合理配置。

修正后的代码片段

$token = getToken();
$data = getWalmartDetail();
$client_id = $data['client_id'];
$client_secret = $data['client_secret'];
// 修正1:拼接用冒号而非加号
$authorization = base64_encode($client_id.":".$client_secret);
$url = "https://marketplace.walmartapis.com/v3/items/1234567?productIdType=SKU";

$ch = curl_init();
$qos = uniqid();
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 60,
    CURLOPT_HEADER => false,
    CURLOPT_HTTPHEADER => array(
        "WM_SVC.NAME: Walmart Marketplace",
        "WM_QOS.CORRELATION_ID: $qos",
        "Authorization: Basic $authorization",
        // 修正2:请求头用点号而非下划线
        "WM_SEC.ACCESS_TOKEN: $token",
        "Accept: application/json",
    ),
    CURLOPT_HTTPGET => true,
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($code == 201 || $code == 200){
    $response = json_decode($response,true);
    echo "<pre>";
    print_r($response);
    exit();
} else{
    print_r("No");
    return false;
}

修改完成后重新请求即可正常获取商品详情。

内容的提问来源于stack exchange,提问作者raobabar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:27:02