Пример #1
0
        /// <summary>
        /// 发送连接消息
        /// </summary>
        /// <param name="linkUrl"></param>
        /// <param name="picUrl"></param>
        /// <param name="title"></param>
        /// <param name="description"></param>
        /// <param name="openId"></param>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public async Task SendUrlMessageAsync(string linkUrl, string picUrl, string title, string description,
                                              string openId,
                                              string accessToken)
        {
            JObject root        = new JObject();
            JObject contentJson = new JObject();
            JObject articles    = new JObject();
            JArray  array       = new JArray {
                contentJson
            };

            articles["articles"]       = array;
            contentJson["url"]         = linkUrl;
            contentJson["pic_url"]     = picUrl;
            contentJson["title"]       = title;
            contentJson["description"] = description;
            root["touser"]             = openId;
            root["msgtype"]            = "news";
            root["news"] = articles;
            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/custom/send"),
                new Dictionary <string, string>
            {
                {
                    "access_token", accessToken
                }
            }, root.ToString());

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
        }
Пример #2
0
        public ActionResult PrStaffRoleConfig()
        {
            var rsp = WeChatHelper.PostService <DeptStaff, DeptStaffResponse>("DeptStaff", new DeptStaff {
                RequestType = 0, CurrDept = Session["DepartNo"].CastTo(""), CurrOper = Session["StaffNo"].CastTo("")
            });
            List <InsideDepart> departList = rsp.Departs.ToList();

            departList.Add(new InsideDepart {
                DEPARTNO = "", DEPARTNAME = "--请选择--"
            });

            List <InsideStaff> staffList = rsp.Staffs.ToList();

            staffList.Add(new InsideStaff {
                STAFFNO = "", STAFFNAME = "--请选择--", DEPARTNO = ""
            });

            ViewBag.Staffs  = JsonConvert.SerializeObject(staffList.OrderBy(p => p.STAFFNO));
            ViewBag.Departs = JsonConvert.SerializeObject(departList.OrderBy(p => p.DEPARTNO));

            GridBusinessRule girdBusinessRule = new GridBusinessRule("员工角色信息维护");

            girdBusinessRule.GridId             = "PrStaffRoleConfig";
            girdBusinessRule.ToolbarItem        = "search";
            girdBusinessRule.PrimaryKey         = "ROLENO";
            girdBusinessRule.AutoSearch         = false;
            girdBusinessRule.IsClosedQueryModal = "false";
            girdBusinessRule.GridDataUrl        = Url.Action("QueryPrStaffNoRole");
            girdBusinessRule.PermmitUrl         = Url.Action("ModifyPrStaffRole");
            return(View(girdBusinessRule));
        }
Пример #3
0
        public ActionResult SendMsg(string roleNos, string departNos, string staffNos, string grade, string title, string content, string fileName, string fileData, string fileNo)
        {
            if (fileNo == "undefined")
            {
                fileNo = "";
            }
            byte[] myByte = null;
            if (string.IsNullOrEmpty(fileNo) && !string.IsNullOrEmpty(fileData))
            {
                myByte = Convert.FromBase64String(fileData.Split(",")[1]);
            }

            List <string> roleList   = roleNos.Split(",").ToList();
            List <string> departList = departNos.Split(",").ToList();
            List <string> staffList  = staffNos.Split(",").ToList();

            Msg request = new Msg
            {
                RequestType = 6,
                Roles       = roleList,
                Departs     = departList,
                StaffNos    = staffList,
                Level       = grade,
                Title       = title.Split("发送于")[0].Trim(),
                Content     = content,
                FileName    = fileName,
                UpLoadFile  = myByte,
                FileNo      = fileNo,
                DepartNo    = Session["DepartNo"].CastTo(""),
                StaffNo     = Session["StaffNo"].CastTo("")
            };
            string response = WeChatHelper.PostService("Msg", request);

            return(Json(response, JsonRequestBehavior.DenyGet));
        }
