百科生活 投稿
关于【微信模板消息编码】,今天涌涌小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
- 内容导航:
- 1、微信模板消息编码:【踩坑系列】发送微信模板消息返回40165 invalid weapp pagepath
- 2、微信模板消息编码,微信发送模板消息功能
1、微信模板消息编码:【踩坑系列】发送微信模板消息返回40165 invalid weapp pagepath
登录地址:mp.weixin.qq.com
新建模板消息的方法如下所示:
1)在左侧“广告与服务”菜单下找到“模板消息”菜单

2)点击”从历史模板库中添加“按钮

3)找到合适的模板后,点击”详情”,打开模板详情页

4)在模板详情页点击”添加“按钮,将模板添加到自己的公众号中

5)添加完成后,就可以拿到模板id

1.2 调用发送模板消息接口
模板消息接口文档:
developers.weixin.qq.com/doc/offiacc…
发送模板消息接口:
api.weixin.qq.com/cgi-bin/mes…
按照接口文档要求,最终调用接口的请求报文大致如下所示:
{ "template_id":"RJr0LvTwWtwKNNeorUtfBF-ClwCRCB9GAfO55H6DjtE", "touser":"oYLSx0S7Oci-kbNIrPA461q9g1iE", "data":{ "first":{ "color":"", "value":"尊敬的客户,感谢您选择****,\n以下为*****交易风险提示" }, "keyword1":{ "color":"", "value":"沪C88V88" }, "keyword2":{ "color":"", "value":"2023年03月28日 15:56" }, "keyword3":{ "color":"", "value":"*****交易风险提示\n为保障您的财产安全,谨防法律风险,***提醒您,请遵循平台交易流程,切勿与任何非平台第三方单独/私下交易,\n如您遇到有****买家或员工向您表示想私下交易的,可向平台进行举报,经查证属实可获奖励 800 元/单。\n" }, "remark":{ "color":"#fe2d46", "value":"如需举报,请点击本条消息 >>>" } }, "miniprogram":{ "appid":"wx356234er34567dv", "pagepath":"pages/order/detail?id=23" }}复制代码
说明:
1)如果模板消息中的内容需要换行,如上面的first里的内容,可以使用换行符\n。
2)如果模板消息中的内容需要自定义字体颜色,如上面的remark里的内容,可以给color赋值为自定义的颜色。
提测后,测试反馈一直收不到微信模板消息,查看日志后,发现调用发送模板消息接口后,一直返回40165这个错误码,消息未发送成功。
响应报文如下所示:
{ "errcode":40165, "errmsg":"invalid weapp pagepath rid: 64229d9f-2e863b15-2db557df"}复制代码
2. 原因分析
看到40165这个错误码,想先去微信接口文档中查找下这个错误码的说明,结果文档中并没有找到,
然后根据errmsg的提示猜测可能是小程序的跳转地址,微信识别不了,所以代码先把跳转小程序的部分注释了,再次发送,
发现消息发送成功了,证实消息发送失败确实是因为小程序跳转地址导致的。
和前端沟通后,得知这个跳转地址,是本次需求新加的,处于小程序的开发版中,小程序正式版中暂时没有该地址,
所以导致发送微信模板消息一直报这个错。
2、微信模板消息编码,微信发送模板消息功能
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.IO;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace Common
{
public class WeChat
{
private const string appid = "wx5549020498b877c2";
private const string secret = "23e4036a44dd0f0d700cd659daf2c5b7";
public class AccessToken
{
public string access_token { get; set; }
public int expires_in { get; set; }
public DateTime CreateDate { get; set; }
}
public void SendTemplete(string temid,string touser,object data)
{
var token = GetAccessToken();
var postUrl = string.Format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}", token);
var msgData = http://www.029ztxx.com/tg/new
{
touser = touser,
template_id = temid,
data = http://www.029ztxx.com/tg/data
};
var j = JsonConvert.SerializeObject(msgData);
var res = GetDataByPost(postUrl, j);
}
private string GetAccessToken()
{
var token = new AccessToken();
var accessToken = CacheHelper.GetCache("accessToken");
if (accessToken == null)
{
//获取TOKEN
token = GetToken();
CacheHelper.SetCache("accessToken", token);
}
else
{
token = CacheHelper.GetCache("accessToken") as AccessToken;
//判断时间
if (DateTime.Now >token.CreateDate.AddSeconds(token.expires_in))
{
//获取TOKEN
token = GetToken();
CacheHelper.SetCache("accessToken", token);
}
}
var t = CacheHelper.GetCache("accessToken") as AccessToken;
return t.access_token;
}
private AccessToken GetToken()
{
string apiurl = $"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}";
string res = GetDataByPost(apiurl);
var v= JsonConvert.DeserializeObject
v.CreateDate = DateTime.Now;
return v;
}
private string GetDataByPost(string url,string postDatahttp://www.029ztxx.com/tg/= "")
{
string result = "";
byte[] byteData = http://www.029ztxx.com/tg/Encoding.GetEncoding("UTF-8").GetBytes(postData);
try
{
HttpWebrequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/x-www-form-urlencoded";
request.Referer = url;
request.Accept = "*/*";
request.Timeout = 30 * 1000;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
request.Method = "POST";
request.ContentLength = byteData.Length;
Stream stream = request.GetRequestStream();
stream.Write(byteData, 0, byteData.Length);
stream.Flush();
stream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream backStream = response.GetResponseStream();
StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
result = sr.ReadToEnd();
sr.Close();
backStream.Close();
response.Close();
request.Abort();
}
catch (Exception ex)
{
result = ex.Message;
}
return result;
}
}
}
使用代码
var wx = new WeChat();
var data = http://www.029ztxx.com/tg/new
{
first = new {value="http://www.029ztxx.com/tg/1"},
keyword1=new {value="http://www.029ztxx.com/tg/2"},
keyword2 =new {value="http://www.029ztxx.com/tg/3"},
keyword3 =new {value="http://www.029ztxx.com/tg/4"},
keyword4 =new {value="http://www.029ztxx.com/tg/5"},
remark=new {value="http://www.029ztxx.com/tg/remark"}
};
wx.SendTemplete("2l8wR0HMUXJkVldvgcSaFFmUCVgePhZ7dKzNDSbp8NA", "__openId__", data);
本文关键词:微信消息代码,微信模板消息编码是什么,微信编码是什么意思,微信消息编辑器,微信模板消息编码怎么设置。这就是关于《微信模板消息编码,发送微信模板消息返回40165》的所有内容,希望对您能有所帮助!
- 上一篇: 绿萝对猫有毒吗,猫咪吃了一口绿萝
- 下一篇: 我家门前有两棵树,我家的门口有两棵树
- 最近发表