下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】C#開發(fā)微信之如何實現(xiàn)微信企業(yè)號消息和事件的接收處理及解密操作
1、企業(yè)號回調(diào)模式的設(shè)置/upload/information/20201208/260/14305.jpg
///
<summary>
///
企業(yè)號回調(diào)信息接口。統(tǒng)一接收并處理信息的入口。
///
</summary>
public
class
corpapi
:
IHttpHandler
{
///
<summary>
///
處理企業(yè)號的信息
///
</summary>
///
<param
name="context"></param>
public
void
ProcessRequest(HttpContext
context)
{
if
(HttpContext.Current.Request.HttpMethod.ToUpper()
==
"POST")
{
using
(Stream
stream
=
HttpContext.Current.Request.InputStream)
{
Byte[]
postBytes
=
new
Byte[stream.Length];
stream.Read(postBytes,
0,
(Int32)stream.Length);
postString
=
Encoding.UTF8.GetString(postBytes);
}
if
(!string.IsNullOrEmpty(postString))
{
Execute(postString,
accountInfo);
}
}
else
{
Auth(accountInfo);
}2、微信回調(diào)消息的驗證驗證URL有效性
#region
具體處理邏輯
string
echoString
=
HttpContext.Current.Request.QueryString["echoStr"];
string
signature
=
HttpContext.Current.Request.QueryString["msg_signature"];//企業(yè)號的
msg_signature
string
timestamp
=
HttpContext.Current.Request.QueryString["timestamp"];
string
nonce
=
HttpContext.Current.Request.QueryString["nonce"];
string
decryptEchoString
=
"";
if
(new
CorpBasicApi().CheckSignature(token,
signature,
timestamp,
nonce,
corpId,
encodingAESKey,
echoString,
ref
decryptEchoString))
{
if
(!string.IsNullOrEmpty(decryptEchoString))
{
HttpContext.Current.Response.Write(decryptEchoString);
HttpContext.Current.Response.End();
}
}
#endregion
///
<summary>
///
驗證企業(yè)號簽名
///
</summary>
///
<param
name="token">企業(yè)號配置的Token</param>
///
<param
name="signature">簽名內(nèi)容</param>
///
<param
name="timestamp">時間戳</param>
///
<param
name="nonce">nonce參數(shù)</param>
///
<param
name="corpId">企業(yè)號ID標識</param>
///
<param
name="encodingAESKey">加密鍵</param>
///
<param
name="echostr">內(nèi)容字符串</param>
///
<param
name="retEchostr">返回的字符串</param>
///
<returns></returns>
public
bool
CheckSignature(string
token,
string
signature,
string
timestamp,
string
nonce,
string
corpId,
string
encodingAESKey,
string
echostr,
ref
string
retEchostr)
{
WXBizMsgCrypt
wxcpt
=
new
WXBizMsgCrypt(token,
encodingAESKey,
corpId);
int
result
=
wxcpt.VerifyURL(signature,
timestamp,
nonce,
echostr,
ref
retEchostr);
if
(result
!=
0)
{
LogTextHelper.Error("ERR:
VerifyURL
fail,
ret:
"
+
result);
return
false;
}
return
true;
}3、企業(yè)號的消息處理
if
(HttpContext.Current.Request.HttpMethod.ToUpper()
==
"POST")
{
using
(Stream
stream
=
HttpContext.Current.Request.InputStream)
{
Byte[]
postBytes
=
new
Byte[stream.Length];
stream.Read(postBytes,
0,
(Int32)stream.Length);
postString
=
Encoding.UTF8.GetString(postBytes);
}
if
(!string.IsNullOrEmpty(postString))
{
Execute(postString,
accountInfo);
}
}
string
echoString
=
HttpContext.Current.Request.QueryString["echoStr"];
string
signature
=
HttpContext.Current.Request.QueryString["msg_signature"];//企業(yè)號的
msg_signature
string
timestamp
=
HttpContext.Current.Request.QueryString["timestamp"];
string
nonce
=
HttpContext.Current.Request.QueryString["nonce"];
//獲取配置參數(shù)并對加解密函數(shù)初始化
string
CorpToken
=
accountInfo.Token;
string
AESKey
=
accountInfo.EncodingAESKey;
string
CorpId
=
accountInfo.CorpID;
//根據(jù)參數(shù)信息,初始化微信對應(yīng)的消息加密解密類
WXBizMsgCrypt
wxcpt
=
new
WXBizMsgCrypt(CorpToken,
AESKey,
CorpId);
//對收到的密文進行解析處理
string
sMsg
=
"";
//
解析之后的明文
int
flag
=
wxcpt.DecryptMsg(signature,
timestamp,
nonce,
postStr,
ref
sMsg);
if
(flag
==
0)
{
//LogTextHelper.Info("記錄解密后的數(shù)據(jù):");
//LogTextHelper.Info(sMsg);//記錄解密后的數(shù)據(jù)
CorpApiDispatch
dispatch
=
new
CorpApiDispatch();
string
responseContent
=
dispatch.Execute(sMsg);
//加密后并發(fā)送
//LogTextHelper.Info(responseContent);
string
encryptResponse
=
"";
timestamp
=
DateTime.Now.DateTimeToInt().ToString();
wxcpt.EncryptMsg(responseContent,
timestamp,
nonce,
ref
encryptResponse,
ref
signature);
HttpContext.Current.Response.ContentEncoding
=
Encoding.UTF8;
HttpContext.Current.Response.Write(encrypt
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 素描階段創(chuàng)意課程設(shè)計
- 二零二五年工業(yè)生產(chǎn)輔助幫工服務(wù)合同2篇
- 2025至2030年中國甘油果糖注射液行業(yè)投資前景及策略咨詢研究報告
- 供貨合同范本
- 員工個人工作計劃表
- 北京網(wǎng)絡(luò)職業(yè)學(xué)院《三維數(shù)字化設(shè)計實訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 北京體育職業(yè)學(xué)院《造型基礎(chǔ)訓(xùn)練II》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025版新能源汽車二手車買賣合作協(xié)議
- 對招標文件及合同條款的認同聲明
- 北京石油化工學(xué)院《運動規(guī)律》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國特色社會主義理論與實踐復(fù)習資料-研究生
- 抖音學(xué)習考試題及答案
- 北師大附中2024屆高一上數(shù)學(xué)期末聯(lián)考試題含解析
- 后勤外包服務(wù)保密管理制度范文
- 小學(xué)國慶節(jié)主題活動方案設(shè)計(四篇)
- 行政事業(yè)單位內(nèi)部控制培訓(xùn)課件
- 2009別克昂科雷維修手冊gd扉頁
- 數(shù)字化轉(zhuǎn)型對企業(yè)創(chuàng)新能力的影響研究
- 替人追款協(xié)議書
- 六西格瑪(6Sigma)詳解及實際案例分析
- 周期性麻痹-課件
評論
0/150
提交評論