using LYFZ.Weixin.SDK; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace LYFZ.WeixinServers { public partial class AuthorizeCallback : System.Web.UI.Page { public string retText = ""; LYFZ.WeixinServiceDate.DAL.DAL_Authorization_info Authorization_infoDal = new WeixinServiceDate.DAL.DAL_Authorization_info(); /// /// 公众号或小程序授权成功后, 微信回调该url; /// /// /// protected void Page_Load(object sender, EventArgs e) { // 授权成功后,微信服务回调该url; this.Title = "微信公众号或小程序授权失败"; retText = this.Title + ",请在管理软件中重新发起授权"; if (!IsPostBack) { // 注意:auth_code其实就是授权方的公众号或小程序的authorization_code; if ( this.Request.QueryString["auth_code"] != null && this.Request.QueryString["expires_in"] != null ) { bool bAuthSuccess = false; // 公众号或小程序的authorization_code; string strAuthCode = this.Request.QueryString["auth_code"].ToString(); // 公众号或小程序的authorization_code的有效时间; int AuthCodeExpireIn = Convert.ToInt32(this.Request.QueryString["expires_in"].ToString()); // 企业id; string strEntId = ""; // app对象id; string strAppId = ""; // app对象类型:公众号或小程序; string strAppType = ""; // 获取授权时传入的授权相关参数; if (this.Request.QueryString["auth_parameters"] != null) { string[] AuthParameters = LYFZ.WinAPI.SDKSecurity.Decode(Request["auth_parameters"].ToString().Trim()).Split('&'); strAppType = AuthParameters[0]; strEntId = AuthParameters[1]; strAppId = AuthParameters[2]; } try { // 获取该app_id的信息,存在则更新,不存在则添加; LoginModel.app_authorization model = GlobalCache.DalAppAuthorize.GetModel(strEntId, strAppId); if ( model != null ) {// 存在,更新; model.authorize_status = 1; model.authorizer_access_token = strAuthCode; model.expires_in = AuthCodeExpireIn; // 更新数据库; bAuthSuccess = GlobalCache.DalAppAuthorize.UpdateEx(model.id, strAuthCode, AuthCodeExpireIn, 1); } else {// 插入新记录; model = new LoginModel.app_authorization(); model.ent_id = strEntId; model.app_id = strAppId; model.app_type_name = strAppType; model.authorizer_access_token = strAuthCode; model.authorize_status = 1; model.create_time = DateTime.Now; model.expires_in = AuthCodeExpireIn; model.refresh_token_time = DateTime.Now.AddMilliseconds(AuthCodeExpireIn); model.update_time = DateTime.Now; // 添加记录; bAuthSuccess = GlobalCache.DalAppAuthorize.Add(model, "id"); } #if 参考 // 获取客户资料; LYFZ.WeixinServiceDate.Model.Model_CustomerInterfaces cusModel = Global.GetCustomerModel(strEntId); if (cusModel != null && cusModel.ID > 0 && cusModel.AppID.Trim().ToLower() == strAppId.Trim().ToLower()) { LYFZ.WeixinServiceDate.Model.Model_Authorization_info Authorization_infoModel = new LYFZ.WeixinServiceDate.Model.Model_Authorization_info(); int tempCount = 0; while (tempCount<10) { tempCount++; System.Threading.Thread.Sleep(500); bool isExistsAuthorization_info = Authorization_infoDal.Exists("authorizer_appid", strAppId); if (isExistsAuthorization_info) { Authorization_infoModel = (LYFZ.WeixinServiceDate.Model.Model_Authorization_info)Authorization_infoDal.GetModelObject("authorizer_appid", strAppId); Authorization_infoModel.CompanyName = cusModel.CompanyName; Authorization_infoModel.JMGDomainName = cusModel.JMGDomainName; LYFZ.WXLibrary.CommonHandleClass.WriteLog("邦定接口:CompanyName=" + Authorization_infoModel.CompanyName + " &JMGDomainName=" + Authorization_infoModel.JMGDomainName, "-2", Global.LogsDongleDomainList); AuthorizeSuccess = Authorization_infoDal.Update(Authorization_infoModel); if (!AuthorizeSuccess) { retText = this.Title + ",请点击“重新授权
失败原因:更新数据库操作失败"; } else { Global.AddAuthorizedAPPIDHand(Authorization_infoModel); Global.UpdateAuthorizationInfoDaTable(Authorization_infoModel.Authorizer_appid, Authorization_infoModel); } break; } else { retText = this.Title + ",失败原因:请求授权公众号APPID“" + strAppId + "”与管理软件中配置的公众号APPID不匹配"; } } /* 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); if (Authorization_InfoObj != null) { if (Authorization_InfoObj != null && Authorization_InfoObj.authorization_info.authorizer_appid.ToString().Trim().Length > 0) { string authorizer_appid = Authorization_InfoObj.authorization_info.authorizer_appid.ToString().Trim(); LYFZ.WeixinServiceDate.Model.Model_Authorization_info Authorization_infoModel = new LYFZ.WeixinServiceDate.Model.Model_Authorization_info(); if (Authorization_infoDal.Exists("authorizer_appid", authorizer_appid)) { Authorization_infoModel = (LYFZ.WeixinServiceDate.Model.Model_Authorization_info)Authorization_infoDal.GetModelObject("authorizer_appid", authorizer_appid); } 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 = 1; Authorization_infoModel.UpdateTime = DateTime.Now; Authorization_infoModel.CompanyName = cusModel.CompanyName; Authorization_infoModel.JMGDomainName = cusModel.JMGDomainName; if (Authorization_infoModel.ID > 0) { AuthorizeSuccess = Authorization_infoDal.Update(Authorization_infoModel); } else { Authorization_infoModel.CreateTime = DateTime.Now; AuthorizeSuccess = Authorization_infoDal.Add(Authorization_infoModel); } if (!AuthorizeSuccess) { retText = this.Title + ",请点击“重新授权
失败原因:更新数据库操作失败"; } } else { LYFZ.WXLibrary.CommonHandleClass.WriteLog("获取授权失败请重试", "-2", Global.LogsDongleDomainList); } } else { LYFZ.WXLibrary.CommonHandleClass.WriteLog("获取授权失败,原因:" + retmsg, "-2", Global.LogsDongleDomainList); }*/ } else { retText = this.Title + ",失败原因:请求授权公众号为非法公众号"; } #endif } catch (Exception ex) { LYFZ.WXLibrary.CommonHandleClass.WriteLog("解析返回授权信息时出错:" + ex.Message, "-2", Global.LogsDongleDomainList); } if (bAuthSuccess) {// 程序只有在插入数据或更新数据成功时,才表示授权成功; this.Title = "微信公众号授权成功"; retText = this.Title + ",可以关闭此页"; } } else { retText = this.Title + ",授权请求无效,请在管理软件中重新发起授权"; } } else { retText = this.Title + ",授权请求已过期"; } this.h3Info.InnerHtml = retText; } } }