错误状态码查询地址: 官方文档
全量上传商品规则地址: 官方规则文档
第一步:
获取微信调取接口统一凭证,并进行缓存, 有效时长2小时
微信官方文档: 获取全局调用凭证文档
- 全局凭证, 有效时长为2小时, 所以定时每两小时请求一次
def get_access_token():
"""
"""
payload = {
'grant_type': 'client_credential',
'appid': APP_ID,
'secret': APP_SECRET
}
# 建立reids连接
conn = redis.Redis ( connection_pool=POOL )
# 获取 token
access_token = conn.get("ACCESS_TOKEN")
if not access_token:
req = requests.get('https://api.weixin.qq.com/cgi-bin/token', params=payload, verify=False)
access_token = req.json().get('access_token')
# 保存到redis 中, 有效时长7200秒
conn.set('ACCESS_TOKEN', access_token, ex=7200)
第二步:
获取商品类目(上传商品时有些必填参数,是在调用这个接口后返回的)
微信文档地址: 获取商品类目文档
请求地址: https://api.weixin.qq.com/shop/cat/get?access_token=xxxxx
请求方式: POST
- 这里需注意官方文档没有请求参数的示例, 我原本以为没有, 只需要拼接url凭证就好,其实不然, post 请求必须得是JSON 格式.
- 该请求后的结果不是常变参数, 所以记得缓存, 我是存在msyql每天定时请求一次更新参数.
请求参数示例:
payload = {
"access_token": access_token
}
代码示例:
def get_category():
query_cate_url = "https://api.weixin.qq.com/shop/cat/get?access_token={}".format(access_token)
requests.packages.urllib3.disable_warnings()
# 请求类目接口
data = {
"access_token":access_token
}
res = requests.post(url=query_cate_url, data=json.dumps(data), verify=False)
c_data = res.json
返回值
{
'errcode': 0,
'third_cat_list': [{
'third_cat_id': 1007,
'third_cat_name': '漱口水',
'qualification': '',
'qualification_type': 0,
'product_qualification': '',
'product_qualification_type': 0,
'first_cat_id': 1001,
'first_cat_name': '个人护理',
'second_cat_id': 1002,
'second_cat_name': '口腔护理'
}, {
'third_cat_id': 1154,
'third_cat_name': '厨房储物器皿',
'qualification': '',
'qualification_type': 0,
'product_qualification': '国产的塑料、密胺或纸质产品需上传《全国工业产品生产许可证》 ',
'product_qualification_type': 1,
'first_cat_id': 1142,
'first_cat_name': '厨具',
'second_cat_id': 1151,
'second_cat_name': '厨房配件'
},]
}
第三步
获取 特殊商品, 以及品牌等, 需要上传品牌信息,以及 类目资质信息
第四步:
商品管理
微信官方文档: 商品管理
注意:
-
third_cat_id请根据获取类目接口拿到,并确定其qualification_type类目资质是否为必填,若为必填,那么要先调类目资质审核接口进行该third_cat_id的资质审核;
-
qualification_pics请根据获取类目接口中对应third_cat_id的product_qualification_type为依据,若为必填,那么该字段需要加上该商品的资质图片;
-
若需要上传某品牌商品,需要按照微信小商店开通规则开通对应品牌使用权限。微信小商店品牌开通规则:点击跳转,若无品牌可指定无品牌
(无品牌默认brand_id: 2100000000)。 -
库存字段stock_num注意如果是0则无法在视频号直播上架该商品,库存和价格字段可以通过免审更新接口更新
-
需要注意的是商品更新时都需要product_id, 所以在我们上传商品时,返回的product_id需要存入本地库表
请求方式: POST
请求类型: JSON / application/json;charset=utf-8
添加商品
请求地址: https://api.weixin.qq.com/shop/spu/add?access_token=xxxxxxxxx
更新商品
请求地址: https://api.weixin.qq.com/shop/spu/update?access_token=xxxxxxxxx
更新商品部分字段(免审核)
请求地址: https://api.weixin.qq.com/shop/spu/update_without_audit?access_token=xxxxxxxxx
上架商品
请求地址: https://api.weixin.qq.com/shop/spu/listing?access_token=xxxxxxxxx
下架商品
请求地址: https://api.weixin.qq.com/shop/spu/delisting?access_token=xxxxxxxxx
获取商品
请求地址: https://api.weixin.qq.com/shop/spu/get?access_token=xxxxxxxxx
获取商品列表
请求地址: https://api.weixin.qq.com/shop/spu/get_list?access_token=xxxxxxxxx
删除商品
请求地址: https://api.weixin.qq.com/shop/spu/del?access_token=xxxxxxxxx
请求参数示例官方已经很清楚了, 对应的去做数据填充就好!
请求代码示例:
def add_goodsInfo(access_token):
access_token = access_token
query_url = "https://api.weixin.qq.com/shop/spu/update?access_token={}".format(access_token)
res = requests.post(url=query_url, data=json.dumps(payload), headers=headers, verify=False)
关于同步上商品审核通知怎么看?
请移步: 微信消息回调
关于同步商品时, 通知上传商品中文出现乱码,解决办法?
请移步: 中文乱码
持续更新相关要求信息
- 生成订单的ticket全量校验开启,请商家务必提前传入所有商品并通过审核,或取消使用交易组件,否则将导致未上传的商品无法交易
- 官方会根据半小时内所提交的商品进行批量抽检, 若过关率高则一致放行,除了没过的, 如果抽检过关率低, 那么则全部打回,重新上传, 所以上传之前提前查看相关规则: 商品名称及详情相关规则
最后更新时间: 2021-02-05
后续会持续更新相关的接口信息, 避免采坑
可联系博主,相互学习交流