微信公众号开发【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         }
View Code

       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         }
View Code
 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         }
View Code

      6.3、截图

       

 

       

 

 七、远程服务器代码发布

        

 

     

       想要源码的可以联系我。希望对大家有帮助。

posted on 2020-08-19 11:43  木乃伊人  阅读(957)  评论(11编辑  收藏  举报

导航