微信公眾號開發【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、截圖

       

 

       

 

 七、遠程服務器代碼發布

        

 

     

       想要源碼的可以聯系我。希望對大家有幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM