溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

微信開(kāi)發(fā)之如何使用Senparc.Weixin.MP SDK

發(fā)布時(shí)間:2021-03-12 09:58:05 來(lái)源:億速云 閱讀:164 作者:小新 欄目:移動(dòng)開(kāi)發(fā)

小編給大家分享一下微信開(kāi)發(fā)之如何使用Senparc.Weixin.MP SDK ,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Senparc.Weixin.MP SDK已經(jīng)涵蓋了微信6.x的所有公共API。

整個(gè)項(xiàng)目的源代碼以及已經(jīng)編譯好的程序集可以在這個(gè)項(xiàng)目中獲取到:https://github.com/JeffreySu/WeiXinMPSDK

PS:由于微信API以及Senparc.Weixin SDK一直在不斷升級(jí)更新,最新的代碼及Demo以上面的github中的源代碼為準(zhǔn)。

我們現(xiàn)在從無(wú)到有建立一個(gè)ASP.NET MVC項(xiàng)目,來(lái)看一下如何與微信進(jìn)行對(duì)接(Webforms原理也都是一樣,只不過(guò)把Controller中的Action換成.aspx頁(yè)面就可以了)。

將要演示的項(xiàng)目源代碼也可以在開(kāi)源項(xiàng)目中找到(因?yàn)樵创a中要兼顧2個(gè)項(xiàng)目,有一個(gè)公用項(xiàng)目,所以與下面展示的結(jié)構(gòu)略有不同,邏輯完全一致):

MVC:https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.Sample

WebForms:https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.Sample.WebForms

第一步:建立一個(gè)空的ASP.NET MVC(4.0)項(xiàng)目,項(xiàng)目名稱如Senparc.Weixin.MP.Sample

微信開(kāi)發(fā)之如何使用Senparc.Weixin.MP SDK

第二步:建立一個(gè)Controller,如WeixinController.cs

微信開(kāi)發(fā)之如何使用Senparc.Weixin.MP SDK

第三步:引入Senparc.Weixin.MP.dll

引入相關(guān)dll的方式有兩種:一種是復(fù)制dll到項(xiàng)目某文件夾中,然后直接在項(xiàng)目中添加Senparc.Weixin.MP.dll及Senparc.Weixin.MP.MvcExtension.dll的引用(Senparc.Weixin.MP.MvcExtension.dll只有MVC項(xiàng)目需要,WebForms項(xiàng)目可以忽略),第二種方式我們可以使用Nuget直接安裝到項(xiàng)目中。

Nuget項(xiàng)目地址:https://www.nuget.org/packages/Senparc.Weixin.MP/

第一種方式已經(jīng)足夠簡(jiǎn)單,這里介紹第二種:打開(kāi)菜單【工具】> 【庫(kù)程序包管理器】 > 【程序包管理器控制臺(tái)】,如下圖:

微信開(kāi)發(fā)之如何使用Senparc.Weixin.MP SDK

點(diǎn)擊后將會(huì)出現(xiàn)程序包管理器控制臺(tái):

微信開(kāi)發(fā)之如何使用Senparc.Weixin.MP SDK

如果是第一次安裝Senparc.Weixin.MP庫(kù),則在PM>后面輸入命令:

Install-Package Senparc.Weixin.MP

回車,Senparc.Weixin.MP.dll將會(huì)被自動(dòng)引入到項(xiàng)目中。

如果以后需要更新到最新版本,只需要使用Update-Package命令,將會(huì)自動(dòng)在線更新:

Update-Package Senparc.Weixin.MP

以上操作對(duì)MVC和WebForms項(xiàng)目都有效。

如果是MVC項(xiàng)目,為了獲得更多針對(duì)MVC的擴(kuò)展功能,我們可以繼續(xù)引入Senparc.Weixin.MP.MvcExtension.dll:

Install-Package Senparc.Weixin.MP.MVC

命令窗口輸出結(jié)果如下,表示已經(jīng)安裝成功:

微信開(kāi)發(fā)之如何使用Senparc.Weixin.MP SDK

我們觀察一下項(xiàng)目引用的程序集,這兩個(gè)dll已經(jīng)被引用進(jìn)來(lái)了:

微信開(kāi)發(fā)之如何使用Senparc.Weixin.MP SDK

