【移動應(yīng)用開發(fā)技術(shù)】C#如何做微信開發(fā)_第1頁
【移動應(yīng)用開發(fā)技術(shù)】C#如何做微信開發(fā)_第2頁
【移動應(yīng)用開發(fā)技術(shù)】C#如何做微信開發(fā)_第3頁
【移動應(yīng)用開發(fā)技術(shù)】C#如何做微信開發(fā)_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】C#如何做微信開發(fā)

///

<summary>

///

驗證微信簽名

///

</summary>

///

<returns></returns>

///

*

將token、timestamp、nonce三個參數(shù)進行字典序排序

///

*

將三個參數(shù)字符串拼接成一個字符串進行sha1加密

///

*

開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信。

private

bool

CheckSignature()

{

var

token

=

"token";

var

signature

=

HttpContext.Current.Request.QueryString["signature"];

var

timestamp

=

HttpContext.Current.Request.QueryString["timestamp"];

var

nonce

=

HttpContext.Current.Request.QueryString["nonce"];

var

echostr

=

HttpContext.Current.Request.QueryString["echostr"];

string[]

ArrTmp

=

{

token,

timestamp,

nonce

};

Array.Sort(ArrTmp);

//字典排序

var

tmpStr

=

string.Join("",

ArrTmp);

tmpStr

=

FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr,

"SHA1");//加密方式

if

(tmpStr.ToLower()

==

signature)

{

return

true;

}

return

false;

}/upload/information/20201208/260/10308.jpg

#region

接收消息

///

<summary>

///

接收微信發(fā)送的XML消息并且解析

///

</summary>

private

void

ReceiveXml()

{

var

requestStream

=

HttpContext.Current.Request.InputStream;

var

requestByte

=

new

byte[requestStream.Length];

requestStream.Read(requestByte,

0,

(int)requestStream.Length);

var

requestStr

=

Encoding.UTF8.GetString(requestByte);

if

(!string.IsNullOrEmpty(requestStr))

{

//封裝請求類

var

requestDocXml

=

new

XmlDocument();

requestDocXml.LoadXml(requestStr);

var

rootElement

=

requestDocXml.DocumentElement;

if

(rootElement

==

null)

return;

var

wxXmlModel

=

new

WxXmlModel

{

ToUserName

=

rootElement.SelectSingleNode("ToUserName").InnerText,

FromUserName

=

rootElement.SelectSingleNode("FromUserName").InnerText,

CreateTime

=

rootElement.SelectSingleNode("CreateTime").InnerText,

MsgType

=

rootElement.SelectSingleNode("MsgType").InnerText

};

switch

(wxXmlModel.MsgType)

{

case

"text"://文本

wxXmlModel.Content

=

rootElement.SelectSingleNode("Content").InnerText;

break;

case

"image"://圖片

wxXmlModel.PicUrl

=

rootElement.SelectSingleNode("PicUrl").InnerText;

break;

case

"event"://事件

wxXmlModel.Event

=

rootElement.SelectSingleNode("Event").InnerText;

if

(wxXmlModel.Event

!=

"TEMPLATESENDJOBFINISH")//關(guān)注類型

{

wxXmlModel.EventKey

=

rootElement.SelectSingleNode("EventKey").InnerText;

}

break;

default:

break;

}

ResponseXML(wxXmlModel);//回復(fù)消息

}

}

#endregion

#region

回復(fù)消息

private

void

ResponseXML(WxXmlModel

WxXmlModel)

{

var

QrCodeApi

=

new

QrCodeApi();

var

XML

=

"";

switch

(WxXmlModel.MsgType)

{

case

"text"://文本回復(fù)

XML

=

ResponseMessage.GetText(WxXmlModel.FromUserName,

WxXmlModel.ToUserName,

WxXmlModel.Content);

break;

case

"event":

switch

(WxXmlModel.Event)

{

case

"subscribe":

if

(string.IsNullOrEmpty(WxXmlModel.EventKey))

{

XML

=

ResponseMessage.GetText(WxXmlModel.FromUserName,

WxXmlModel.ToUserName,

"關(guān)注成功");

}

else

{

XML

=

ResponseMessage.SubScanQrcode(WxXmlModel.FromUserName,

WxXmlModel.ToUserName,

WxXmlModel.EventKey);//掃描帶參數(shù)二維碼先關(guān)注后推送事件

}

break;

case

"SCAN":

XML

=

ResponseMessage.ScanQrcode(WxXmlModel.FromUserName,

WxXmlModel.ToUserName,

WxXmlModel.EventKey);//掃描帶參數(shù)二維碼已關(guān)注

直接推送事件

break;

}

break;

d

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論