测试脚本: const talkControllor = require('./wxControllor'); console.log('测试通过公众号给用户发消息'); // 测试发送消息给微信 const _mockData={ userOpenId:'oJv0u5rvPwXZfGDzvFUquo_N30ZM', content:'您的申请已收到,感谢提交!' } talkControllor.reply(_mockData); wxControllor.js完整代码如下: // wxControllor.js const axios = require('axios'); class TalkControllor { // 回复用户消息 static reply(data) { // 转换数据格式 const _body = WeiXinHelper.toText(data); // 发送消息 TalkControllor.Send(_body); } // 发消息给用户 static async Send(msg) { // TODO:test const apiPre='https://api.weixin.qq.com/cgi-bin/'; //const _accessToken = await this.GetAccessToken(); // 获取accesstoken const _accessToken= '62_3ttn31TLHSpOdb-PwugmDsTTKtGyzlqCRb3KEUwt_KtpKMIS7IsHmgj7chgJwTpy6Yizv5kfpdh306pxXrS_iXHQTNVjuNOZIiAFAZKT'; const _json = JSON.parse(msg); //发送 axios.post(apiPre + 'message/custom/send?access_token=' + _accessToken, { //data:JSON.parse(msg) data: { "touser": _json.touser, "msgtype": _json.msgtype, "text": { "content": _json.text.content } }, responseType: 'json', responseEncoding: 'utf8' }) .then(function (response) { console.log('发消息后,微信回复:'); console.log(response.data); }) .catch(function (error) { console.log(error); }) .then(function () { // TODO:记录发送日志 }); } } class WeiXinHelper{ // 转换为微信代码格式 static toText(obj){ let str=WeiXinHelper.template.text; str = str.replace(/{userOpenId}/, obj.userOpenId); str=str.replace(/{content}/, obj.content); return str; } } WeiXinHelper.template={//向公众号发送消息模版(Json格式) text: `{ "touser":"{userOpenId}", "msgtype":"text", "text": { "content":"{content}" } }` } // 将该模块导出 module.exports = TalkControllor;
救命:已认证服务号发消息接口始终返回:40003, invalid openid rid?如图一:能获取到access_token,说明appid和appsecret都是正确的,然后对已关注用户的提问进行回复,调用的接口是:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN,返回40003错误,提示openid不对。但是同样的接口,同样的参数,我在postman和调试工具(https://mp.weixin.qq.com/debug/)都可以正常测试ok,见图二、图三。 麻烦问下该怎么处理,我已经试了在网上找到的所有办法,包括注意顺序,注意格式,重新关注之类的,都不行。救命啊。 图一:(errmsg:'invalid openid rid: 635985d9-3360cafe-7a783cfa') [图片] 图二:用postman调用是成功的,在公众号可以收到发送的消息。 [图片] 图三:用调试工具调用也是成功的,在公众号也能收到发回的消息。 [图片] 图四:关注服务号的微信也能收到从postman和调试工具发的消息。 [图片]
2022-10-27后面怎么解决的这个问题呢?我也遇到了
{"errcode":40003,"errmsg":"invalid openid rid: ?uniformMessage.send用weixinUtils中的httpRequest发送请求返回{"errcode":40003,"errmsg":"invalid openid rid: 5f8fa6b9-17601ed7-4a316948"}用postman发送就可以正常发送
2022-10-27