Пример #4
0
        /// <summary>
        /// 获取微信配置信息
        /// </summary>
        /// <returns></returns>
        public ActionResult GetWeChatConfig()
        {
            GetJsApiAccessTokenModel model = new GetJsApiAccessTokenModel();

            model.sAppId     = sAppId;
            model.sAppSecret = sAppSecret;
            IWeChatRequest request   = new GetJsApiAccessTokenRequest();
            var            respone   = request.Execute <GetJsApiAccessTokenRespone>(model);
            string         noncestr  = WeChatHelper.GetRandomStr();
            long           timestamp = WeChatHelper.GetTimeStamp();
            string         sign      = "";

            if (respone.errcode == 0)
            {
                string url       = Request.UrlReferrer.AbsoluteUri;
                var    paramters = new Dictionary <string, string>();
                paramters.Add("jsapi_ticket", respone.ticket);
                paramters.Add("noncestr", noncestr);
                paramters.Add("timestamp", timestamp.ToString());
                paramters.Add("url", url);
                sign = WeChatHelper.CreateSha1Sign(paramters);
                //返回的配置
                paramters.Add("appId", sAppId);
                paramters.Add("signature", sign);
                result.success = true;
                result.data    = paramters;
            }
            else
            { //公众号配置信息错误
                result.info    = "公众号配置信息错误";
                result.success = false;
            }
            return(Content(JsonHelper.ToJsonString(result)));
        }
Пример #5
0
        private static WeChatAppMessage PrepareMessage(string argument)
        {
            string[] parts = argument.Split(' ');

            WeChatAppMessage result = new WeChatAppMessage();

            result.Title = GetArgumentByIndex(parts, 0);

            string fileInfo = GetArgumentByIndex(parts, 1);
            int    fileID   = 0;

            if (int.TryParse(fileInfo, out fileID))
            {
                result.FileID = fileID;
            }
            else
            {
                result.FileID = WeChatHelper.UploadFile(fileInfo, WeChatRequestContext.Current.LoginInfo).Content;
            }

            result.Content = GetArgumentByIndex(parts, 2);
            result.Author  = GetArgumentByIndex(parts, 3);

            return(result);
        }
Пример #6
0
        /// <summary>
        /// 输出用户输入的信息
        /// </summary>
        /// <param name="tm"></param>
        /// <returns></returns>
        public string DefaultHandler(TextMessage tm)
        {
            if (tm.Content.Contains("查询"))
            {
                tm.Content = "http://www.baidu.com";
            }
            else if (tm.Content.Contains("天气"))
            {
                tm.Content = "http://www.weather.com.cn/";
            }

            else if (tm.Content.Contains("openid"))
            {
                tm.Content = tm.FromUserName;
            }
            else
            {
                tm.Content = "你说的是:" + tm.Content;
            }
            string toOpenid = tm.ToUserName;

            tm.ToUserName   = tm.FromUserName;
            tm.FromUserName = toOpenid;
            tm.CreateTime   = WeChatHelper.WeChatNowTime();
            return(tm.GenerateContent());
        }
Пример #7
0
        /// <summary>
        /// 输出用户输入的信息
        /// </summary>
        /// <param name="tm"></param>
        /// <returns></returns>
        public string DefaultHandler(TextMessage tm)
        {
            DailyDishHelper ddh = new DailyDishHelper();

            ddh.CreateUser(tm.FromUserName, "waiting..");
            if (tm.Content.Contains("1"))
            {
                tm.Content = "请点此链接设置个人口味:" + ConfigurationManager.AppSettings["WechatUrl"] + tm.FromUserName;
            }
            else if (tm.Content.Contains("2"))
            {
                DishesModel model = ddh.GetDishByUser(tm.FromUserName);
                ddh.SaveRecommendHistory(tm.FromUserName, model.Id, model.Score, model.DishName);
                ddh.UpdateDishScore(tm.FromUserName, model.Id);
                tm.Content = "请点此链接查看你的专属推荐" + ConfigurationManager.AppSettings["RecommendUrl"] + tm.FromUserName;;
            }


            string toOpenid = tm.ToUserName;

            tm.ToUserName   = tm.FromUserName;
            tm.FromUserName = toOpenid;
            tm.CreateTime   = WeChatHelper.WeChatNowTime();
            return(tm.GenerateContent());
        }
