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

使用PHP调用Square Retrieve Subscription API返回INVALID_REQUEST_ERROR求助

问题解决:Square Retrieve Subscription API 返回 NOT_FOUND 错误

核心原因:请求方法错误

Square的Retrieve Subscription API是GET请求,但你的代码里设置了CURLOPT_POST = TRUE,强制用POST方法访问GET接口,这会导致Square无法正确解析请求,返回「资源未找到」的错误。而API Explorer默认使用正确的GET方法,所以能正常返回结果。

修正后的代码

移除CURLOPT_POST = TRUE(GET是curl默认请求方法,无需额外设置),同时补充curl错误调试逻辑:

$curl_url = "https://connect.squareup.com/v2/subscriptions/" . $subscriptionID;

system_log("curl_url is $curl_url");

if (($subscriptionID != "") && ($curl_url != "")) {
    $ch = curl_init($curl_url);
    curl_setopt_array($ch, array(
        CURLOPT_RETURNTRANSFER => TRUE,
        CURLOPT_HTTPHEADER => array(
            'Square-Version: 2023-09-25',
            'Authorization: Bearer ' . $GLOBALS['square_access_token'],
            'Content-Type: application/json'
        )
    ));

    $response = curl_exec($ch);
    
    // 新增:记录curl错误信息
    if(curl_errno($ch)){
        system_log("Curl error: " . curl_error($ch));
    }
    // 新增:记录HTTP响应状态码
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    system_log("HTTP status code: " . $http_code);
    
    system_log("response is $response");
    curl_close($ch); // 记得关闭curl句柄
}

额外排查建议

  • 核对access token环境:沙盒token只能用于沙盒API环境,生产token对应生产环境,两者不可混用。
  • 清理subscription ID:用trim($subscriptionID)去除ID前后可能存在的空格或特殊字符。
  • 关注HTTP状态码:如果状态码是401,说明token无效;403是权限不足;只有404才是资源本身不存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:06:03