用.Net Core接入微信公眾號開發

Part1前言

最近想寫一點基于.Net Core微信公眾號開發的文章

Part2測試公眾號申請

測試公眾號申請地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

4068fd037ef7af8354b228a62e94cbb9.png

微信公眾號開發文檔:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

通過微信掃一掃授權就能進入到測試號管理頁面。

a3481292c5560b22dd5dd22281b07982.png

測試賬號擁有幾乎所有的公眾號接口,而個人只能申請訂閱號,幾乎沒有接口可用,并且消息推送還會受到次數限制。如果只是做開發測試的話,那么測試帳號比較好用

進行接口配置信息

需要一臺服務器進行到微信授權回調到線上的域名。但是對于沒有服務器,或者初次接觸微信公眾號開發的同學們就有點不太友好,不方便本地調試。

于是就嘗試通過內網穿透的方法調試本地代碼,常見的工具有ngrok,FastTunnel花生殼natapp等等

Part3開發

新建.Net Core webapi項目,將本地服務映射到外網

筆者在這里使用的是natapp

078e3a21665b3a282b45b9504bca4637.png

6fc985f0390c2f2c93baf184aadfca19.png

驗證消息的確來自微信服務器

07353b7f4434cd088289d6786fa8c357.png

我們可根據微信開發文檔輕松的寫出 微信后臺的“接口配置信息”,一共有四個參數

[HttpGet]
[ActionName("")]
public?string?Get(string?signature,?string?timestamp,?string?nonce,?string?echostr)
{}

有潔癖的同學可能覺得有四個參數,再在controller層一個一個地接收就會顯得特別的笨重了。那我們也可以使用實體類來接受參數

[HttpGet]
[ActionName("")]
public?string?Get([FromUri]?VxModel?vxModel)
{}

[FromUri]屬性處理查詢參數,即"?"之后的鍵值對在URI中。

加密/校驗

流程如下:

將token、timestamp、nonce三個參數進行字典序排序 2)將三個參數字符串拼接成一個字符串進行sha1加密 3)開發者獲得加密后的字符串可與 signature 對比,標識該請求來源于微信.若確認此次 GET 請求來自微信服務器,請原樣返回 echostr 參數內容。

將微信公眾號設置好的token,定義成一個常量,用來校驗

public?const?string?Token?=?"weixin";

然后根據流程進行簽名校驗

public?static?bool?Check(string?signature,?string?timestamp,?string?nonce){string[]?value?=?new?string[3]{WeixinSetting.Token,timestamp,nonce}.OrderBy(o=>o).ToArray();string?s?=?string.Join("",?value);byte[]?array?=?SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(s));StringBuilder?stringBuilder?=?new?StringBuilder();byte[]?array2?=?array;foreach?(byte?b?in?array2){stringBuilder.AppendFormat("{0:x2}",?b);}return?signature==stringBuilder.ToString();}

完整接口如下:

[HttpGet]
[ActionName("")]
public?string?Get(string?signature,?string?timestamp,?string?nonce,?string?echostr){if?(CheckSignatureHelper.Check(signature,?timestamp,?nonce)){return?echostr;}else{return?"校驗失敗";}}

e849e4215bf086a8d16601cdabec1e45.png

這樣就校驗成功了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285440.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285440.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285440.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

騰訊、百度、小米等7家互聯網各大廠的中臺建設怎么樣了?

中臺是真正為前臺而生的平臺(可以是技術平臺,業務能力甚至是組織機構),它存在的唯一目的就是更好的服務前臺規模化創新,進而更好的響應服務引領用戶,使企業真正做到自身能力與用戶需求的持續對接。 以下轉載…

JAVA基礎知識之網絡編程——-基于AIO的異步Socket通信

異步IO 下面摘子李剛的《瘋狂JAVA講義》 按照POSIX標準來劃分IO,分為同步IO和異步IO。對于IO操作分為兩步,1)程序發出IO請求。 2)完成實際的IO操作。 阻塞IO和非阻塞IO都是針對第一步來劃分的,如果發出IO請求會阻塞線程…

基于.NetCore開發博客項目 StarBlog - (13) 加入友情鏈接功能

系列文章基于.NetCore開發博客項目 StarBlog - (1) 為什么需要自己寫一個博客?基于.NetCore開發博客項目 StarBlog - (2) 環境準備和創建項目基于.NetCore開發博客項目 StarBlog - (3) 模型設計基于.NetCore開發博客項目 StarBlog - (4) markdown博客批量導入基于.N…

【數據庫原理及應用】經典題庫附答案(14章全)——第十二章:數據庫技術新發展

