最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

asp.net開發(fā)微信公眾平臺(tái)之獲取用戶消息并處理

 更新時(shí)間:2015年06月07日 11:44:45   投稿:hebedich  
這篇文章主要介紹了asp.net開發(fā)微信公眾平臺(tái)之獲取用戶消息并處理的相關(guān)資料,需要的朋友可以參考下

獲取用戶消息

用戶發(fā)送的消息是在微信服務(wù)器發(fā)送的一個(gè)HTTP POST請(qǐng)求中包含的,獲取用戶發(fā)送的消息要從POST請(qǐng)求的數(shù)據(jù)流中獲取

微信服務(wù)器推送消息到服務(wù)器的HTTP請(qǐng)求報(bào)文示例

POST /cgi-bin/wxpush? msg_signature=477715d11cdb4164915debcba66cb864d751f3e6&timestamp=1409659813&nonce=1372623149 HTTP/1.1

    Host: qy.weixin.qq.com

從POST請(qǐng)求中獲取數(shù)據(jù)

這樣獲得的用戶消息可能有兩種情況:加密后的消息或是未加密的消息,這與你在微信公共平臺(tái)配置網(wǎng)站時(shí) 消息加解密模式的選取 有關(guān),如果選擇了明文模式,則不會(huì)加密,如果選擇了兼容模式,則密文和明文都存在,如果選擇的是安全模式,則用戶消息會(huì)被加密,需要解密后才能進(jìn)一步處理

2.回復(fù)用戶消息

參考微信公共平臺(tái)開發(fā)文檔

•文本消息

<xml> 
<ToUserName><![CDATA[{0}]]></ToUserName> 
<FromUserName><![CDATA[{1}]]></FromUserName> 
<CreateTime>{2}</CreateTime> 
<MsgType><![CDATA[text]]></MsgType> 
<Content><![CDATA[{3}]]></Content> 
</xml>


•圖片消息

<xml> 
<ToUserName><![CDATA[{0}]]></ToUserName> 
<FromUserName><![CDATA[{1}]]></FromUserName> 
<CreateTime>{2}</CreateTime> 
<MsgType><![CDATA[image]]></MsgType> 
<Image> 
<MediaId><![CDATA[{3}]]></MediaId> 
</Image> 
</xml>

消息格式已經(jīng)有了,接著我們只需要設(shè)置相應(yīng)的參數(shù)即可。

responseContent = string.Format(ReplyType.Message_Text, 
 FromUserName.InnerText, 
 ToUserName.InnerText, 
DateTime.Now.Ticks, 
String.IsNullOrEmpty(reply)?"Sorry,I can not follow you." :reply);

3.用戶消息與服務(wù)器消息的加密解密

微信公共平臺(tái)開發(fā)者文檔中提供有c++,C#,java等各種語言的加密解密示例,我們用到的是C#,只需要將其中的兩個(gè)文件添加到項(xiàng)目中即可,Sample.cs是微信團(tuán)隊(duì)給出的示例代碼,不需要引用,對(duì)

WXBizMsgCrypt.cs與Cryptography.cs文件添加引用即可。為了進(jìn)一步封裝和方便調(diào)用,我又新建了一個(gè)類WeChatSecurityHelper

類中的定義兩個(gè)方法,分別來進(jìn)行加密(EncryptMsg)和解密(DecryptMsg),創(chuàng)建一個(gè)WXBizMsgCrypt對(duì)象,調(diào)用它的方法加解密,具體代碼可見代碼示例

