Ejemplo n.º 1
0
        /// <summary>
        /// 全网发布时处理文本发送
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public static string OnTextRequest(RequestMessageText requestMessage, PostModel postModel)
        {
            if (requestMessage.Content == "TESTCOMPONENT_MSG_TYPE_TEXT")
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<xml>");
                sb.Append($"<ToUserName><![CDATA[{requestMessage.FromUserName}]]></ToUserName>");
                sb.Append($"<FromUserName><![CDATA[{requestMessage.ToUserName}]]></FromUserName>");
                sb.Append($"<CreateTime>{DateTimeHelper.GetTimeStamp(true)}</CreateTime>");
                sb.Append($"<MsgType><![CDATA[text]]></MsgType>");
                sb.Append($"<Content><![CDATA[TESTCOMPONENT_MSG_TYPE_TEXT_callback]]></Content>");
                sb.Append("</xml>");

                var timeStamp = DateTime.Now.Ticks.ToString();
                var nonce = DateTime.Now.Ticks.ToString();

                //必须要加密
                WXBizMsgCrypt msgCrype = new WXBizMsgCrypt(postModel.Token, postModel.EncodingAESKey, postModel.AppId);
                string finalResponseXml = null;
                msgCrype.EncryptMsg(sb.ToString().Replace("\r\n", "\n")/* 替换\r\n是为了处理iphone设备上换行bug */, timeStamp, nonce, ref finalResponseXml);//TODO:这里官方的方法已经把EncryptResponseMessage对应的XML输出出来了

                return finalResponseXml;
            }

            if (requestMessage.Content.StartsWith("QUERY_AUTH_CODE:"))
            {
                string openTicket = OpenPlatConfigBLL.SingleModel.GetComponentVerifyTicket();
                string query_auth_code = requestMessage.Content.Replace("QUERY_AUTH_CODE:", "");
                try
                {
                    OpenPlatConfig currentmodel = OpenPlatConfigBLL.SingleModel.getCurrentModel();
                    QueryAuthResult oauthResult = WxRequest.QueryAuth(currentmodel.component_access_token, currentmodel.component_Appid, query_auth_code);

                    //调用客服接口
                    string content = query_auth_code + "_from_api";

                    //Task.Run(() => {
                    //    Thread.Sleep(1000);
                    //    WxRequest.SendText(oauthResult.authorization_info.authorizer_access_token, requestMessage.FromUserName, content);
                    //});

                    WxRequest.SendText(oauthResult.authorization_info.authorizer_access_token, requestMessage.FromUserName, content);
                    return "";
                }
                catch (Exception ex)
                {
                    log4net.LogHelper.WriteError(typeof(WXRequestCommandBLL), ex);
                }
            }
            return "success";
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 发起授权页的体验URL
        /// </summary>
        /// <returns></returns>
        public ActionResult OAuth()
        {
            OpenPlatConfig currentmodel           = OpenPlatConfigBLL.SingleModel.getCurrentModel();
            string         component_access_token = currentmodel.component_access_token;
            //获取预授权码
            var preAuthCode = WxRequest.GetPreAuthCode(currentmodel.component_Appid, component_access_token);

            if (preAuthCode == null)
            {
                return(Content("获取预授权码失败"));
            }

            string callbackUrl = $"{WxRequest._component_Host}/OpenOAuth/OpenOAuthCallback";//成功回调地址
            string url         = WxRequest.ReturnUrl(currentmodel.component_Appid, preAuthCode.pre_auth_code, callbackUrl);

            return(Redirect(url));
        }