Пример #8
0
        private void SynchronizeGroups()
        {
            List <WeChatGroup> allGroups = new List <WeChatGroup>();

            var allAccounts = AccountInfoAdapter.Instance.LoadAll();

            foreach (var account in allAccounts)
            {
                WeChatRequestContext.Current.LoginInfo = WeChatHelper.ExecLogin(account.UserID, account.Password);
                Thread.Sleep(1000);

                WeChatGroupCollection groups = WeChatHelper.GetAllGroups(WeChatRequestContext.Current.LoginInfo);
                Thread.Sleep(1000);

                foreach (var group in groups)
                {
                    group.AccountID = account.AccountID;
                    allGroups.Add(group);
                }
            }

            foreach (var group in allGroups)
            {
                WeChatGroupAdapter.Instance.Update(group);
            }
        }
Пример #9
0
        public async Task <bool> SendToWechat(IList <string> openids)
        {
            try
            {
                StallApplication.SysInfoFormat($"[MSG]start sending order {Id} to wechat");

                //send message
                var msg    = OwnerAlertMessage;
                var result = await WeChatHelper.SendMessageAsync(openids, msg);

                if (result)
                {
                    StallApplication.SysInfoFormat($"[MSG]succeed sending order {Id} to wechat");
                }
                else
                {
                    StallApplication.SysInfoFormat($"[MSG]failed sending order {Id} to wechat");
                }
                return(result);
            }
            catch (Exception ex)
            {
                StallApplication.SysError("[MSG]failed to send message", ex);
                return(false);
            }
        }
Пример #10
0
 public override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     if (filterContext.HttpContext.Session["StaffNo"] == null)
     {
         string strIp = ConfigurationManager.AppSettings["LoginIP"];
         if (filterContext.HttpContext.Request.Cookies["strIp"] != null)
         {
             strIp = filterContext.HttpContext.Request.Cookies["strIp"].Value;
         }
         string script = "window.top.location.href= '/';";
         filterContext.HttpContext.Response.Write("<script language=\"javascript\">" + script + "</script>");
         return;
     }
     if (filterContext.HttpContext.Request.Url != null)
     {
         string url = filterContext.HttpContext.Request.Url.AbsolutePath.Substring(1).ToLower();
         if (url != "")
         {
             ForeVerify request = new ForeVerify()
             {
                 StaffNo  = filterContext.HttpContext.Session["StaffNo"].ToString(),
                 DepartNo = filterContext.HttpContext.Session["DepartNo"].ToString(),
                 Url      = url
             };
             ForeVerifyResponse response = WeChatHelper.PostService <ForeVerify, ForeVerifyResponse>("ForeVerify", request);
             if (response.ResponseStatus.ErrorCode != "OK")
             {
                 filterContext.Result = new ContentResult
                 {
                     Content = "权限错误"
                 };
             }
         }
     }
 }
