/// <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"; }
/// <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)); }