C#微信開發(fā)(服務(wù)器配置)
小編對微信開發(fā)頗感興趣,查閱了網(wǎng)上相關(guān)文章進(jìn)行整理,方便大家一起學(xué)習(xí)。
1、注冊帳號--填寫服務(wù)器配置
在https://mp.weixin.qq.com/ 微信公眾平臺上注冊帳號;
服務(wù)號是公司申請的微信公共賬號,訂閱號是個人申請的,個人權(quán)限比較少;
登錄微信公眾平臺官網(wǎng)后,在公眾平臺后臺管理頁面 - 開發(fā)者中心頁,點(diǎn)擊“修改配置”按鈕,填寫服務(wù)器地址(URL)、Token和EncodingAESKey,其中URL是開發(fā)者用來接收微信消息和事件 的接口URL。Token可由開發(fā)者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進(jìn)行比對,從而驗證安全性)。 EncodingAESKey由開發(fā)者手動填寫或隨機(jī)生成,將用作消息體加解密密鑰。
同時,開發(fā)者可選擇消息加解密方式:明文模式、兼容模式和安全模式。模式的選擇與服務(wù)器配置在提交后都會立即生效,請開發(fā)者謹(jǐn)慎填寫及選擇。加解密方式的默認(rèn)狀態(tài)為明文模式,選擇兼容模式和安全模式需要提前配置好相關(guān)加解密代碼,詳情請參考消息體簽名及加解密部分的文檔。

URL 必須為80端口,并且只能在服務(wù)器上的?。?!
2、驗證URL是否有效

private string Token = ConfigurationManager.AppSettings["Token"];
[HttpGet]
[ActionName("Index")]
public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
{
if (CheckSignature.Check(signature, timestamp, nonce, Token))
{
return Content(echostr);//返回隨機(jī)字符串則表示驗證通過
}
else
{
return Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token) + "。如果你在瀏覽器中看到這句話,說明此地址可以被作為微信公眾賬號后臺的Url,請注意保持Token一致。");
}
}
/// <summary>
/// 檢查簽名是否正確
/// </summary>
/// <param name="signature"></param>
/// <param name="timestamp"></param>
/// <param name="nonce"></param>
/// <param name="token"></param>
/// <returns></returns>
public static bool Check(string signature, string timestamp, string nonce, string token = null)
{
return signature == GetSignature(timestamp, nonce, token);
}
/// <summary>
/// 返回正確的簽名
/// </summary>
/// <param name="timestamp"></param>
/// <param name="nonce"></param>
/// <param name="token"></param>
/// <returns></returns>
public static string GetSignature(string timestamp, string nonce, string token = null)
{
token = token ?? Token;
var arr = new[] { token, timestamp, nonce }.OrderBy(z => z).ToArray();
var arrString = string.Join("", arr);
//var enText = FormsAuthentication.HashPasswordForStoringInConfigFile(arrString, "SHA1");//使用System.Web.Security程序集
var sha1 = System.Security.Cryptography.SHA1.Create();
var sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString));
StringBuilder enText = new StringBuilder();
foreach (var b in sha1Arr)
{
enText.AppendFormat("{0:x2}", b);
}
return enText.ToString();
}
提交配置即可,驗證成功才能夠繼續(xù)使用更多的功能。如果提交失敗的話,可以自己寫個日志查看原因。
精彩專題分享:ASP.NET微信開發(fā)教程匯總,歡迎大家學(xué)習(xí)。
小編也是剛剛接觸微信開發(fā),之前整理了幾篇asp.net微信開發(fā)的文章,今天開始整理關(guān)于C#微信開發(fā)的相關(guān)知識,由于小編也是初學(xué),如果有嚴(yán)謹(jǐn)或者是錯誤的地方,請大家多多諒解,大家共同進(jìn)步。
相關(guān)文章
C#中調(diào)用SAPI實現(xiàn)語音識別的2種方法
這篇文章主要介紹了C#中調(diào)用SAPI實現(xiàn)語音識別的2種方法,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下2015-06-06
Dynamic和Var的區(qū)別及dynamic使用詳解
C#中的很多關(guān)鍵詞用法比較容易混淆,var和dynamic就是其中一組,他們都可以申明動態(tài)類型的變量,但是本質(zhì)上他們還是有不少區(qū)別的,下面通過本文給大家介紹Dynamic和Var的區(qū)別及如何正確使用dynamic,需要的朋友參考下2016-01-01
C#數(shù)據(jù)結(jié)構(gòu)與算法揭秘二 線性結(jié)構(gòu)
本文中,我們討論了什么是線性結(jié)構(gòu),線性結(jié)構(gòu)有哪些特點(diǎn),并且詳細(xì)介紹了一個最簡單線性結(jié)構(gòu)順序表,并且通過源代碼對她進(jìn)行一些列的分析,最后還舉了兩個例子,讓我們更好的理解順序表2012-11-11