Пример #11
0
        /// <summary>
        /// 获取关注和未关注的用户列表
        /// 最多拉取100条
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="openId"></param>
        /// <param name="lang"></param>
        /// <returns></returns>
        public async Task <dynamic> GetUserInfoListAsync(string accessToken, List <string> openId, string lang = "zh_CN")
        {
            var ids = new List <object>();

            foreach (var id in openId)
            {
                ids.Add(new
                {
                    openid = id,
                    lang
                });
            }
            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/user/info/batchget"), new Dictionary <string, string>
            {
                {
                    WeChatConstant.AccessToken, accessToken
                }
            }, JsonConvert.SerializeObject(new
            {
                user_list = ids
            }));

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
            return(result.ToObject <dynamic>());
        }
        /// <summary>
        ///     带证书的post
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="obj"></param>
        /// <param name="cer"></param>
        /// <param name="result"></param>
        /// <param name="serializeStrFunc"></param>
        /// <param name="inputDataType"></param>
        /// <param name="outDataType"></param>
        /// <returns></returns>
        public T HttpPost <T>(string url, object obj, X509Certificate2 cer, out string result,
                              Func <string, string> serializeStrFunc = null, WebRequestDataTypes inputDataType = WebRequestDataTypes.JSON,
                              WebRequestDataTypes outDataType        = WebRequestDataTypes.JSON) where T : class
        {
            string postStr = null;

            switch (inputDataType)
            {
            case WebRequestDataTypes.XML:
                postStr = XmlHelper.SerializeObject(obj);
                break;

            default:
                postStr = JsonConvert.SerializeObject(obj);
                break;
            }
            if (serializeStrFunc != null)
            {
                postStr = serializeStrFunc(postStr);
            }
            WeChatHelper.LoggerAction("api", "postStrs:" + postStr);
            result = HttpPost(url, postStr, cer);
            WeChatHelper.LoggerAction("api", "result:" + result);
            switch (outDataType)
            {
            case WebRequestDataTypes.XML:
                return(XmlHelper.DeserializeObject <T>(result));

            default:
                return(JsonConvert.DeserializeObject <T>(result));
            }
        }
        public T HttpPost <T>(string url, object obj, out string result, Func <string, string> serializeStrFunc = null,
                              WebRequestDataTypes inputDataType = WebRequestDataTypes.JSON,
                              WebRequestDataTypes outDataType   = WebRequestDataTypes.JSON) where T : class
        {
            string postStr = null;

            switch (inputDataType)
            {
            case WebRequestDataTypes.XML:
                postStr = XmlHelper.SerializeObject(obj);
                break;

            default:
                postStr = JsonConvert.SerializeObject(obj);
                break;
            }
            if (serializeStrFunc != null)
            {
                postStr = serializeStrFunc(postStr);
            }
            WeChatHelper.LoggerAction("api", string.Format("Pre POST Url:{0},Data:{1}", url, postStr));
            result = HttpPost(url, postStr);
            WeChatHelper.LoggerAction("api", string.Format("POST Url:{0},result:{1}", url, result));
            switch (outDataType)
            {
            case WebRequestDataTypes.XML:
                return(XmlHelper.DeserializeObject <T>(result));

            default:
                return(JsonConvert.DeserializeObject <T>(result));
            }
        }
Пример #14
0
        /// <summary>
        /// 发送视频
        /// </summary>
        /// <param name="videoMediaId">视频素材id</param>
        /// <param name="thumbMediaId">缩略图id</param>
        /// <param name="title">标题</param>
        /// <param name="description">描述</param>
        /// <param name="openId">接受消息的OpenId</param>
        /// <param name="accessToken">token</param>
        /// <returns></returns>
        public async Task SendVideoMessageAsync(string videoMediaId, string thumbMediaId, string title,
                                                string description, string openId, string accessToken)
        {
            JObject root        = new JObject();
            JObject contentJson = new JObject();

            contentJson["media_id"]       = videoMediaId;
            contentJson["title"]          = title;
            contentJson["thumb_media_id"] = thumbMediaId;
            contentJson["description"]    = description;
            root["touser"]  = openId;
            root["msgtype"] = "video";
            root["video"]   = contentJson;
            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/custom/send"),
                new Dictionary <string, string>
            {
                {
                    "access_token", accessToken
                }
            }, root.ToString());

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
        }
Пример #15
0
        //获取access_token
        protected string GetAccessToken(string appid, string appsecret)
        {
            if (string.IsNullOrEmpty(appid) || string.IsNullOrEmpty(appsecret))
            {
                return(null);
            }

            string key = string.Format("WeChat.Access_Token_{0}_{1}", appid, appsecret);

            string access_token = DataCache.Get <string>(key);

            if (string.IsNullOrEmpty(access_token))
            {
                var dict = WeChatHelper.GetAccessToken(appid, appsecret);

                if (dict != null && dict["access_token"] != null)
                {
                    access_token = dict["access_token"].ToString();
                    DataCache.Remove(key);
                    DataCache.Add(key, access_token, new TimeSpan(0, 0, int.Parse(dict["expires_in"].ToString()) - 200));
                }
            }

            return(access_token);
        }
        private bool sendmessage(string openid, string userid)
        {
            DataSet dtWeiXinMsg = TmoShare.getDataSetFromXML(tmo_wechat_consulting);
            //dtWeiXinMsg.Tables[0].Clear();
            DataRow newRow = dtWeiXinMsg.Tables[0].NewRow();

            newRow["we_id"]         = openid;
            newRow["con_content"]   = "医生主动咨询";
            newRow["reply_content"] = ask_content.Text;
            newRow["input_time"]    = System.DateTime.Now;
            newRow["update_time"]   = System.DateTime.Now;

            newRow["user_id"] = userid;
            newRow["doc_id"]  = TmoComm.login_docInfo.doc_id.ToString();
            newRow["con_id"]  = Guid.NewGuid().ToString("N");
            dtWeiXinMsg.Tables[0].Rows.InsertAt(newRow, 0);
            dtWeiXinMsg.AcceptChanges();
            bool answer = (bool)(TmoServiceClient.InvokeServerMethodT <bool>(funCode.AddAsk, new object[] { TmoCommon.TmoShare.getXMLFromDataSet(dtWeiXinMsg) }));

            if (answer)
            {
                string  data = @"<data>
                                <first>
                                    <value></value>
                                    <color></color>
                                </first>
                                <keyword1>
                                    <value></value>
                                    <color></color>
                                </keyword1>
                                <keyword2>
                                    <value></value>
                                    <color></color>
                                </keyword2>
                                <remark>
                                    <value></value>
                                    <color></color>
                                </remark>        
                            </data>";
                DataSet ds   = TmoShare.getDataSetFromXML(data);

                ds.Tables["first"].Rows[0]["value"]    = "尊敬的用户,医生对您进行了提问:";
                ds.Tables["first"].Rows[0]["color"]    = TmoShare.RGBToWebColor(Color.Gray);
                ds.Tables["keyword1"].Rows[0]["value"] = "无";
                ds.Tables["keyword1"].Rows[0]["color"] = TmoShare.RGBToWebColor(Color.Gray);
                ds.Tables["keyword2"].Rows[0]["value"] = ask_content.Text;
                ds.Tables["keyword2"].Rows[0]["color"] = TmoShare.RGBToWebColor(Color.Gray);
                ds.Tables["remark"].Rows[0]["value"]   = "感谢您的使用!";
                ds.Tables["remark"].Rows[0]["color"]   = TmoShare.RGBToWebColor(Color.Gray);
                string content    = TmoCommon.TmoShare.GetXml_NO_TITLE(ds);
                string templateID = ConfigHelper.GetConfigString("WX_TEMPLATE_RSID");//模板
                string err_tip    = WeChatHelper.WXTemplateMsgSend(new object[] { "admin", openid, templateID, "", TmoShare.RGBToWebColor(Color.Green), content });

                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #17
0
        /// <summary>
        /// 上传永久素材视频
        /// </summary>
        /// <param name="fileType"></param>
        /// <param name="stream"></param>
        /// <param name="accessToken"></param>
        /// <param name="title"></param>
        /// <param name="desc"></param>
        /// <returns></returns>
        public async Task <dynamic> UploadPermanentFile(FileType fileType, FileStream stream, string accessToken,
                                                        string title, string desc)
        {
            var urlParam = new Dictionary <string, string>
            {
                {
                    WeChatParameterKey.Access_Token,
                    accessToken
                },
                {
                    "type",
                    fileType.ToString()
                },
                {
                    WeChatConstant.AccessToken, accessToken
                }
            };
            var bodyParam = new Dictionary <string, string>
            {
                { "title", title },
                { "introduction", desc }
            };

            var response = await _client.ExecuteUploadFileRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/material/add_material"), urlParam, bodyParam, stream);

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
            return(result.ToObject <dynamic>());
        }
Пример #18
0
        public async Task <MessageModel <WeChatApiDto> > GetToken(string publicAccount)
        {
            var config = await this.QueryById(publicAccount);

            if (config == null)
            {
                MessageModel <string> .Success($"公众号{publicAccount}未维护至系统");              //还没过期,直接返回
            }
            if (config.tokenExpiration > DateTime.Now)
            {
                //再次判断token在微信服务器是否正确
                var wechatIP = await WeChatHelper.GetWechatIP(config.token);

                if (wechatIP.errcode == 0)
                {
                    MessageModel <WeChatApiDto> .Success("", new WeChatApiDto { access_token = config.token });//还没过期,直接返回
                }
            }
            //过期了,重新获取
            var data = await WeChatHelper.GetToken(config.appid, config.appsecret);

            if (data.errcode.Equals(0))
            {
                config.token           = data.access_token;
                config.tokenExpiration = DateTime.Now.AddSeconds(data.expires_in);
                await this.Update(config);

                return(MessageModel <WeChatApiDto> .Success("", data));
            }
            else
            {
                return(MessageModel <WeChatApiDto> .Fail($"\r\n获取Token失败\r\n错误代码:{data.errcode}\r\n错误信息:{data.errmsg}"));
            }
        }
Пример #19
0
        // GET: Auth/WxCallback
        public ActionResult WxCallback()
        {
            LogHelper.Debug(string.Format("Call Auth/WxCallback. RawUrl:[{0}]", Request.RawUrl));
            var code = Request["code"];

            if (string.IsNullOrEmpty(code))
            {
                ViewBag.Message = "没有返回code参数";
                return(View());
            }
            var redirectKey = Request["rid"];

            if (redirectKey != null)
            {
                redirectKey = redirectKey.ToLower();
            }
            if (!AppContext.AuthRedirectDictionary.ContainsKey(redirectKey))
            {
                ViewBag.Message = "回调参数错误";
                return(View());
            }
            var authRedirect = AppContext.AuthRedirectDictionary[redirectKey];
            var weChatHelper = WeChatHelper.GetInstance(authRedirect.CompanyCode);
            var accessToken  = weChatHelper.GetAuthAccessToken(code);
            var paramString  = string.Empty;

            if (authRedirect.NeedUserInfo && accessToken != null)
            {
                WeChatUserSnsInfo userInfo = null;
                if (authRedirect.IsUserInfoScope)
                {
                    userInfo = weChatHelper.GetUserSnsInfo(accessToken.access_token, accessToken.openid);
                }
                else
                {
                    userInfo = weChatHelper.GetUserBasicInfo(accessToken.openid);
                }
                if (userInfo != null)
                {
                    paramString = userInfo.GetBasicInfoString();
                }
            }
            else
            {
                var openId = accessToken == null ? string.Empty : accessToken.openid;
                paramString = "openid=" + openId;
            }
            var redirectUrl = HttpUtility.UrlDecode(authRedirect.RedirectUrl);

            if (redirectUrl.Contains("?"))
            {
                redirectUrl = string.Concat(redirectUrl, "&", paramString);
            }
            else
            {
                redirectUrl = string.Concat(redirectUrl, "?", paramString);
            }
            LogHelper.Debug(string.Format("Call Auth/WxCallback. RedirectUrl:[{0}]", redirectUrl));
            return(Redirect(redirectUrl));
        }
Пример #20
0
    /// <summary>
    /// 获取ACCESS_TOKEN方法
    /// </summary>
    /// <param name="appId"></param>
    /// <param name="appSecret"></param>
    /// <returns></returns>
    private static string GetAccessToken(string appId, string appSecret)
    {
        string url    = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appId, appSecret);
        string result = WeChatHelper.GetData(url);

        if (result.Contains("40164"))
        {
            LogHelper.Write("TokenModel_GetAccessToken出错:" + result);
            return(null);
        }

        XmlDocument doc  = JsonHelper.ParseJson(result, "root");
        XmlNode     root = doc.SelectSingleNode("root");

        if (root != null)
        {
            XmlNode access_token = root.SelectSingleNode("access_token");
            if (access_token != null)
            {
                GetAccessToken_Time = DateTime.Now;
                if (root.SelectSingleNode("expires_in") != null)
                {
                    Expires_Period = int.Parse(root.SelectSingleNode("expires_in").InnerText);
                }
                return(access_token.InnerText);
            }
            else
            {
                GetAccessToken_Time = DateTime.MinValue;
            }
        }

        return(null);
    }
Пример #21
0
        /// <summary>
        /// 获取Jsapi_ticket方法
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="appSecret"></param>
        /// <returns></returns>
        private static string GetJsapi_ticket(string appId, string appSecret)
        {
            string url    = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", TokenModel.AccessToken);
            string result = WeChatHelper.GetData(url);

            XmlDocument doc  = JsonHelper.ParseJson(result, "root");
            XmlNode     root = doc.SelectSingleNode("root");

            if (root != null)
            {
                XmlNode ticket = root.SelectSingleNode("ticket");
                if (ticket != null)
                {
                    GetJsapi_ticket_Time = DateTime.Now;
                    if (root.SelectSingleNode("expires_in") != null)
                    {
                        Jsapi_ticket_Expires_Period = int.Parse(root.SelectSingleNode("expires_in").InnerText);
                    }
                    return(ticket.InnerText);
                }
                else
                {
                    GetJsapi_ticket_Time = DateTime.MinValue;
                }
            }

            return(null);
        }
Пример #22
0
        public async Task <dynamic> PreviewAsync(string mediaId, string accessToken, string openId, int reprint = 0)
        {
            JObject root  = new JObject();
            JObject media = new JObject {
                ["media_id"] = mediaId
            };

            root["mpnews"]              = media;
            root["msgtype"]             = "mpnews";
            root["send_ignore_reprint"] = reprint;
            root["touser"]              = openId;
            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/preview"), new Dictionary <string, string>
            {
                {
                    WeChatConstant.AccessToken,
                    accessToken
                }
            }, root.ToString());

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
            return(result.ToObject <dynamic>());
        }
Пример #23
0
        /// <summary>
        /// 通过标签群发文章
        /// </summary>
        /// <param name="all">是否群发</param>
        /// <param name="tagId"></param>
        /// <param name="mediaId">文档id</param>
        /// <param name="accessToken">token</param>
        /// <param name="reprint">被转载是是否继续群发</param>
        /// <returns></returns>
        public async Task <dynamic> SendArticleMessageByLabelAsync(bool all, string tagId, string mediaId,
                                                                   string accessToken,
                                                                   int reprint = 0)
        {
            JObject root   = new JObject();
            JObject filter = new JObject();
            JObject media  = new JObject();

            filter["is_to_all"]         = all;
            filter["tag_id"]            = tagId;
            media["media_id"]           = mediaId;
            root["filter"]              = filter;
            root["mpnews"]              = media;
            root["msgtype"]             = "mpnews";
            root["send_ignore_reprint"] = reprint;

            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/sendall"),
                new Dictionary <string, string>
            {
                {
                    accessToken, accessToken
                }
            }, root.ToString());

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
            return(result.ToObject <dynamic>());
        }
Пример #24
0
        /// <summary>
        /// 通过标签群发文本消息
        /// </summary>
        /// <param name="all"></param>
        /// <param name="tagId"></param>
        /// <param name="content"></param>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public async Task <dynamic> SendTextMessageByLabelAsync(bool all, string tagId, string content,
                                                                string accessToken)
        {
            JObject root   = new JObject();
            JObject filter = new JObject();
            JObject text   = new JObject();

            filter["is_to_all"] = all;
            filter["tag_id"]    = tagId;
            text["content"]     = content;
            root["filter"]      = filter;
            root["text"]        = text;
            root["msgtype"]     = "text";

            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/sendall"),
                new Dictionary <string, string>
            {
                {
                    WeChatConstant.AccessToken, accessToken
                }
            }, root.ToString());

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
            return(result.ToObject <dynamic>());
        }
Пример #25
0
        /// <summary>
        /// 通过OpenId群发音频
        /// </summary>
        /// <param name="mediaId"></param>
        /// <param name="accessToken"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <dynamic> SendVoiceMessageByOpenIdAsync(string mediaId, string accessToken,
                                                                  params string[] user)
        {
            JObject root   = new JObject();
            JObject filter = new JObject();
            JObject voice  = new JObject {
                ["media_id"] = mediaId
            };

            root["filter"]  = filter;
            root["voice"]   = voice;
            root["msgtype"] = "voice";
            root["touser"]  = new JArray(user);
            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/send"), new Dictionary <string, string>
            {
                {
                    WeChatConstant.AccessToken, accessToken
                }
            }, root.ToString());

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
            return(result.ToObject <dynamic>());
        }
Пример #26
0
        /// <summary>
        /// 通过OpenId群发文本消息
        /// </summary>
        /// <param name="content"></param>
        /// <param name="accessToken"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <dynamic> SendTextMessageByOpenIdAsync(string content, string accessToken,
                                                                 params string[] user)
        {
            JObject root = new JObject();
            JObject text = new JObject {
                ["content"] = content
            };

            root["text"]    = text;
            root["msgtype"] = "text";
            root["touser"]  = new JArray(user);

            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/send"), new Dictionary <string, string>
            {
                {
                    WeChatConstant.AccessToken, accessToken
                }
            }, root.ToString());

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
            return(result.ToObject <dynamic>());
        }
Пример #27
0
        /// <summary>
        /// 通过标签群视频
        /// </summary>
        /// <param name="all"></param>
        /// <param name="tagId"></param>
        /// <param name="mediaId"></param>
        /// <param name="title"></param>
        /// <param name="description"></param>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public async Task <dynamic> SendVideoMessageByLabelAsync(bool all, string tagId, string mediaId,
                                                                 string title, string description, string accessToken)
        {
            JObject root   = new JObject();
            JObject filter = new JObject();
            JObject video  = new JObject
            {
                ["media_id"]    = mediaId,
                ["title"]       = title,
                ["description"] = description
            };

            filter["is_to_all"] = all;
            filter["tag_id"]    = tagId;
            root["filter"]      = filter;
            root["mpvideo"]     = video;
            root["msgtype"]     = "mpvideo";

            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/sendall"), new Dictionary <string, string>
            {
                {
                    WeChatConstant.AccessToken, accessToken
                }
            }, root.ToString());

            JObject result = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(result);
            return(result.ToObject <dynamic>());
        }
Пример #28
0
        public ActionResult MsgMe()
        {
            //notify
            var openId = CurrentUser.SnsInfos[WeChatClaimTypes.OpenId].InfoValue;

            HostingEnvironment.QueueBackgroundWorkItem(x => WeChatHelper.SendMessageAsync(openId, "this is a test message"));
            return(Content($"test message was sent to {openId}"));
        }
 public JsonActionResult <WeChatUserInfo> GetUserBasicInfoOfMiniProgram(string companyCode, string code)
 {
     return(SafeExecute(() =>
     {
         var weChatHelper = WeChatHelper.GetInstance($"{companyCode}_m");
         return weChatHelper.GetUserBasicInfoOfMiniProgram(code);
     }));
 }
 public JsonActionResult <WeChatUserInfo> GetUserBasicInfo(string companyCode, string openID)
 {
     return(SafeExecute(() =>
     {
         var weChatHelper = WeChatHelper.GetInstance(companyCode);
         return weChatHelper.GetUserBasicInfo(openID);
     }));
 }