コード例 #1
0
        public static string SendTemplateMessage <T>(string accessToken, string openId, string topcolor, string url, T data) where T : TemplateMessageModel
        {
            string urlFormat = string.Format(WeChatConsts.WECHAT_SEND_MSG, accessToken);
            var    msgData   = new TempleteModel()
            {
                touser      = openId,
                template_id = data.TemplateId,
                topcolor    = topcolor,
                url         = url,
                data        = data
            };

            return(NetUtil.WechatSendPostRequest(urlFormat, JsonUtil.Serialize(msgData)));
        }
コード例 #2
0
        /// <summary>
        /// 获取登录Token
        /// </summary>
        /// <param name="tryNum"></param>
        /// <returns></returns>
        private static string GetDxSmsAccessToken(int tryNum)
        {
            string key = "smstoken";

            if (_dXSmsToken.ContainsKey(key))
            {
                var kv = _dXSmsToken[key];
                if (kv.Item2 > DateTime.Now)
                {
                    return(kv.Item1);
                }
            }
            Dictionary <string, string> paras = new Dictionary <string, string>();

            paras.Add("grant_type", "client_credentials");
            paras.Add("app_id", ConfigUtil.SmsAppId_dx);
            paras.Add("app_secret", ConfigUtil.SmsAppSecret_dx);
            try
            {
                string res = NetUtil.SendPostRequest(GetDxSmsTokenApi, paras);
                Dictionary <string, string> resDic = JsonUtil.Deserialize <Dictionary <string, string> >(res);
                if (resDic.ContainsKey("access_token"))
                {
                    _dXSmsToken.Clear();
                    _dXSmsToken.Add(key, new Tuple <string, DateTime>(resDic["access_token"], DateTime.Now.AddSeconds(ConvertUtil.ToInt(resDic["expires_in"], 0))));
                    return(resDic["access_token"]);
                }
                else
                {
                    LogUtil.Debug(resDic["res_message"]);
                    return(string.Empty);
                }
            }
            catch (Exception ex)
            {
                LogUtil.Error(ex.ToString());
                System.Threading.Thread.Sleep(200);
                if (tryNum < 3)
                {
                    return(GetDxSmsAccessToken(++tryNum));
                }
                else
                {
                    return(string.Empty);
                }
            }
        }