123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- using LYFZ.Weixin.SDK;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using LYFZ.WXLibrary;
- namespace LYFZ.WeixinServers.WeiXinAPP
- {
- public partial class Received : System.Web.UI.Page
- {
- string postinfoddomaine = "recurl";
-
- protected void Page_Load(object sender, EventArgs e)
- {
-
-
-
- if (Request.RequestType == "POST")
- {
- try
- {
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("授权事件接收URL 收到 POST请求-\r\nUrl:" + this.Request.Url + "\r\nRawUrl:" + this.Request.RawUrl, postinfoddomaine, Global.LogsDongleDomainList);
-
- string xmlData = "";
- try
- {
- Request.InputStream.Seek(0, SeekOrigin.Begin);
- using (var streamReader = new StreamReader(Request.InputStream))
- {
- var decryptMsg = string.Empty;
- xmlData = streamReader.ReadToEnd();
- }
- }
- catch (Exception ex)
- {
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("授权事件接收URL POST 求请加密解密时出错:" + ex.Message, postinfoddomaine, Global.LogsDongleDomainList);
- }
-
- string sToken = OpenPlatformConfig.OpenToken;
- string sAppID = OpenPlatformConfig.OpenAppID;
- string sEncodingAESKey = OpenPlatformConfig.OpenEncodingAESKey;
-
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("授权事件接收URL 开始解密信息:sToken=" + sToken + " sAppID=" + sAppID + " sEncodingAESKey=" + sEncodingAESKey + "xmlData=" + xmlData, postinfoddomaine, Global.LogsDongleDomainList);
- Tencent.WXBizMsgCrypt wxcpt = new Tencent.WXBizMsgCrypt(sToken, sEncodingAESKey, sAppID);
- string sReqMsgSig = Request["msg_signature"];
- string sReqTimeStamp = Request["timestamp"];
- string sReqNonce = Request["nonce"];
- string sMsg = "";
- int ret = 0;
- ret = wxcpt.DecryptMsg(sReqMsgSig, sReqTimeStamp, sReqNonce, xmlData, ref sMsg);
- if (ret != 0)
- {
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("授权事件接收URL POST 求请加密解密时失败 RET:" + ret, postinfoddomaine, Global.LogsDongleDomainList);
- }
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("授权事件接收URL 收到的信息:" + sMsg, postinfoddomaine, Global.LogsDongleDomainList);
- var msg = new WeixinMessage();
- msg.Body = new DynamicXml(sMsg);
-
-
- string infoType = msg.Body.InfoType.Value;
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("授权事件接收URL infoType:" + infoType, postinfoddomaine, Global.LogsDongleDomainList);
- switch (infoType)
- {
- case "component_verify_ticket":
-
- string component_verify_ticket = msg.Body.ComponentVerifyTicket.Value;
- OpenPlatformConfig.Component_verify_ticket = component_verify_ticket;
- OpenPlatformConfig.SaveComponent_verify_ticket(component_verify_ticket);
- break;
- case "unauthorized":
-
-
- AuthorizationInfo unauthorizedInfo = new AuthorizationInfo();
- unauthorizedInfo.AppId = msg.Body.AppId.Value;
- unauthorizedInfo.CreateTime = msg.Body.CreateTime.Value;
- unauthorizedInfo.InfoType = AuthorizationInfoType.unauthorized;
- unauthorizedInfo.AuthorizerAppid = msg.Body.AuthorizerAppid.Value;
- PerformAuthorization(unauthorizedInfo, 0);
- break;
- case "authorized":
-
-
- AuthorizationInfo authorizedInfo = new AuthorizationInfo();
- authorizedInfo.AppId = msg.Body.AppId.Value;
- authorizedInfo.CreateTime = msg.Body.CreateTime.Value;
- authorizedInfo.InfoType = AuthorizationInfoType.authorized;
- authorizedInfo.AuthorizerAppid = msg.Body.AuthorizerAppid.Value;
- authorizedInfo.AuthorizationCode = msg.Body.AuthorizationCode.Value;
- authorizedInfo.AuthorizationCodeExpiredTime = LYFZ.WinAPI.CustomPublicMethod.StampToDateTime(msg.Body.AuthorizationCodeExpiredTime.Value);
- PerformAuthorization(authorizedInfo, 1);
- break;
- case "updateauthorized":
-
-
- AuthorizationInfo updateauthorizedInfo = new AuthorizationInfo();
- updateauthorizedInfo.AppId = msg.Body.AppId.Value;
- updateauthorizedInfo.CreateTime = msg.Body.CreateTime.Value;
- updateauthorizedInfo.InfoType = AuthorizationInfoType.updateauthorized;
- updateauthorizedInfo.AuthorizerAppid = msg.Body.AuthorizerAppid.Value;
- updateauthorizedInfo.AuthorizationCode = msg.Body.AuthorizationCode.Value;
- updateauthorizedInfo.AuthorizationCodeExpiredTime = LYFZ.WinAPI.CustomPublicMethod.StampToDateTime(msg.Body.AuthorizationCodeExpiredTime.Value);
- PerformAuthorization(updateauthorizedInfo, 1);
- break;
- default:
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("授权事件接收到未处理事件:" + infoType, postinfoddomaine, Global.LogsDongleDomainList);
- break;
- }
- }
- catch(Exception ex) {
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("授权事件接收URL 处理信息时出错:" + ex.Message, postinfoddomaine, Global.LogsDongleDomainList);
- }
- Response.Write("success");
- Response.End();
-
-
- }
- else {
- Response.Write("最新的“component_verify_ticket”值:" + OpenPlatformConfig.Component_verify_ticket);
- Response.End();
- }
- }
- void AddAuthorizationInfo(AuthorizationInfo authInfo)
- {
-
- }
- LYFZ.WeixinServiceDate.DAL.DAL_Authorization_info Authorization_infoDal = new WeixinServiceDate.DAL.DAL_Authorization_info();
-
-
-
-
-
- void PerformAuthorization(AuthorizationInfo authInfo, int _AuthorizeStatus)
- {
- try
- {
-
- bool AuthorizeSuccess = false;
- LYFZ.WeixinServiceDate.Model.Model_Authorization_info Authorization_infoModel = new LYFZ.WeixinServiceDate.Model.Model_Authorization_info();
- if (Authorization_infoDal.Exists("authorizer_appid", authInfo.AuthorizerAppid))
- {
- Authorization_infoModel = (LYFZ.WeixinServiceDate.Model.Model_Authorization_info)Authorization_infoDal.GetModelObject("authorizer_appid", authInfo.AuthorizerAppid);
- }
- if (_AuthorizeStatus == 1)
- {
- Dictionary<string, string> dic = new Dictionary<string, string>
- {
- {"component_appid",LYFZ.WXLibrary.OpenPlatformConfig.OpenAppID},
- {"authorization_code",authInfo.AuthorizationCode},
- };
- string json = (new System.Web.Script.Serialization.JavaScriptSerializer()).Serialize(dic);
- string retmsg = "";
- var Authorization_InfoObj = BasicAPI.GetAuthorization_Info(LYFZ.WXLibrary.OpenPlatformConfig.Component_Access_Token, json, out retmsg);
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("获取授权请求返回信息:" + retmsg, "-2", Global.LogsDongleDomainList);
- if (Authorization_InfoObj != null)
- {
-
- string authorizer_appid = Authorization_InfoObj.authorization_info.authorizer_appid.ToString().Trim();
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("成功获取授权请求信息:" + authorizer_appid, "-2", Global.LogsDongleDomainList);
- if (authorizer_appid.Trim().Length > 0)
- {
- Authorization_infoModel.Authorizer_appid = authorizer_appid;
- Authorization_infoModel.Authorization_info = Authorization_InfoObj.ToString();
- Authorization_infoModel.Authorizer_access_token = Authorization_InfoObj.authorization_info.authorizer_access_token;
- Authorization_infoModel.Expires_in = Convert.ToInt32(Authorization_InfoObj.authorization_info.expires_in);
- Authorization_infoModel.Authorizer_refresh_token = Authorization_InfoObj.authorization_info.authorizer_refresh_token;
- Authorization_infoModel.AuthorizeStatus = _AuthorizeStatus;
- Authorization_infoModel.UpdateTime = DateTime.Now;
- Authorization_infoModel.RefreshTokenTime = DateTime.Now;
- if (authorizer_appid.ToLower().Trim() == OpenPlatformConfig.MicroLetterTestAPPID.ToLower().Trim())
- {
- Authorization_infoModel.CompanyName = "微信后台专用测试公众号";
- Authorization_infoModel.JMGDomainName = OpenPlatformConfig.MicroLetterTestUsername;
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("收到“微信后台专用测试公众号(" + OpenPlatformConfig.MicroLetterTestUsername + ")”测试授权请求", "-2", Global.LogsDongleDomainList);
- }
- if (Authorization_infoModel.ID > 0)
- {
- AuthorizeSuccess = Authorization_infoDal.Update(Authorization_infoModel);
- Authorization_infoModel = (LYFZ.WeixinServiceDate.Model.Model_Authorization_info)Authorization_infoDal.GetModelObject("authorizer_appid", authorizer_appid);
- if (AuthorizeSuccess && Authorization_infoModel != null && Authorization_infoModel.ID > 0)
- {
- Global.UpdateAuthorizedAPPIDHand(Authorization_infoModel);
- }
- }
- else
- {
- Authorization_infoModel.CreateTime = DateTime.Now;
- AuthorizeSuccess = Authorization_infoDal.Add(Authorization_infoModel);
- if (AuthorizeSuccess && authorizer_appid.ToLower().Trim() == OpenPlatformConfig.MicroLetterTestAPPID.ToLower().Trim())
- {
- Authorization_infoModel = (LYFZ.WeixinServiceDate.Model.Model_Authorization_info)Authorization_infoDal.GetModelObject("authorizer_appid", authorizer_appid);
- Global.AddAuthorizedAPPIDHand(Authorization_infoModel);
- Global.UpdateAuthorizationInfoDaTable(authorizer_appid, Authorization_infoModel);
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("收到“微信后台专用测试公众号(" + OpenPlatformConfig.MicroLetterTestUsername + ")”测试授权请求", "-2", Global.LogsDongleDomainList);
- }
-
- }
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("执行授权成功:authInfo.InfoType=" + authInfo.InfoType.ToString() + "&CompanyName=" + Authorization_infoModel.CompanyName + " &JMGDomainName=" + Authorization_infoModel.JMGDomainName, "-2", Global.LogsDongleDomainList);
- if (!AuthorizeSuccess)
- {
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("授权失败,原因:更新数据库操作失败", "-2", Global.LogsDongleDomainList);
- }
- }
- else
- {
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("获取授权失败请重试:" + Authorization_InfoObj.ToString(), "-2", Global.LogsDongleDomainList);
- }
- }
- else
- {
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("获取授权失败,原因:" + retmsg, "-2", Global.LogsDongleDomainList);
- }
- }
- else {
- if (Authorization_infoModel!=null&&Authorization_infoModel.ID > 0)
- {
- Authorization_infoModel.RefreshTokenTime = DateTime.Now;
- Authorization_infoModel.AuthorizeStatus = _AuthorizeStatus;
- AuthorizeSuccess = Authorization_infoDal.Update(Authorization_infoModel);
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("用户已取消授权:authInfo.InfoType=" + authInfo.InfoType.ToString() + "&CompanyName=" + Authorization_infoModel.CompanyName + " &JMGDomainName=" + Authorization_infoModel.JMGDomainName, "-2", Global.LogsDongleDomainList);
- }
- Global.RemoveAuthorizedAPPIDHand(Authorization_infoModel);
- }
- }
- catch (Exception ex)
- {
- LYFZ.WXLibrary.CommonHandleClass.WriteLog("解析返回授权信息时出错:" + ex.Message, "-2", Global.LogsDongleDomainList);
- }
- }
- }
- }
|