AuthorizeCallback.aspx.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. using LYFZ.Weixin.SDK;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Web;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. namespace LYFZ.WeixinServers
  9. {
  10. public partial class AuthorizeCallback : System.Web.UI.Page
  11. {
  12. public string retText = "";
  13. LYFZ.WeixinServiceDate.DAL.DAL_Authorization_info Authorization_infoDal = new WeixinServiceDate.DAL.DAL_Authorization_info();
  14. /// <summary>
  15. /// 公众号或小程序授权成功后, 微信回调该url;
  16. /// </summary>
  17. /// <param name="sender"></param>
  18. /// <param name="e"></param>
  19. protected void Page_Load(object sender, EventArgs e)
  20. {
  21. // 授权成功后,微信服务回调该url;
  22. this.Title = "微信公众号或小程序授权失败";
  23. retText = this.Title + ",请在管理软件中重新发起授权";
  24. if (!IsPostBack)
  25. {
  26. // 注意:auth_code其实就是授权方的公众号或小程序的authorization_code;
  27. if ( this.Request.QueryString["auth_code"] != null && this.Request.QueryString["expires_in"] != null )
  28. {
  29. bool bAuthSuccess = false;
  30. // 公众号或小程序的authorization_code;
  31. string strAuthCode = this.Request.QueryString["auth_code"].ToString();
  32. // 公众号或小程序的authorization_code的有效时间;
  33. int AuthCodeExpireIn = Convert.ToInt32(this.Request.QueryString["expires_in"].ToString());
  34. // 企业id;
  35. string strEntId = "";
  36. // app对象id;
  37. string strAppId = "";
  38. // app对象类型:公众号或小程序;
  39. string strAppType = "";
  40. // 获取授权时传入的授权相关参数;
  41. if (this.Request.QueryString["auth_parameters"] != null)
  42. {
  43. string[] AuthParameters = LYFZ.WinAPI.SDKSecurity.Decode(Request["auth_parameters"].ToString().Trim()).Split('&');
  44. strAppType = AuthParameters[0];
  45. strEntId = AuthParameters[1];
  46. strAppId = AuthParameters[2];
  47. }
  48. try
  49. {
  50. // 获取该app_id的信息,存在则更新,不存在则添加;
  51. LoginModel.app_authorization model = GlobalCache.DalAppAuthorize.GetModel(strEntId, strAppId);
  52. if ( model != null )
  53. {// 存在,更新;
  54. model.authorize_status = 1;
  55. model.authorizer_access_token = strAuthCode;
  56. model.expires_in = AuthCodeExpireIn;
  57. // 更新数据库;
  58. bAuthSuccess = GlobalCache.DalAppAuthorize.UpdateEx(model.id, strAuthCode, AuthCodeExpireIn, 1);
  59. }
  60. else
  61. {// 插入新记录;
  62. model = new LoginModel.app_authorization();
  63. model.ent_id = strEntId;
  64. model.app_id = strAppId;
  65. model.app_type_name = strAppType;
  66. model.authorizer_access_token = strAuthCode;
  67. model.authorize_status = 1;
  68. model.create_time = DateTime.Now;
  69. model.expires_in = AuthCodeExpireIn;
  70. model.refresh_token_time = DateTime.Now.AddMilliseconds(AuthCodeExpireIn);
  71. model.update_time = DateTime.Now;
  72. // 添加记录;
  73. bAuthSuccess = GlobalCache.DalAppAuthorize.Add(model, "id");
  74. }
  75. #if 参考
  76. // 获取客户资料;
  77. LYFZ.WeixinServiceDate.Model.Model_CustomerInterfaces cusModel = Global.GetCustomerModel(strEntId);
  78. if (cusModel != null && cusModel.ID > 0 && cusModel.AppID.Trim().ToLower() == strAppId.Trim().ToLower())
  79. {
  80. LYFZ.WeixinServiceDate.Model.Model_Authorization_info Authorization_infoModel = new LYFZ.WeixinServiceDate.Model.Model_Authorization_info();
  81. int tempCount = 0;
  82. while (tempCount<10)
  83. {
  84. tempCount++;
  85. System.Threading.Thread.Sleep(500);
  86. bool isExistsAuthorization_info = Authorization_infoDal.Exists("authorizer_appid", strAppId);
  87. if (isExistsAuthorization_info)
  88. {
  89. Authorization_infoModel = (LYFZ.WeixinServiceDate.Model.Model_Authorization_info)Authorization_infoDal.GetModelObject("authorizer_appid", strAppId);
  90. Authorization_infoModel.CompanyName = cusModel.CompanyName;
  91. Authorization_infoModel.JMGDomainName = cusModel.JMGDomainName;
  92. LYFZ.WXLibrary.CommonHandleClass.WriteLog("邦定接口:CompanyName=" + Authorization_infoModel.CompanyName + " &JMGDomainName=" + Authorization_infoModel.JMGDomainName, "-2", Global.LogsDongleDomainList);
  93. AuthorizeSuccess = Authorization_infoDal.Update(Authorization_infoModel);
  94. if (!AuthorizeSuccess)
  95. {
  96. retText = this.Title + ",请点击“<a href=\"Authorize.aspx?appid=" + strAppId + "&yuname=" + Request["yuname"].ToString().Trim() + "\">重新授权</a>”<br />失败原因:更新数据库操作失败";
  97. }
  98. else {
  99. Global.AddAuthorizedAPPIDHand(Authorization_infoModel);
  100. Global.UpdateAuthorizationInfoDaTable(Authorization_infoModel.Authorizer_appid, Authorization_infoModel);
  101. }
  102. break;
  103. }
  104. else
  105. {
  106. retText = this.Title + ",失败原因:请求授权公众号APPID“" + strAppId + "”与管理软件中配置的公众号APPID不匹配";
  107. }
  108. }
  109. /* string json = (new System.Web.Script.Serialization.JavaScriptSerializer()).Serialize(dic);
  110. string retmsg = "";
  111. var Authorization_InfoObj = BasicAPI.GetAuthorization_Info(LYFZ.WXLibrary.OpenPlatformConfig.Component_Access_Token, json,out retmsg);
  112. if (Authorization_InfoObj != null)
  113. {
  114. if (Authorization_InfoObj != null && Authorization_InfoObj.authorization_info.authorizer_appid.ToString().Trim().Length > 0)
  115. {
  116. string authorizer_appid = Authorization_InfoObj.authorization_info.authorizer_appid.ToString().Trim();
  117. LYFZ.WeixinServiceDate.Model.Model_Authorization_info Authorization_infoModel = new LYFZ.WeixinServiceDate.Model.Model_Authorization_info();
  118. if (Authorization_infoDal.Exists("authorizer_appid", authorizer_appid))
  119. {
  120. Authorization_infoModel = (LYFZ.WeixinServiceDate.Model.Model_Authorization_info)Authorization_infoDal.GetModelObject("authorizer_appid", authorizer_appid);
  121. }
  122. Authorization_infoModel.Authorizer_appid = authorizer_appid;
  123. Authorization_infoModel.Authorization_info = Authorization_InfoObj.ToString();
  124. Authorization_infoModel.Authorizer_access_token = Authorization_InfoObj.authorization_info.authorizer_access_token;
  125. Authorization_infoModel.Expires_in = Convert.ToInt32(Authorization_InfoObj.authorization_info.expires_in);
  126. Authorization_infoModel.Authorizer_refresh_token = Authorization_InfoObj.authorization_info.authorizer_refresh_token;
  127. Authorization_infoModel.AuthorizeStatus = 1;
  128. Authorization_infoModel.UpdateTime = DateTime.Now;
  129. Authorization_infoModel.CompanyName = cusModel.CompanyName;
  130. Authorization_infoModel.JMGDomainName = cusModel.JMGDomainName;
  131. if (Authorization_infoModel.ID > 0)
  132. {
  133. AuthorizeSuccess = Authorization_infoDal.Update(Authorization_infoModel);
  134. }
  135. else
  136. {
  137. Authorization_infoModel.CreateTime = DateTime.Now;
  138. AuthorizeSuccess = Authorization_infoDal.Add(Authorization_infoModel);
  139. }
  140. if (!AuthorizeSuccess)
  141. {
  142. retText = this.Title + ",请点击“<a href=\"Authorize.aspx?yuname=" + Request["yuname"].ToString().Trim() + "\">重新授权</a>”<br />失败原因:更新数据库操作失败";
  143. }
  144. }
  145. else
  146. {
  147. LYFZ.WXLibrary.CommonHandleClass.WriteLog("获取授权失败请重试", "-2", Global.LogsDongleDomainList);
  148. }
  149. }
  150. else {
  151. LYFZ.WXLibrary.CommonHandleClass.WriteLog("获取授权失败,原因:" + retmsg, "-2", Global.LogsDongleDomainList);
  152. }*/
  153. }
  154. else
  155. {
  156. retText = this.Title + ",失败原因:请求授权公众号为非法公众号";
  157. }
  158. #endif
  159. }
  160. catch (Exception ex)
  161. {
  162. LYFZ.WXLibrary.CommonHandleClass.WriteLog("解析返回授权信息时出错:" + ex.Message, "-2", Global.LogsDongleDomainList);
  163. }
  164. if (bAuthSuccess)
  165. {// 程序只有在插入数据或更新数据成功时,才表示授权成功;
  166. this.Title = "微信公众号授权成功";
  167. retText = this.Title + ",可以关闭此页";
  168. }
  169. }
  170. else
  171. {
  172. retText = this.Title + ",授权请求无效,请在管理软件中重新发起授权";
  173. }
  174. }
  175. else
  176. {
  177. retText = this.Title + ",授权请求已过期";
  178. }
  179. this.h3Info.InnerHtml = retText;
  180. }
  181. }
  182. }