/// <summary>
        /// 发送模板消息
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public Error SendTemplate(string accessToken, TemplateSendRequest model)
        {
            try
            {
                if (string.IsNullOrEmpty(accessToken))
                {
                    throw new ArgumentNullException("AccessToken为空");
                }
                if (model == null)
                {
                    throw new ArgumentNullException("消息参数为空");
                }
                if (string.IsNullOrEmpty(model.ToUser))
                {
                    throw new ArgumentNullException("OpenId为空");
                }
                if (string.IsNullOrEmpty(model.TemplateId))
                {
                    throw new ArgumentNullException("TemplateId为空");
                }
                if (string.IsNullOrEmpty(model.FormId))
                {
                    throw new ArgumentNullException("FormId为空");
                }
                if (string.IsNullOrEmpty(model.FormId))
                {
                    throw new ArgumentNullException("Data为空");
                }

                IRestRequest request = new RestRequest("cgi-bin/message/wxopen/template/send", Method.POST);
                request.AddQueryParameter("access_token", accessToken);
                request.AddJsonBody(new
                {
                    touser           = model.ToUser,
                    template_id      = model.TemplateId,
                    page             = model.Page,
                    form_id          = model.FormId,
                    data             = model.Data,
                    emphasis_keyword = model.EmphasisKeyword
                });

                IRestResponse response = _client.Execute(request);
                return(JsonConvert.DeserializeObject <Error>(response.Content));
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                throw ex;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 发送模板消息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public OperationResult SendTemplate(RequestOperation <TemplateData> request)
        {
            var result = new OperationResult();

            if (String.IsNullOrEmpty(request.Body.openid) ||
                String.IsNullOrEmpty(request.Body.templateid) ||
                String.IsNullOrEmpty(request.Body.url) ||
                request.Body.propertys == null)
            {
                result.Message = "缺少参数";
                return(result);
            }

            var tempData = new Dictionary <string, TemplateDataProperty>();

            foreach (var prop in request.Body.propertys)
            {
                tempData.Add(prop.key, new TemplateDataProperty()
                {
                    Color = prop.color,
                    Value = prop.value
                });
            }
            var tempRequest = new TemplateSendRequest
            {
                ToUser      = request.Body.openid,
                TemplateID  = request.Body.templateid,
                Url         = request.Body.url,
                TopColor    = request.Body.topcolor,
                Data        = tempData,
                AccessToken = ApiAccessTokenManager.Instance.GetCurrentToken()
            };

            var response = m_client.Execute(tempRequest);

            if (!response.IsError)
            {
                result.ErrCode = 0;
            }
            else
            {
                result.Message = response.ErrorMessage;
            }
            return(result);
        }
Esempio n. 3
0
        public ResponseResult <object> SendTemplate([FromBody] TemplateSendRequest model)
        {
            try
            {
                string accessTokenStr = _redisHandler.GetAccessToken();
                if (string.IsNullOrEmpty(accessTokenStr))
                {
                    accessTokenStr = _weChatServiceHandler.GetAccessToken().access_token;
                    _redisHandler.SaveAccessToken(accessTokenStr);
                }

                Error error = _weChatServiceHandler.SendTemplate(accessTokenStr, model);
                if (error.errcode == 0)
                {
                    return(new ResponseResult <object>()
                    {
                        ErrCode = 0,
                        ErrMsg = "success",
                        Data = null
                    });
                }
                else
                {
                    logger.Error(error.errmsg);
                    return(new ResponseResult <object>()
                    {
                        ErrCode = 1001,
                        ErrMsg = error.errmsg,
                        Data = null
                    });
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return(new ResponseResult <object>()
                {
                    ErrCode = 1003,
                    ErrMsg = ex.Message,
                    Data = null
                });
            }
        }