忽略dll文件git
This commit is contained in:
@@ -1,56 +0,0 @@
|
||||
using System;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
public static class InfoTypeHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 根据xml信息返回类型
|
||||
/// 授权信息返回的是 InfoType
|
||||
/// 微信交互消息和事件返回的是 MsgType
|
||||
/// </summary>
|
||||
/// <param name="doc"></param>
|
||||
/// <returns></returns>
|
||||
public static RequestInfoType GetRequestInfoType(XDocument doc)
|
||||
{
|
||||
var reqType = "";
|
||||
var typeNode = doc.Root.Element("InfoType");
|
||||
if (typeNode != null)
|
||||
{
|
||||
reqType = typeNode.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
typeNode = doc.Root.Element("MsgType");
|
||||
reqType = typeNode.Value;
|
||||
if (reqType == "event")
|
||||
{
|
||||
reqType = "event_" + doc.Root.Element("Event").Value;
|
||||
var eventKey = doc.Root.Element("EventKey");
|
||||
if (null != (eventKey) && eventKey.Value.StartsWith("qrscene_"))
|
||||
{
|
||||
reqType = "event_subscribe_qrscene";
|
||||
}
|
||||
}
|
||||
}
|
||||
return GetRequestInfoType(reqType);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据xml信息,返回InfoType
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static RequestInfoType GetRequestInfoType(string str)
|
||||
{
|
||||
try
|
||||
{
|
||||
return (RequestInfoType)Enum.Parse(typeof(RequestInfoType), str, true);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return RequestInfoType.none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
/// <summary>
|
||||
/// 请求消息接口
|
||||
/// </summary>
|
||||
public interface IMessageBase
|
||||
{
|
||||
string AppId { get; set; }
|
||||
long CreateTime { get; set; }
|
||||
RequestInfoType InfoType { get; }
|
||||
Task<bool> Handler();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/*
|
||||
<xml>
|
||||
<ToUserName><![CDATA[toUser]]></ToUserName>
|
||||
<FromUserName><![CDATA[FromUser]]></FromUserName>
|
||||
<CreateTime>123456789</CreateTime>
|
||||
<MsgType><![CDATA[event]]></MsgType>
|
||||
<Event><![CDATA[subscribe]]></Event>
|
||||
<EventKey><![CDATA[qrscene_123123]]></EventKey>
|
||||
<Ticket><![CDATA[TICKET]]></Ticket>
|
||||
</xml>
|
||||
*/
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
/// <summary>
|
||||
/// 扫描二维码关注
|
||||
/// </summary>
|
||||
public class MessageDefault : IMessageBase
|
||||
{
|
||||
public MessageDefault()
|
||||
{
|
||||
|
||||
}
|
||||
public RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.none; }
|
||||
}
|
||||
|
||||
public string AppId { get; set; }
|
||||
public long CreateTime { get; set; }
|
||||
|
||||
public async Task<bool> Handler()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
/// <summary>
|
||||
/// RequestMessage工厂
|
||||
/// </summary>
|
||||
public static class MessageFactory
|
||||
{
|
||||
|
||||
public static IServiceCollection Service { get; set; }
|
||||
/// <summary>
|
||||
/// 获取XDocument转换后的IRequestMessageBase实例。
|
||||
/// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static IMessageBase GetRequestEntity(XDocument doc)
|
||||
{
|
||||
IMessageBase requestMessage = null;
|
||||
RequestInfoType infoType;
|
||||
|
||||
try
|
||||
{
|
||||
infoType = InfoTypeHelper.GetRequestInfoType(doc);
|
||||
switch (infoType)
|
||||
{
|
||||
case RequestInfoType.component_verify_ticket:
|
||||
requestMessage = new MessageComponentVerifyTicket(doc);
|
||||
break;
|
||||
case RequestInfoType.unauthorized:
|
||||
requestMessage = new MessageUnauthorized(doc);
|
||||
break;
|
||||
case RequestInfoType.authorized:
|
||||
requestMessage = new MessageAuthorized(doc);
|
||||
break;
|
||||
case RequestInfoType.updateauthorized:
|
||||
requestMessage = new MessageUpdateAuthorized(doc);
|
||||
break;
|
||||
case RequestInfoType.notify_third_fasteregister:
|
||||
requestMessage = new MessageThirdFasteRegister(doc);
|
||||
break;
|
||||
case RequestInfoType.event_subscribe_qrscene:
|
||||
requestMessage = new MessageEventSubscribeQrscene(doc);
|
||||
break;
|
||||
case RequestInfoType.event_SCAN:
|
||||
requestMessage = new MessageEventScan(doc);
|
||||
break;
|
||||
case RequestInfoType.event_subscribe:
|
||||
requestMessage = new MessageEventSubscribe(doc);
|
||||
break;
|
||||
default:
|
||||
return new MessageDefault();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.Error("MessageFactory 解析失败", ex.Message);
|
||||
}
|
||||
return requestMessage;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取XDocument转换后的IRequestMessageBase实例。
|
||||
/// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static IMessageBase GetRequestEntity(string xml)
|
||||
{
|
||||
return GetRequestEntity(XDocument.Parse(xml));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取XDocument转换后的IRequestMessageBase实例。
|
||||
/// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常
|
||||
/// </summary>
|
||||
/// <param name="stream">如Request.InputStream</param>
|
||||
/// <returns></returns>
|
||||
public static IMessageBase GetRequestEntity(Stream stream)
|
||||
{
|
||||
using (XmlReader xr = XmlReader.Create(stream))
|
||||
{
|
||||
var doc = XDocument.Load(xr);
|
||||
|
||||
return GetRequestEntity(doc);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
/*
|
||||
<xml>
|
||||
<ToUserName><![CDATA[toUser]]></ToUserName>
|
||||
<FromUserName><![CDATA[FromUser]]></FromUserName>
|
||||
<CreateTime>123456789</CreateTime>
|
||||
<MsgType><![CDATA[event]]></MsgType>
|
||||
<Event><![CDATA[subscribe]]></Event>
|
||||
<EventKey><![CDATA[qrscene_123123]]></EventKey>
|
||||
<Ticket><![CDATA[TICKET]]></Ticket>
|
||||
</xml>
|
||||
*/
|
||||
using Hncore.Pass.MsgCenter.Constant;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Hncore.Pass.MsgCenter.Util;
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
/// <summary>
|
||||
/// 扫描二维码关注
|
||||
/// </summary>
|
||||
public class MessageEventScan : MessageMPBase
|
||||
{
|
||||
public MessageEventScan(XDocument doc) : base(doc)
|
||||
{
|
||||
this.EventKey = doc.Root.Element("EventKey").Value;
|
||||
this.Ticket = doc.Root.Element("Ticket").Value;
|
||||
}
|
||||
public override RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.event_SCAN; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 事件KEY值,qrscene_为前缀,后面为二维码的参数值
|
||||
/// </summary>
|
||||
public string EventKey { get; set; }
|
||||
/// <summary>
|
||||
/// 二维码的ticket,可用来换取二维码图片
|
||||
/// </summary>
|
||||
public string Ticket { get; set; }
|
||||
|
||||
public override async Task<bool> Handler()
|
||||
{
|
||||
///参数形式 method?a=1&b=2
|
||||
var dataUrl = this.EventKey;
|
||||
var model = UrlHelper.ParseUrl(dataUrl);
|
||||
|
||||
if (model.Method == "addtag")
|
||||
{
|
||||
var tagid = model.Args["tagid"];
|
||||
|
||||
WxOpenApi.AddTag(this.AppId, new List<string>() { this.FromUserName }, tagid);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/*
|
||||
<xml>
|
||||
<ToUserName><![CDATA[toUser]]></ToUserName>
|
||||
<FromUserName><![CDATA[FromUser]]></FromUserName>
|
||||
<CreateTime>123456789</CreateTime>
|
||||
<MsgType><![CDATA[event]]></MsgType>
|
||||
<Event><![CDATA[subscribe]]></Event>
|
||||
</xml>
|
||||
*/
|
||||
using Hncore.Infrastructure.Common;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
/// <summary>
|
||||
/// 关注
|
||||
/// </summary>
|
||||
public class MessageEventSubscribe : MessageMPBase
|
||||
{
|
||||
public MessageEventSubscribe(XDocument doc) : base(doc)
|
||||
{
|
||||
}
|
||||
public override RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.event_subscribe; }
|
||||
}
|
||||
|
||||
public override async Task<bool> Handler()
|
||||
{
|
||||
LogHelper.Info("MessageEventSubscribe", $"AppId={this.AppId},openid={this.FromUserName}");
|
||||
var userInfo = await WxOpenApi.GetUserUnionIDinfo(this.AppId, this.FromUserName);
|
||||
LogHelper.Info("MessageEventSubscribe_userInfo", $"AppId={this.AppId},unionid={ userInfo.unionid}");
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
/*
|
||||
<xml>
|
||||
<ToUserName><![CDATA[toUser]]></ToUserName>
|
||||
<FromUserName><![CDATA[FromUser]]></FromUserName>
|
||||
<CreateTime>123456789</CreateTime>
|
||||
<MsgType><![CDATA[event]]></MsgType>
|
||||
<Event><![CDATA[subscribe]]></Event>
|
||||
<EventKey><![CDATA[qrscene_123123]]></EventKey>
|
||||
<Ticket><![CDATA[TICKET]]></Ticket>
|
||||
</xml>
|
||||
*/
|
||||
using Hncore.Pass.MsgCenter.Util;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
/// <summary>
|
||||
/// 扫描二维码关注
|
||||
/// </summary>
|
||||
public class MessageEventSubscribeQrscene : MessageMPBase
|
||||
{
|
||||
public MessageEventSubscribeQrscene(XDocument doc) : base(doc)
|
||||
{
|
||||
this.EventKey = doc.Root.Element("EventKey").Value;
|
||||
this.Ticket = doc.Root.Element("Ticket").Value;
|
||||
}
|
||||
public override RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.event_subscribe_qrscene; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 事件KEY值,qrscene_为前缀,后面为二维码的参数值
|
||||
/// </summary>
|
||||
public string EventKey { get; set; }
|
||||
/// <summary>
|
||||
/// 二维码的ticket,可用来换取二维码图片
|
||||
/// </summary>
|
||||
public string Ticket { get; set; }
|
||||
|
||||
public override async Task<bool> Handler()
|
||||
{
|
||||
///参数形式 method?a=1&b=2
|
||||
var dataUrl = EventKey.TrimStart("qrscene_".ToCharArray());
|
||||
var model = UrlHelper.ParseUrl(dataUrl);
|
||||
|
||||
if (model.Method == "addtag")
|
||||
{
|
||||
var tagid = model.Args["tagid"];
|
||||
|
||||
WxOpenApi.AddTag(this.AppId, new List<string>() { this.FromUserName }, tagid);
|
||||
}
|
||||
|
||||
var userInfo = await WxOpenApi.GetUserUnionIDinfo(this.AppId, this.FromUserName);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 请求消息
|
||||
/// </summary>
|
||||
public class MessageMPBase : IMessageBase
|
||||
{
|
||||
|
||||
public MessageMPBase(XDocument doc)
|
||||
{
|
||||
this.FromUserName = doc.Root.Element("FromUserName").Value;
|
||||
this.ToUserName = doc.Root.Element("ToUserName").Value;
|
||||
this.CreateTime = long.Parse(doc.Root.Element("CreateTime").Value);
|
||||
}
|
||||
public string AppId { get; set; }
|
||||
public string FromUserName { get; set; }
|
||||
public string ToUserName { get; set; }
|
||||
public long CreateTime { get; set; }
|
||||
public virtual RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.component_verify_ticket; }
|
||||
}
|
||||
|
||||
|
||||
public virtual async Task<bool> Handler()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
/*
|
||||
<xml>
|
||||
<AppId>第三方平台appid</AppId>
|
||||
<CreateTime>1413192760</CreateTime>
|
||||
<InfoType>authorized</InfoType>
|
||||
<AuthorizerAppid>公众号appid</AuthorizerAppid>
|
||||
<AuthorizationCode>授权码(code)</AuthorizationCode>
|
||||
<AuthorizationCodeExpiredTime>过期时间</AuthorizationCodeExpiredTime>
|
||||
</xml>
|
||||
*/
|
||||
using System;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
/// <summary>
|
||||
/// 授权成功通知
|
||||
/// </summary>
|
||||
public class MessageAuthorized : MessageOpenBase
|
||||
{
|
||||
public MessageAuthorized(XDocument doc) : base(doc)
|
||||
{
|
||||
this.AuthorizerAppid = doc.Root.Element("AuthorizerAppid").Value;
|
||||
this.AuthorizationCode = doc.Root.Element("AuthorizationCode").Value;
|
||||
this.AuthorizationCodeExpiredTime = DateTimeOffset.Parse(doc.Root.Element("AuthorizationCodeExpiredTime").Value);
|
||||
}
|
||||
public override RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.authorized; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 公众号appid
|
||||
/// </summary>
|
||||
public string AuthorizerAppid { get; set; }
|
||||
/// <summary>
|
||||
/// 授权码(code)
|
||||
/// </summary>
|
||||
public string AuthorizationCode { get; set; }
|
||||
/// <summary>
|
||||
/// 过期时间
|
||||
/// </summary>
|
||||
public DateTimeOffset AuthorizationCodeExpiredTime { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
using Hncore.Pass.MsgCenter.Constant;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
|
||||
//<xml>
|
||||
// <AppId> </AppId>
|
||||
// <CreateTime>1413192605 </CreateTime>
|
||||
// <InfoType> </InfoType>
|
||||
// <ComponentVerifyTicket> </ComponentVerifyTicket>
|
||||
//</xml>
|
||||
public class MessageComponentVerifyTicket : MessageOpenBase
|
||||
{
|
||||
public MessageComponentVerifyTicket(XDocument doc):base(doc)
|
||||
{
|
||||
this.ComponentVerifyTicket = doc.Root.Element("ComponentVerifyTicket").Value;
|
||||
}
|
||||
public override RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.component_verify_ticket; }
|
||||
}
|
||||
public string ComponentVerifyTicket { get; set; }
|
||||
|
||||
public override async Task<bool> Handler()
|
||||
{
|
||||
//把ticket存入redis中
|
||||
return await RedisHelper.SetAsync(ConstantConfig.Redis_Psipwechat_Ticket_Key, this.ComponentVerifyTicket);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 请求消息
|
||||
/// </summary>
|
||||
public class MessageOpenBase : IMessageBase
|
||||
{
|
||||
public MessageOpenBase(XDocument doc)
|
||||
{
|
||||
this.AppId = doc.Root.Element("AppId").Value;
|
||||
this.CreateTime = long.Parse(doc.Root.Element("CreateTime").Value);
|
||||
}
|
||||
public string AppId { get; set; }
|
||||
public long CreateTime { get; set; }
|
||||
public virtual RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.component_verify_ticket; }
|
||||
}
|
||||
public virtual async Task<bool> Handler()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
using System;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
/// <summary>
|
||||
/// 注册审核事件推送
|
||||
/// </summary>
|
||||
public class MessageThirdFasteRegister : MessageOpenBase
|
||||
{
|
||||
public MessageThirdFasteRegister(XDocument doc) : base(doc)
|
||||
{
|
||||
|
||||
}
|
||||
public override RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.notify_third_fasteregister; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建小程序appid
|
||||
/// </summary>
|
||||
public string appid { get; set; }
|
||||
|
||||
public string status { get; set; }
|
||||
/// <summary>
|
||||
/// 第三方授权码
|
||||
/// </summary>
|
||||
public string auth_code { get; set; }
|
||||
|
||||
public string msg { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 注册时提交的资料
|
||||
/// </summary>
|
||||
public info info {get;set;}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注册时提交的资料信息
|
||||
/// </summary>
|
||||
public class info
|
||||
{
|
||||
/// <summary>
|
||||
/// 企业名称
|
||||
/// </summary>
|
||||
public string name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 企业代码
|
||||
/// </summary>
|
||||
public string code { get; set; }
|
||||
/// <summary>
|
||||
/// 企业代码类型
|
||||
/// </summary>
|
||||
public CodeType code_type { get; set; }
|
||||
/// <summary>
|
||||
/// 法人微信号
|
||||
/// </summary>
|
||||
public string legal_persona_wechat { get; set; }
|
||||
/// <summary>
|
||||
/// 法人姓名
|
||||
/// </summary>
|
||||
public string legal_persona_name { get; set; }
|
||||
/// <summary>
|
||||
/// 第三方联系电话
|
||||
/// </summary>
|
||||
public string component_phone { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
|
||||
/*
|
||||
<xml>
|
||||
<AppId>第三方平台appid</AppId>
|
||||
<CreateTime>1413192760</CreateTime>
|
||||
<InfoType>unauthorized</InfoType>
|
||||
<AuthorizerAppid>公众号appid</AuthorizerAppid>
|
||||
</xml>
|
||||
*/
|
||||
using Hncore.Infrastructure.Common;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
public class MessageUnauthorized : MessageOpenBase
|
||||
{
|
||||
public MessageUnauthorized(XDocument doc) : base(doc)
|
||||
{
|
||||
this.AuthorizerAppid = doc.Root.Element("AuthorizerAppid").Value;
|
||||
}
|
||||
public override RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.unauthorized; }
|
||||
}
|
||||
public string AuthorizerAppid { get; set; }
|
||||
|
||||
public override async Task<bool> Handler()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(this.AuthorizerAppid))
|
||||
{
|
||||
try
|
||||
{
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
LogHelper.Error("MessageUnauthorized",ex.Message);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
|
||||
using System;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Hncore.Wx.Open
|
||||
{
|
||||
/// <summary>
|
||||
/// 授权更新通知
|
||||
/// </summary>
|
||||
public class MessageUpdateAuthorized : MessageOpenBase
|
||||
{
|
||||
public MessageUpdateAuthorized(XDocument doc) : base(doc)
|
||||
{
|
||||
this.AuthorizerAppid = doc.Root.Element("AuthorizerAppid").Value;
|
||||
this.AuthorizationCode = doc.Root.Element("AuthorizationCode").Value;
|
||||
this.AuthorizationCodeExpiredTime = DateTimeOffset.Parse(doc.Root.Element("AuthorizationCodeExpiredTime").Value);
|
||||
}
|
||||
public override RequestInfoType InfoType
|
||||
{
|
||||
get { return RequestInfoType.updateauthorized; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 公众号appid
|
||||
/// </summary>
|
||||
public string AuthorizerAppid { get; set; }
|
||||
/// <summary>
|
||||
/// 授权码(code)
|
||||
/// </summary>
|
||||
public string AuthorizationCode { get; set; }
|
||||
/// <summary>
|
||||
/// 过期时间
|
||||
/// </summary>
|
||||
public DateTimeOffset AuthorizationCodeExpiredTime { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user