微信的东西,第一次玩,记录下全过程,略过申请小程序步骤
1:配置类目,建议在申请小程序的时候多选几个类目,类目越多,可选的消息模版越多,修改地址(传送门 路径: 设置-基本设置-服务类目)
2:设置推送消息模版地址:传送门 选择公共模版,这一步与上一步选择的类目相关。
3:配置服务器域名+消息推送 地址:传送门
1):服务器域名配置:
路径:开发-开发设置-服务器域名,前四个都填写(注意需要80或443端口),如下图
2):代码编写:此步骤是为了给微信服务器提供验证用,就是说我们要写一个接口(GET方式),给微信调用,具体参数如下
文档地址:传送门参数描述
signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp时间戳
nonce随机数
echostr随机字符串
以下是我的code,可以直接使用(netcore版本)///
/// 接口认证
///
///
///
///
///
///
[HttpGet]
[Route("GetWechatSubscription")]
[SkipResponseDataFilter]
public string WechatSubscription(string echostr, string signature, string timestamp, string nonce)
{
string token = "jdcommonpushmessage123";//此处token需要保存下,第三步会用到
if (!CheckSignature(token, signature, timestamp, nonce))
{
//echostr = "验证不正确";
throw new UserFriendlyException("token验证不正确");
}
return echostr;
}
///
/// 验证微信签名
///
private bool CheckSignature(string token, string signature, string timestamp, string nonce)
{
string[] ArrTmp = { token, timestamp, nonce };
Array.Sort(ArrTmp);
string tmpStr = string.Join("", ArrTmp);
var data = SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(tmpStr));
var sb = new StringBuilder();
foreach (var t in data)
{
sb.Append(t.ToString("X2"));
}
tmpStr = sb.ToString();
tmpStr = tmpStr.ToLower();
if (tmpStr == signature)
{
return true;
}
else
{
return false;
}
}
接口写好了,那怎么调用呢?请看第三条
3)我们在第一步的时候填写了服务器域名,那么
(1)把第二步的接口发布到上述的服务器
(2)回到配置服务器域名的页面(点击此处进入传送门),往下拉找到 消息推送进入页面,如下图
参数说明:url--就是第二步发布的接口地址
token--随便输入一个32位的字符串(注意,第二步代码中有 string token = "jdcommonpushmessage123";,这个jd....需要和这个token保持一致)
EncodingAESKey:直接点击右侧随机生成即可,编写代码的时候没用到。
信息加密方式:选择安全模式。
数据格式:json。
然后点击提交,注意:如果能够提交成功,说明第二步写的接口没问题,失败则是接口有问题,可以查看下参数名称、大小写、返回的参数大小写、格式是否与微信要求的一致。
以上便是服务端相关接口,当然只是做了这些是不可能调起下图内容的
还需要前端调微信下发权限接口,点击进入(传送门)
以上便是小程序信息推送,供大家一起交流。