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;
}
}
}