如何用Python脚本通过客户账单邮箱获取WooCommerce订单及客户ID
通过账单邮箱获取WooCommerce订单的Python解决方案
一、直接通过账单邮箱筛选订单
你之前的代码问题在于订单筛选参数格式错误,WooCommerce REST API的订单端点接受billing_email作为直接筛选参数,而非嵌套的billing.email结构。修正后的代码如下:
from woocommerce import API wcapi = API( url="https://siteexample.com", consumer_key="ck_xxx", consumer_secret="cs_xxx", version="wc/v3" ) # 直接通过账单邮箱获取对应订单 orders = wcapi.get("orders", params={"billing_email": "example@email.com"}).json() print(orders)
二、先通过邮箱获取客户ID,再用客户ID获取订单
如果需要先拿到客户ID,再查询该客户的订单,可以分两步调用API:
- 调用
customers端点,通过邮箱筛选出对应客户,提取客户ID - 用客户ID作为参数,调用
orders端点获取订单
代码示例:
from woocommerce import API wcapi = API( url="https://siteexample.com", consumer_key="ck_xxx", consumer_secret="cs_xxx", version="wc/v3" ) # 1. 通过邮箱获取客户信息(WooCommerce默认客户邮箱唯一) customer_data = wcapi.get("customers", params={"email": "example@email.com"}).json() if customer_data: customer_id = customer_data[0]["id"] # 2. 通过客户ID获取订单 customer_orders = wcapi.get("orders", params={"customer": customer_id}).json() print(f"客户ID:{customer_id}") print(f"该客户的订单:{customer_orders}") else: print("未找到该邮箱对应的客户")
注意事项
- 确保你的API密钥拥有读取订单和读取客户的权限,否则会返回权限错误
- WooCommerce默认限制客户邮箱唯一,因此
customers接口返回的结果列表通常只有一个元素
内容的提问来源于stack exchange,提问作者CuloAtomico
相关产品推荐
相关产品推荐