WeChatSecurityHelper

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Common
{
  public class WeChatSecurityHelper
  {
    /// <summary>
    /// 定義Token,與微信公共平臺(tái)上的Token保持一致
    /// </summary>
    private const string Token = "StupidMe";
    /// <summary>
    /// AppId 要與 微信公共平臺(tái) 上的 AppId 保持一致
    /// </summary>
    private const string AppId = "11111111111";
    /// <summary>
    /// 加密用 
    /// </summary>
    private const string AESKey = "pvX2KZWRLQSkUAbvArgLSAxCwTtxgFWF3XOnJ9iEUMG";

    private static Tencent.WXBizMsgCrypt wxcpt = new Tencent.WXBizMsgCrypt(Token, AESKey, AppId);
    private string signature,timestamp,nonce;
    private static LogHelper logger = new LogHelper(typeof(WeChatSecurityHelper));


    public WeChatSecurityHelper(string signature, string timestamp, string nonce)
    {
      this.signature = signature;
      this.timestamp = timestamp;
      this.nonce = nonce;
    }

    /// <summary>
    /// 加密消息
    /// </summary>
    /// <param name="msg">要加密的消息</param>
    /// <returns>加密后的消息</returns>
    public string EncryptMsg(string msg)
    {
      string encryptMsg="";
      int result = wxcpt.EncryptMsg(msg, timestamp, nonce, ref encryptMsg);
      if (result == 0)
      {
        return encryptMsg;
      }
      else
      {
        logger.Error("消息加密失敗");
        return "";
      }
    }

    /// <summary>
    /// 解密消息
    /// </summary>
    /// <param name="msg">消息體</param>
    /// <returns>明文消息</returns>
    public string DecryptMsg(string msg)
    {
      string decryptMsg = "";
      int result = wxcpt.DecryptMsg(signature, timestamp, nonce, msg,ref decryptMsg);
      if (result != 0)
      {
        logger.Error("消息解密失敗,result:"+result);
      }
      return decryptMsg;
    }
  }
}

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • .Net?Core讀取文件時(shí)中文亂碼問題的解決方法分享

    .Net?Core讀取文件時(shí)中文亂碼問題的解決方法分享

    所以關(guān)于讀取文件亂碼的問題,百度上有很多方案,這里再給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于.Net?Core讀取文件時(shí)中文亂碼問題的解決方法,需要的朋友可以參考下
    2022-02-02
  • ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法

    ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法

    這篇文章主要介紹了ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Web.config 和 App.config 的區(qū)別分析

    Web.config 和 App.config 的區(qū)別分析

    Web.config 和 App.config 的區(qū)別分析,需要的朋友可以參考一下
    2013-05-05
  • web.config中配置數(shù)據(jù)庫連接的方式

    web.config中配置數(shù)據(jù)庫連接的方式

    Web.config文件是一個(gè)XML文本文件,它用來儲(chǔ)存 ASP.NET Web 應(yīng)用程序的配置信息(如最常用的設(shè)置ASP.NET Web 應(yīng)用程序的身份驗(yàn)證方式),它可以出現(xiàn)在應(yīng)用程序的每一個(gè)目錄中。本文主要介紹web.config中配置數(shù)據(jù)庫連接的兩種方式,一起來看。
    2015-10-10
  • asp.net結(jié)合Ajax驗(yàn)證用戶名是否存在的代碼

    asp.net結(jié)合Ajax驗(yàn)證用戶名是否存在的代碼

    關(guān)于Ajax的操作簡單總結(jié),結(jié)合Ajax驗(yàn)證用戶名是否存在的代碼
    2010-06-06
  • ASP.Net緩存總結(jié)及分析 分享

    ASP.Net緩存總結(jié)及分析 分享

    提高性能最好最快的辦法當(dāng)然是通過緩存來改善,對(duì)于任何一個(gè)web開發(fā)者都應(yīng)該善用緩存。Asp.net下的緩存機(jī)制十分強(qiáng)大,用好緩存機(jī)制可以讓我們極大的改善web應(yīng)用的性能,下面是一些總結(jié)的緩存的知識(shí)點(diǎn),與大家分享交流:
    2013-06-06
  • Asp.Net性能優(yōu)化技巧匯總

    Asp.Net性能優(yōu)化技巧匯總

    這篇文章主要介紹了Asp.Net性能優(yōu)化技巧匯總,非常實(shí)用的歸納總結(jié),需要的朋友可以參考下
    2014-07-07
  • .NET Core如何獲取操作系統(tǒng)中的各種信息

    .NET Core如何獲取操作系統(tǒng)中的各種信息

    .net core是最近討論頻率很高的話題,下面這篇文章主要給大家介紹了關(guān)于利用.NET Core如何獲取操作系統(tǒng)中各種信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧
    2018-05-05
  • ASP.NET?Core應(yīng)用JWT進(jìn)行用戶認(rèn)證及Token的刷新方案

    ASP.NET?Core應(yīng)用JWT進(jìn)行用戶認(rèn)證及Token的刷新方案

    本文詳細(xì)講解了ASP.NET?Core應(yīng)用JWT進(jìn)行用戶認(rèn)證及Token的刷新方案,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • DataSet、DataTable、DataRow區(qū)別詳解

    DataSet、DataTable、DataRow區(qū)別詳解

    這篇文章主要介紹了DataSet、DataTable、DataRow區(qū)別詳解,需要的朋友可以參考下
    2014-02-02

最新評(píng)論

唐河县| 信丰县| 洞头县| 海晏县| 河池市| 山东省| 襄垣县| 邹平县| 鄯善县| 临朐县| 策勒县| 乡宁县| 周宁县| 库车县| 家居| 额尔古纳市| 永新县| 庆城县| 宜春市| 邢台县| 徐水县| 逊克县| 土默特左旗| 四会市| 阳信县| 利辛县| 凤城市| 陈巴尔虎旗| 二连浩特市| 闸北区| 宁晋县| 同德县| 元谋县| 波密县| 定安县| 栖霞市| 德州市| 平和县| 绩溪县| 吐鲁番市| 岚皋县|