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

来源:互联网 发布:河北 知乎 编辑:程序博客网 时间:2024/04/29 23:02

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

发送模板消息

接口调用请求说明

http请求方式: POSThttps://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


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


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


                                             
0 0
原创粉丝点击