最近 公司要求做一個微信公眾號的功能,發現后臺功能無法實作,所以需要公眾號開發,然后自己再網上 看了一些代碼,發現.net這塊兒很多不完善,然后自己就寫了一個完整的,
目錄
1,創建mvc專案
2,n g r o k內網穿透
3,微信測驗號
4,vs除錯
創建mvc專案
創建專案,取名WeChatTest

選擇MVC

添加控制器 WeChat,專案結構如圖(控制器寫錯了,應該為WeChat)

n g r o k內網穿透
官網 https://ngrok.com/,
直接進入官網下載即可,下載地址:https://ngrok.com/download,我自己下載的

現在的壓縮包,直接解壓,然后打開ngrok.exe檔案,輸入ngrok http 80,按回車鍵,可以看到如下界面,訪問 http://275c2c0032c8.ngrok.io 就是對應本地的 http://localhost:80

將WeChatTest發布到iis,在這里我們直接發布源代碼,主要是為了后面的除錯

訪問http://275c2c0032c8.ngrok.io,如下圖,

如果看到該界面,則可以通過外網直接訪問了,可以關掉手機wifi,直接使用手機訪問該網址
介面配置資訊
當我們點提交的時候,騰訊的公眾號服務器,向我們自己搭建的服務器發送Get請求,url為請求的地址,Token為我們在服務器后臺隨意填寫的,只要對應,就可以

具體代碼如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.Mvc;
namespace WeChatTest.Controllers
{
public class WeChatController : Controller
{
public static string Token = "hmehomeToken";
public void index()
{
if (Request.HttpMethod.ToLower() == "get")
{
Valid();
}
if (Request.HttpMethod.ToLower() == "post")
{
}
}
/// <summary>
/// 檢驗signature
/// </summary>
private void Valid()
{
//微信服務器配置提交時,echoStr才不為空,
string echoStr = Request.QueryString["echoStr"];
if (echoStr != null)
{
if (CheckSignature())
{
if (!string.IsNullOrEmpty(echoStr))
{
Response.Write(echoStr);
Response.End();
}
}
}
}
/// <summary>
/// 驗證微信簽名
/// </summary>
/// * 將token、timestamp、nonce三個引數進行字典序排序
/// * 將三個引數字串拼接成一個字串進行sha1加密
/// * 開發者獲得加密后的字串可與signature對比,標識該請求來源于微信,
/// <returns></returns>
private bool CheckSignature()
{
string signature = Request.QueryString["signature"].ToString();
string timestamp = Request.QueryString["timestamp"].ToString();
string nonce = Request.QueryString["nonce"].ToString();
try
{
string[] ArrTmp = { Token, timestamp, nonce };
Array.Sort(ArrTmp); //字典排序
string tmpStr = string.Join("", ArrTmp);
SHA1 sha = SHA1.Create();
//注意編碼UTF8、UTF7、Unicode等的選擇
byte[] bytResult = sha.ComputeHash(Encoding.UTF8.GetBytes(tmpStr));
tmpStr = BitConverter.ToString(bytResult).Replace("-", "");
tmpStr = tmpStr.ToLower();
if (tmpStr == signature)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
}
return false;
}
}
}
在Vs中除錯改代碼,然后訪問iis地址,如果沒有報錯,測驗號管理--介面配置資訊 設定如下

vs除錯
這里設定為本地iis,要用管理員的身 打開vs,然后打開專案

在代碼中打上斷點

然后修改 為這樣,點擊提交

斷點觸發

微信的 訊息回復,帶參二維碼,等,都可以通過這樣的方式除錯
請尊重原創,轉載需帶上地址
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/86.html
標籤:ASP.NET MVC
上一篇:基于ASP.NET core的MVC站點開發筆記 0x01
下一篇:在線考試系統需求分析
