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

使用Google App Script的UrlFetchApp调用WooCommerce API POST请求返回空响应

Google Apps Script调用WooCommerce API创建客户返回空数组(POST被识别为GET)

问题描述

使用Google Apps Script的UrlFetchApp复现WooCommerce API创建客户的请求时,返回状态码200但响应为空数组[],POST请求似乎被当作GET处理。补充信息:

  • 调用customers端点的GET请求返回空数组(站点为新站点,无客户)
  • 调用orders端点的GET请求能正常返回测试订单列表
  • Postman测试同样请求结果一致

排查与解决方案

1. 验证API密钥权限

确保使用的Consumer Key(ck)和Consumer Secret(cs)拥有read_write权限,而非只读权限。若密钥为只读,POST请求会被静默降级为GET,返回空客户列表。

  • 登录WooCommerce后台,进入WooCommerce > 设置 > 高级 > REST API,检查对应密钥的权限配置。

2. 补全URL协议

配置中的domain必须包含完整的HTTPS协议(如https://yourdomain.com),缺失协议会导致重定向,POST请求被自动转为GET。修改配置对象:

let p = {
  "ck":"myck",
  "cs":"mycs",
  "domain":"https://mydomain.com",
  "api_version":"/wp-json/wc/v3/"
};

3. 禁用自动重定向跟随

UrlFetchApp默认自动跟随重定向,可能导致POST请求在跳转时转为GET。在请求选项中添加followRedirects: false并开启异常捕获:

var options = {
    'method': 'post',
    'headers': headers,
    'contentType' : 'application/json',
    'muteHttpExceptions': true,
    'followRedirects': false,
    'payload':JSON.stringify(customer)
}

若返回3xx状态码,说明存在重定向问题,需修正URL。

4. 添加必填的密码字段

WooCommerce创建客户的API中,password是必填字段(除非站点配置自动生成密码)。缺失该字段会导致请求无法创建客户,返回异常空响应。修改客户对象:

let customer = {
  "email": "john.doe@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "username": "john.doe",
  "password": "MySecurePass123!", // 添加必填密码字段
  "billing": { ... },
  "shipping": { ... }
}

5. 检查站点固定链接设置

WooCommerce REST API要求站点使用非默认的固定链接结构(如“文章名称”),默认的?p=123格式会导致API无法正确识别POST请求。

  • 登录WordPress后台,进入设置 > 固定链接,选择非默认选项并保存设置。

内容的提问来源于stack exchange,提问作者Giulio Cornelio Grossi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:50:32