按照文档说明调用与传参
POST https://api.weixin.qq.com/cgi-bin/guide/cancelguidemassendjob?access_token=ACCESS_TOKEN
{
"task_id":1332414111522783232
}
但是返回值总是
{
"errcode": 40097,
"errmsg": "invalid args hint: [AFgfT0I2e-bSV1Xa] rid: 5fae055e-165941e5-16ffd675"
}
你好,请检查
taskname 超长
remark 超长
pushtime超过30天
openid超过5000个
素材数量超过3个
素材word超长
小程序卡片素材appid为空、title为空、非法
等等这些参数是否符合。
你好,
详细请参考:https://developers.weixin.qq.com/doc/offiaccount/Shopping_Guide/task-account/shopping-guide.cancelGuideMassendJob.html
经过与官方的沟通,发现“取消群发任务接口”没有问题,产生该问题的根源是“获取群发任务列表”的接口:
shopping-guide.getGuideMassendJobList
该接口返回的数据示例如下
{ "errcode": 0, "errmsg": "OK", "list": [ { "task_id": 1332519773019865088, "create_time": 1589016638, "update_time": 1589016638, "push_time": 1589010582, "finish_time": 0, "task_name": "testtask_name111", "task_remark": "testtask_remark111", "material": [ { "type": 1, "word": "testword" }, { "type": 3, "pic_url": "http://mmbiz.qpic.cn/mmbiz_png/pHhTMtqk90rHY17p2cOXN9uhxMLpugicrGmYpljlNuoMbEjDib1S1nAcib3CC4qHOBqHtlOPYGP6OCuQpL5NDyUUA/0" }, { "type": 49, "title": "test_title", "path": "", "appid": "xxxxxxxx", "pic_url": "http://mmbiz.qpic.cn/mmbiz_png/pHhTMtqk90rHY17p2cOXN9uhxMLpugicrGmYpljlNuoMbEjDib1S1nAcib3CC4qHOBqHtlOPYGP6OCuQpL5NDyUUA/0" } ], "buyer_info": [ { "openid": "xxxxxxxxxx", "send_status": 1 } ], "task_status": 1 } ], "total_count": 4 }
其中,task_id的值是uint64_t类型的,经过JSON.parse后会丢失精度,导致实际获取的task_id不正确。所以在使用wx.request获取群发任务列表时,不要返回json,因为官方文档说明会对返回的数据做JSON.parse
正确的做法是改变wx.request的dataType类型为text,然后对返回的data进行task_id数值替换,将数值替换为字符串,然后再JSON.parse,不然所有对task进行操作的接口,都会因为传入错误的task_id而出现参数错误的结果。(如果官方能够调整接口,将task_id的返回值类型修改为字符串,那么就不需要这么麻烦了,也不会再有其他开发人员在这个问题上踩坑)
wx.request({ url: url, method:'POST', data:postData, dataType:'text', header: { 'content-type': 'application/json' }, success: (res) => { //其他判断省略 var dat = res.data; dat = dat.replace(/\"task_id\":(\d+)/g,'"task_id":"$1"'); //最后返回rtn这个JSON var rtn = JSON.parse(dat); }, fail: (err) => { }, complete:()=>{ } })