微信公众号开发【2、服务器搭建】
一、注册账号
百度微信公众平台,点击进入。
二、公众平台测试账号
点击进入平台后居然是小程序,我也很费解。以前是找到开发->开发者工具->公众平台测试账号,现在毛都没有了。
不过可以点击这里调转。
三、进入公众平台。
这里好像要微信扫码登录。
上面的接口配置信息是给接口服务器端使用,下面的JS接口安全域名是给前端调用。
这里的坑还是多,而且官方文档含糊其辞,这点差评。
首先就是为何要有这个域名。说的直白一点,就是你要想和微信第三方接口通讯,必须要有一个能被外网访问的接口暴露出去供第三方调用。所以你需要有一个服务器和域名。
这里需要注意:
1、服务器随便搞。我的是阿里云的云服务器。
2、域名,这里必须要用域名,不然会配置失败。
3、必须是http的80端口或者https的443默认端口。
4、URL的方法是GET请求,方法名随意。
5、必须把服务器ip添加到白名单。
添加到白名单在微信公众平台添加。
四、现在来测试一下。
js同样的这样就可以了。
五、微信在线测试接口
https://mp.weixin.qq.com/debug
六、代码
服务器后台API接口采用.net core 3.0版本以上。
6.1、接口方法

1 /// <summary> 2 /// 检测接口 3 /// 作用:在注册微信公众号的测试号管理界面,提供接口配置信息。接收微信接入验证请求,并给与响应。 4 /// </summary> 5 /// <param name="signature">微信加密签名</param> 6 /// <param name="timestamp">时间戳</param> 7 /// <param name="nonce">随机数</param> 8 /// <param name="echostr">随机字符串</param> 9 /// <returns></returns> 10 [HttpGet("CheckWeChat")] 11 public string CheckWeChat(string signature, string timestamp, string nonce, string echostr) 12 { 13 log.Debug("微信端成功请求到接口!"); 14 log.Debug($"signature:{signature},timestamp:{timestamp},nonce:{nonce},echostr:{echostr}"); 15 16 if (!string.IsNullOrWhiteSpace(signature) && !string.IsNullOrWhiteSpace(timestamp) && !string.IsNullOrWhiteSpace(nonce) && !string.IsNullOrWhiteSpace(echostr)) 17 { 18 log.Debug("进入验证内部"); 19 20 //读取配置Token,需要和你填写的一样 21 var token = JsonFileHelper.Read("WeChat_TestToken"); 22 23 if (!string.IsNullOrWhiteSpace(token) && WeChatHelper.VerificationSignature(echostr, nonce, signature, timestamp, token)) 24 { 25 log.Debug("成功!"); 26 //如果调用成功,返回随机字符串 27 return echostr; 28 } 29 } 30 return "false"; 31 }
6.2、帮助类

1 public static string GetSha1Hash(string str) 2 { 3 var inputBytes = Encoding.Default.GetBytes(str); 4 5 SHA1 sha = new SHA1CryptoServiceProvider(); 6 7 var result = sha.ComputeHash(inputBytes); 8 9 var sBuilder = new StringBuilder(); 10 11 for (var i = 0; i < result.Length; i++) 12 { 13 sBuilder.Append(result[i].ToString("x2")); 14 } 15 16 return sBuilder.ToString(); 17 }

1 /// <summary> 2 /// 签名验证 3 /// </summary> 4 /// <param name="echostr">随机字符串</param> 5 /// <param name="nonce">随机数</param> 6 /// <param name="signature">微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。</param> 7 /// <param name="timestamp">时间戳</param> 8 /// <param name="token">用户签名</param> 9 /// <returns></returns> 10 public static bool VerificationSignature(string echostr, string nonce, string signature, string timestamp,string token) 11 { 12 string[] StrArray = { token, timestamp, nonce }; 13 Array.Sort(StrArray); 14 var ArrayString = new StringBuilder(); 15 for (var i = 0; i < StrArray.Length; i++) 16 ArrayString.Append(StrArray[i]); 17 var strHash = GetSha1Hash(ArrayString.ToString()); 18 return signature == strHash; 19 }
6.3、截图
七、远程服务器代码发布
想要源码的可以联系我。希望对大家有帮助。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性