第四步:修改WeixinController.cs

我們將下列代碼加入WeixinController.cs:

using System;
using System.IO;
using System.Web.Configuration;
using System.Web.Mvc;
using Senparc.Weixin.MP.Entities.Request;

namespace Senparc.Weixin.MP.Sample.Controllers
{
    using Senparc.Weixin.MP.MvcExtension;
    using Senparc.Weixin.MP.Sample.CommonService.CustomMessageHandler;

    public partial class WeixinController : Controller
    {
        public static readonly string Token = "YourToken";//與微信公眾賬號(hào)后臺(tái)的Token設(shè)置保持一致,區(qū)分大小寫。
        public static readonly string EncodingAESKey = "YourKey";//與微信公眾賬號(hào)后臺(tái)的EncodingAESKey設(shè)置保持一致,區(qū)分大小寫。
        public static readonly string AppId = "YourAppId";//與微信公眾賬號(hào)后臺(tái)的AppId設(shè)置保持一致,區(qū)分大小寫。

        /// <summary>
        /// 微信后臺(tái)驗(yàn)證地址(使用Get),微信后臺(tái)的“接口配置信息”的Url填寫如:http://weixin.senparc.com/weixin
        /// </summary>
        [HttpGet]
        [ActionName("Index")]
        public ActionResult Get(PostModel postModel, string echostr)
        {
            if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
            {
                return Content(echostr); //返回隨機(jī)字符串則表示驗(yàn)證通過(guò)
            }
            else
            {
                return Content("failed:" + postModel.Signature + "," + MP.CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, Token) + "。" +
                    "如果你在瀏覽器中看到這句話,說(shuō)明此地址可以被作為微信公眾賬號(hào)后臺(tái)的Url,請(qǐng)注意保持Token一致。");
            }
        }

        /// <summary>
        /// 用戶發(fā)送消息后,微信平臺(tái)自動(dòng)Post一個(gè)請(qǐng)求到這里,并等待響應(yīng)XML。
        /// PS:此方法為簡(jiǎn)化方法,效果與OldPost一致。
        /// v0.8之后的版本可以結(jié)合Senparc.Weixin.MP.MvcExtension擴(kuò)展包,使用WeixinResult,見(jiàn)MiniPost方法。
        /// </summary>
        [HttpPost]
        [ActionName("Index")]
        public ActionResult Post(PostModel postModel)
        {
            if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
            {
                return Content("參數(shù)錯(cuò)誤!");
            }

            postModel.Token = Token;//根據(jù)自己后臺(tái)的設(shè)置保持一致
            postModel.EncodingAESKey = EncodingAESKey;//根據(jù)自己后臺(tái)的設(shè)置保持一致
            postModel.AppId = AppId;//根據(jù)自己后臺(tái)的設(shè)置保持一致

            //自定義MessageHandler,對(duì)微信請(qǐng)求的詳細(xì)判斷操作都在這里面。
            var messageHandler = new CustomMessageHandler(Request.InputStream, postModel);//接收消息

            messageHandler.Execute();//執(zhí)行微信處理過(guò)程

            return new FixWeixinBugWeixinResult(messageHandler);//返回結(jié)果

        }
    }
}

第一個(gè)Get對(duì)應(yīng)微信后臺(tái)設(shè)置URL時(shí)候的請(qǐng)求,第二個(gè)Post用于接受么次轉(zhuǎn)發(fā)過(guò)來(lái)的客戶請(qǐng)求。

其中CustomMessageHandler是我們自己創(chuàng)建的一個(gè)類,用于實(shí)現(xiàn)MessageHandler(有關(guān)MessageHandler的詳細(xì)介紹可以看《Senparc.Weixin.MP SDK 微信公眾平臺(tái)開(kāi)發(fā)教程(六):了解MessageHandler》,也可以看這里),所有處理微信消息的核心邏輯都被包含到CustomMessageHandler中執(zhí)行。除了承擔(dān)處理微信響應(yīng)的任務(wù),MessageHandler還實(shí)現(xiàn)了處理單個(gè)用戶對(duì)話上下文等功能,非常方便。

以上是“微信開(kāi)發(fā)之如何使用Senparc.Weixin.MP SDK ”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI