一、開發(fā)前的準(zhǔn)備
1.要有一個(gè)公網(wǎng)的地址空間(Azure,阿里云....)2.自己定義一個(gè)Token(自己定義一個(gè)字符串就行,后面寫代碼時(shí)候也會(huì)用到)
3.信息在客戶端,微信服務(wù)器,網(wǎng)站之間的處理過程
開發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請(qǐng)求到填寫的服務(wù)器地址URL上,GET請(qǐng)求攜帶四個(gè)參數(shù):
| 參數(shù) | 描述 |
|---|---|
| signature | 微信加密簽名,signature結(jié)合了開發(fā)者填寫的token參數(shù)和請(qǐng)求中的timestamp參數(shù)、nonce參數(shù)。 |
| timestamp | 時(shí)間戳 |
| nonce | 隨機(jī)數(shù) |
| echostr | 隨機(jī)字符串 |
開發(fā)者通過檢驗(yàn)signature對(duì)請(qǐng)求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)。若確認(rèn)此次GET請(qǐng)求來自微信服務(wù)器,請(qǐng)?jiān)瓨臃祷豦chostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。
三、進(jìn)行編碼(我這里采用的是asp.net MVC的架構(gòu))1.創(chuàng)建一個(gè)MVC的空工程
2.創(chuàng)建一個(gè)微信使用的Controller

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 using System.Web.Security; 7 namespace MvcWeiXin.Controllers 8 { 9 public class WeChatController : Controller10 {11 public const string TOKEN = "*********";12 //13 // GET: /WeChat/14 [HttpGet]15 public string Index(string signature, string timestamp, string nonce, string echoStr)16 {17 if (checkSignature(signature, timestamp, nonce))18 {19 return echoStr;20 }21 return string.Empty;22 }23 /// <summary>24 /// 加密/校驗(yàn)流程如下:25 ///1. 將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序26 ///2. 將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密27 ///3. 開發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來源于微信28 /// </summary>29 /// <param name="signature"></param>30 /// <param name="timestamp"></param>31 /// <param name="nonce"></param>32 /// <returns></returns>33 PRivate bool checkSignature(string signature, string timestamp, string nonce)34 {35 string[] checkArray = { TOKEN, timestamp, nonce };36 //進(jìn)行字典排序37 Array.Sort(checkArray);38 //將數(shù)組內(nèi)的項(xiàng)進(jìn)行串聯(lián)39 string resultTempStr = string.Join("", checkArray);40 //將字符串進(jìn)行SHA1加密41 string resultStr = FormsAuthentication.HashPassWordForStoringInConfigFile(resultTempStr, "SHA1");42 if (resultStr.ToLower() == signature)43 {44 return true;45 }46 return false;47 }48 }49 }
四、將項(xiàng)目發(fā)布到虛擬主機(jī)里面1.關(guān)于網(wǎng)絡(luò)主機(jī)的選擇
這里我使用了萬網(wǎng)的免費(fèi)虛擬主機(jī),簡(jiǎn)單申請(qǐng)請(qǐng)看下面的圖片,具體申請(qǐng)的步驟就不贅述了。




2.發(fā)布項(xiàng)目
這里我采用了先在本地生成文件的方式,然后再上傳。





發(fā)布成功后,桌面就會(huì)出現(xiàn)生成后的文件,然后采用FTP的方式上傳到網(wǎng)絡(luò)空間就行了
這里我遇到了一個(gè)問題,就是我在上傳到萬網(wǎng)的時(shí)候,出現(xiàn)了以下的信息:

是什么原因?qū)е碌奈疫€不清楚,解決辦法如下,在你的工程中運(yùn)行"程序包管理控制臺(tái)",執(zhí)行 Update-Package Microsoft.AspNet.WebApi -reinstall

然后重新發(fā)布一下,然后上傳到虛擬主機(jī)
3.測(cè)試一下是否成功
如果下圖點(diǎn)擊“提交”成功的話,證明整個(gè)過程就已經(jīng)通了

新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注