使用C# .net开发微信公众号之给用户发送模板消息


发送模板消息微信开发手册中是这样描述的:

发送模板消息

接口调用请求说明

http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

POST数据说明

POST数据示例如下:

      {
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",            
           "data":{
                   "first": {
                       "value":"恭喜你购买成功!",
                       "color":"#173177"
                   },
                   "keynote1":{
                       "value":"巧克力",
                       "color":"#173177"
                   },
                   "keynote2": {
                       "value":"39.8元",
                       "color":"#173177"
                   },
                   "keynote3": {
                       "value":"2014年9月22日",
                       "color":"#173177"
                   },
                   "remark":{
                       "value":"欢迎再次购买!",
                       "color":"#173177"
                   }
           }
       }


返回码说明

在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:

    {
           "errcode":0,
           "errmsg":"ok",
           "msgid":200228332
       }

使用效果

根据文档说明得知 我们要向这个地址

https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
Post如下数据 来发送模板:

   {
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",            
           "data":{
                   "first": {
                       "value":"恭喜你购买成功!",
                       "color":"#173177"
                   },
                   "keynote1":{
                       "value":"巧克力",
                       "color":"#173177"
                   },
                   "keynote2": {
                       "value":"39.8元",
                       "color":"#173177"
                   },
                   "keynote3": {
                       "value":"2014年9月22日",
                       "color":"#173177"
                   },
                   "remark":{
                       "value":"欢迎再次购买!",
                       "color":"#173177"
                   }
           }
       }
上面这个数据 只是一个示例,具体的内容要根据公众号后台模板详情里的内容来:


比如我们要发送如上图所示的模板内容则要把模板示例写成这样:

  {
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",            
           "data":{
                   "first": {
                       "value":"恭喜你购买成功!",
                       "color":"#173177"
                   },
                   "name":{
                       "value":"巧克力",
                       "color":"#173177"
                   },
                   "remark":{
                       "value":"欢迎再次购买!",
                       "color":"#173177"
                   }
           }
       }

POST数据说明:

touser对应的值为用户的 openid

template_id 对应的值为 公众号后台的模板ID 

大家也可以来获取模板ID 具体的方法大家可以参考我的另一篇文章:

使用C# .net开发微信公众号之获取模板ID


然后我们还需要另外一个参数就是post路径后面带的那个参数 ACCESS_TOKEN 

获取ACCESS_TOKEN的方法大家可以参考我的另一篇文章:

使用C# .net开发微信公众号之获取AccessToken


注:发送的模板必须是公众号申请过的,不然会有相应的错误码返回,在公众号后台可以看如图所示:



然后我们就可以写代码了,我把自己的代码贴出来供大家参考:


        /// <summary>
        /// 发送模板消息
        /// </summary>
        /// <param name="accessToken">AccessToken</param>
        /// <param name="data">发送的模板数据</param>
        /// <returns></returns>
        public static string SendTemplateMsg(string accessToken, string data)
        {
            string url = string.Format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}", accessToken);
            HttpWebRequest hwr = WebRequest.Create(url) as HttpWebRequest;
            hwr.Method = "POST";
            hwr.ContentType = "application/x-www-form-urlencoded";
            byte[] payload;
            payload = System.Text.Encoding.UTF8.GetBytes(data); //通过UTF-8编码
            hwr.ContentLength = payload.Length;
            Stream writer = hwr.GetRequestStream();
            writer.Write(payload, 0, payload.Length);
            writer.Close();
            var result = hwr.GetResponse() as HttpWebResponse; //此句是获得上面URl返回的数据
            string strMsg = WebResponseGet(result);
            return strMsg;
        }


获取Response:

        public static string WebResponseGet(HttpWebResponse webResponse)
        {
            StreamReader responseReader = null;
            string responseData = "";
            try
            {
                responseReader = new StreamReader(webResponse.GetResponseStream());
                responseData = responseReader.ReadToEnd();
            }
            catch
            {
                throw;
            }
            finally
            {
                webResponse.GetResponseStream().Close();
                responseReader.Close();
                responseReader = null;
            }
            return responseData;
        }



返回码说明

在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:

    {
           "errcode":0,
           "errmsg":"ok",
           "msgid":200228332
       }

错误的话会返回相应的错误码,大家可以去手册里查 微信的 全局返回码说明

此方式或许有不妥之处,热烈欢迎大家吐槽。。。 错误之处也请大家指正,谢谢  -----    WeepingWeeper


谢谢大家观看参考,让我们一同进步。


微信的其他接口调用在持续更新中。。。欢迎关注持续关注。。



                
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值