コード例 #1
0
        //<?xml version="1.0" encoding="utf-8"?>
        //<xml>
        //  <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName>
        //  <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName>
        //  <CreateTime>1357986928</CreateTime>
        //  <MsgType><![CDATA[text]]></MsgType>
        //  <Content><![CDATA[中文]]></Content>
        //  <MsgId>5832509444155992350</MsgId>
        //</xml>

        /// <summary>
        /// 获取XDocument转换后的IRequestMessageBase实例。
        /// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常
        /// </summary>
        /// <returns></returns>
        public static IRequestMessageBase GetRequestEntity(XDocument doc, PostModel postModel = null)
        {
            RequestMessageBase requestMessage = null;
            RequestInfoType    infoType;

            try
            {
                infoType = InfoTypeHelper.GetRequestInfoType(doc);
                switch (infoType)
                {
                case RequestInfoType.component_verify_ticket:
                    requestMessage = new RequestMessageComponentVerifyTicket();
                    break;

                case RequestInfoType.unauthorized:
                    /*
                     * <xml>
                     * <AppId>第三方平台appid</AppId>
                     * <CreateTime>1413192760</CreateTime>
                     * <InfoType>unauthorized</InfoType>
                     * <AuthorizerAppid>公众号appid</AuthorizerAppid>
                     * </xml>
                     */
                    requestMessage = new RequestMessageUnauthorized();
                    break;

                case RequestInfoType.authorized:
                    /*
                     * <xml>
                     * <AppId>第三方平台appid</AppId>
                     * <CreateTime>1413192760</CreateTime>
                     * <InfoType>authorized</InfoType>
                     * <AuthorizerAppid>公众号appid</AuthorizerAppid>
                     * <AuthorizationCode>授权码(code)</AuthorizationCode>
                     * <AuthorizationCodeExpiredTime>过期时间</AuthorizationCodeExpiredTime>
                     * </xml>
                     */
                    requestMessage = new RequestMessageAuthorized();
                    break;

                case RequestInfoType.updateauthorized:
                    requestMessage = new RequestMessageUpdateAuthorized();
                    break;

                default:
                    throw new UnknownRequestMsgTypeException(string.Format("InfoType:{0} 在RequestMessageFactory中没有对应的处理程序!", infoType), new ArgumentOutOfRangeException());    //为了能够对类型变动最大程度容错(如微信目前还可以对公众账号suscribe等未知类型,但API没有开放),建议在使用的时候catch这个异常
                }
                EntityHelper.FillEntityWithXml(requestMessage, doc);
            }
            catch (ArgumentException ex)
            {
                throw new WeixinException(string.Format("RequestMessage转换出错!可能是InfoType不存在!,XML:{0}", doc.ToString()), ex);
            }
            return(requestMessage);
        }
コード例 #2
0
ファイル: InsideMsgHandler.cs プロジェクト: kevinleptin/Libra
        public override string OnAuthorizedRequest(RequestMessageAuthorized requestMessage)
        {
            // create new entity
            AppAuthInfo appInfo = new AppAuthInfo();

            appInfo.AuthorizerAppId = requestMessage.AuthorizerAppid; // db table key
            appInfo.AppId           = requestMessage.AppId;           // 第三方平台的 appid
            appInfo.Authorized      = true;
            appInfo.Code            = requestMessage.AuthorizationCode;
            appInfo.ExpiredTime     = requestMessage.AuthorizationCodeExpiredTime;
            appInfo.CreateOn        = DateTime.Now;
            appInfo.LastUpdateOn    = DateTime.Now;

            //,
            var authorizerInfoResult = ComponentApi.GetAuthorizerInfo(ComponentKeys.GetInstance().AccessData.AccessCode, _wxConfig.AppId, requestMessage.AuthorizerAppid);
            var authorizerInfo       = authorizerInfoResult.authorizer_info;
            var authorizerInfoEntity = new JinZhou.Models.DbEntities.AuthorizerInfo()
            {
                UserName      = authorizerInfo.user_name,
                NickName      = authorizerInfo.nick_name,
                HeadImg       = authorizerInfo.head_img,
                ServiceType   = (int)authorizerInfo.service_type_info.id,
                VerifyType    = (int)authorizerInfo.verify_type_info.id,
                PrincipalName = authorizerInfo.principal_name,
                BizStore      = authorizerInfo.business_info.open_store,
                BizPay        = authorizerInfo.business_info.open_pay,
                BizCard       = authorizerInfo.business_info.open_card,
                BizScan       = authorizerInfo.business_info.open_scan,
                BizShake      = authorizerInfo.business_info.open_shake,
                Alias         = authorizerInfo.alias,
                QrcodeUrl     = authorizerInfo.qrcode_url
            };

            appInfo.Authorizer = authorizerInfoEntity;

            db.AppAuths.Add(appInfo);
            db.SaveChanges();
            return(base.OnAuthorizedRequest(requestMessage));
        }
コード例 #3
0
 /// <summary>
 /// 授权成功通知
 /// </summary>
 /// <param name="requestMessage"></param>
 /// <returns></returns>
 public virtual string OnAuthorizedRequest(RequestMessageAuthorized requestMessage)
 {
     return("success");
 }
コード例 #4
0
 /// <summary>
 /// 授权成功通知
 /// </summary>
 /// <param name="requestMessage"></param>
 /// <returns></returns>
 public virtual string OnAuthorizedRequest(RequestMessageAuthorized requestMessage)
 {
     return "success";
 }
コード例 #5
0
 public override string OnAuthorizedRequest(RequestMessageAuthorized requestMessage)
 {
     return(base.OnAuthorizedRequest(requestMessage));
 }