刚进公司就开始从0开始开发公司的微信小程序,一路上踩过的坑真的多,微信的官方文档和社区真的是槽点满满,不过踩过的最大的一个坑还是客服接入的 消息推送配置,这个问题困扰了我相当长一段时间,补充一句,本人是做C#的官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/message-push.html
第一步:填写服务器配置直接安装要求填写即可:
第二步:验证消息的确来自微信服务器后台进行校验成为开发者,校验步骤没有什么难点,token就是第一步中填写的Token(令牌),按照文档来即可,但是注意这里有一个坑:当初以为 echostr 是一个 string 类型,后来通过写日志记录参数的方法发现 echostr 其实是一个 long 类型附上后台代码:[HttpGet] public long GetTest(string signature, string timestamp, string nonce, long echostr) { //可以记录日志查看微信后台传递的参数 string token = "gggggg1"; Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("token", token); dic.Add("timestamp", timestamp); dic.Add("nonce", nonce); var sortedDict = dic.OrderBy(s => s.Value); var conbineStr = ""; foreach (var s in sortedDict) { conbineStr = conbineStr + s.Value; } //sha1加密 string secret = SHA1(conbineStr, Encoding.UTF8); //可以记录日志 检查加密后的参数是否与 signature 一致 if (secret == signature) return echostr; else return -1; } /// <summary> /// SHA1加密 /// </summary> /// <param name="content"></param> /// <param name="encode"></param> /// <returns></returns> public static string S开通黑鲨2代小程序电话:4006-8开通3D打印耗材小程序电话:4006-838-53038-530HA1(string content, Encoding encode) { try { SHA1 sha1 = new SHA1CryptoServiceProvider(); byte[] bytes_in = encode.GetBytes(content); byte[] bytes_out = sha1.ComputeHash(bytes_in); sha1.Dispose(); string result = BitConverter.ToString(bytes_out); result = result.Replace("-", ""); return result.ToLower(); } catch (Exception ex) { 开通卫衣定制小程序电话:4006-838-530 throw new Exception("SHA1加密出错:" + ex.Message); } }
[HttpGet] public long GetTest(string signature, string timestamp, string nonce, long echostr) { //可以记录日志查看微信后台传递的参数 string token = "gggggg1"; Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("token", token); dic.Add("timestamp", timestamp); dic.Add("nonce", nonce); var sortedDict = dic.OrderBy(s => s.Value); var conbineStr = ""; foreach (var s in sortedDict) { conbineStr = conbineStr + s.Value; } //sha1加密 string secret = SHA1(conbineStr, Encoding.UTF8); //可以记录日志 检查加密后的参数是否与 signature 一致 if (secret == signature) return echostr; else return -1; } /// <summary> /// SHA1加密 /// </summary> /// <param name="content"></param> /// <param name="encode"></param> /// <returns></returns> public static string S开通黑鲨2代小程序电话:4006-8开通3D打印耗材小程序电话:4006-838-53038-530HA1(string content, Encoding encode) { try { SHA1 sha1 = new SHA1CryptoServiceProvider(); byte[] bytes_in = encode.GetBytes(content); byte[] bytes_out = sha1.ComputeHash(bytes_in); sha1.Dispose(); string result = BitConverter.ToString(bytes_out); result = result.Replace("-", ""); return result.ToLower(); } catch (Exception ex) { 开通卫衣定制小程序电话:4006-838-530 throw new Exception("SHA1加密出错:" + ex.Message); } }
结论:当你确认你的代码逻辑没有问题后你就要回头去检查有什么细节遗漏了微信小程序
最新评论