【數據庫原理及應用】經典題庫附答案(14章全)——第一章:數據庫基礎知識 【數據庫原理及應用】經典題庫附答案(14章全)——第二章:關系數據庫知識 【數據庫原理及應用】經典題庫附答案(14章全)——第三章:結構化查詢語言SQL 【數據庫原理及應用】經典題庫附答案(14章…

EditPlus 文件查找功能:在指定文件夾,用正則查尋包含指定內容的文件,指定文件類型,并排除特殊文件名文件

單擊菜單欄上的【Search】&#xff08;查找&#xff09;&#xff0c;選擇【Find in Files】&#xff08;在文件中查找&#xff09;命令&#xff1a; 查找項&#xff1a;正則查找video標簽&#xff0c;src為不包含http的mp4 <video src"([^http].*\.mp4)" width&q…

【數據庫原理及應用】經典題庫附答案(14章全)——第十三章:面向對象程數據庫系統

【數據庫原理及應用】經典題庫附答案(14章全)——第一章:數據庫基礎知識 【數據庫原理及應用】經典題庫附答案(14章全)——第二章:關系數據庫知識 【數據庫原理及應用】經典題庫附答案(14章全)——第三章:結構化查詢語言SQL 【數據庫原理及應用】經典題庫附答案(14章…

NOIP2016普及組第三題——海港

題目描述 小K是一個海港的海關工作人員&#xff0c;每天都有許多船只到達海港&#xff0c;船上通常有很多來自不同國家的乘客。 小K對這些到達海港的船只非常感興趣&#xff0c;他按照時間記錄下了到達海港的每一艘船只情況&#xff1b;對于第i艘到達的船&#xff0c;他記錄了這…

7z-linux下解決中文名亂碼的終極辦法

為什么80%的碼農都做不了架構師&#xff1f;>>> linux上安裝7z主要是為了解決中文文件名亂碼的問題&#xff0c;壓縮率還是其次原因 具體安裝看參考網址&#xff0c;建議用源碼方式安裝 官網下載地址&#xff1a;http://www.7-zip.org/download.html 源文件項目地址…

C# .Net 視頻下載功能(本機文件)及轉發下載功能(Http遠程文件)

/*服務器本機文件下載*/ Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Transfer-Encoding", "binary"); Response.ContentType "application/octet-stream"; Response.ContentEncoding …

工具箱之 IKVM.NET 項目新進展

在各種群里經常討論的一個事情是.NET 如何調用 Java 的實現&#xff0c;最常見的場景之一就是在加解密方面Java提供的密鑰&#xff0c;C#無法解密&#xff0c; C#中byte范圍是[0,255]&#xff0c;而Java中的byte范圍是[-128,127]&#xff0c;由于密碼生成器是java所獨有的&…

【數據庫原理及應用】經典題庫附答案(14章全)——第十四章:分布式數據庫系統

【數據庫原理及應用】經典題庫附答案(14章全)——第一章:數據庫基礎知識 【數據庫原理及應用】經典題庫附答案(14章全)——第二章:關系數據庫知識 【數據庫原理及應用】經典題庫附答案(14章全)——第三章:結構化查詢語言SQL 【數據庫原理及應用】經典題庫附答案(14章…

一天一種設計模式之六-----工廠方法模式

2019獨角獸企業重金招聘Python工程師標準>>> 一.工廠方法模式 工廠方法模式屬于創建型模式。工廠方法模式定義&#xff1a;定義一個用于創建對象的借口&#xff0c;讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到了他的子類。一般工廠類會有一個工廠的接…

[轉]IPython介紹

1. IPython介紹 ipython是一個python的交互式shell&#xff0c;比默認的python shell好用得多&#xff0c;支持變量自動補全&#xff0c;自動縮進&#xff0c;支持bash shell命令&#xff0c;內置了許多很有用的功能和函數。學習ipython將會讓我們以一種更高的效率來使用python…

.NET MAUI in Mac

點擊上方藍字關注我們&#xff08;本文閱讀時間&#xff1a;4分鐘&#xff09;概要本篇文章主要分享MAUI在m1芯片的設備上運行和支持情況&#xff0c;將我們寫好的MAUI程序編譯為支持mac平臺的版本。在m1芯片剛剛出來的時候有很多開發工具和應用程序對m1芯片的支持不是很友好&a…

30分鐘時長千行代碼《C#程序設計基礎》經典程序,C#菜鳥開發必備!

作者:劉一哥GIS(CSDN博客專家) 博客地址:https://geostorm.blog.csdn.net/ 劉一哥,多年研究地圖學、地理信息系統、遙感、攝影測量和GPS等應用,精通ArcGIS、MapGIS、ENVI、Erdas、CASS、Pix4d、CC、PhotoScan、Inpho、EPS、Globalmapper等專業軟件的應用,精通多門編程語…

前端開發中的SEO

前端開發中的SEO 什么是SEO SEO由英文Search Engine Optimization縮寫而來&#xff0c;中文意譯為“搜索引擎優化”。SEO是指從自然搜索結果獲得網站流量的技術和過程&#xff0c;是在了解搜索引擎自然排名機制的基礎上&#xff0c;對網站進行內部及外部的調整優化&#xff0c;…

grep命令

請見附件&#xff1b;轉載于:https://blog.51cto.com/11203760/1750457

windows 常用系統變量

常用&#xff1a; %USERPROFILE% C:\Users\用戶名 %SystemRoot% C:\WINDOWS %SystemDrive% C: %APPDATA% C:\Users\用戶名\AppData\Roaming %LOCALAPPDATA% C:\Users\用戶名\AppData\Local %windir% C:\WINDOWS %Path% C:\Windows\system32;C:\Wi…

C# 自定義并動態切換光標

本文經原作者授權以原創方式二次分享&#xff0c;歡迎轉載、分享。原文作者&#xff1a;唐宋元明清的博客原文地址&#xff1a;https://www.cnblogs.com/kybs0/p/14873136.html系統有很多光標類型 &#xff1a;Cursors 類 (System.Windows.Input) | Microsoft Docs[1]本章介紹如…

HTML基礎加強

1. 什么是瀏覽器&#xff1a;解釋和執行HTML源碼的工具。 2. 什么是靜態頁面&#xff0c;什么樣的頁面是動態頁面&#xff1f; 靜態頁面&#xff1a;htm&#xff0c;html&#xff08;直接讀取&#xff09; 動態網頁&#xff1a;asp&#xff0c;aspx&#xff0c;jsp&#xff0c;…