一日一技:微信开发-发送模板消息

  • A+
所属分类:.NET技术
摘要

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。


概述

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。

建立模板的方式具体见

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html

下面来说说具体的代码实现。

文档定义

接口调用请求说明

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",              "miniprogram":{              "appid":"xiaochengxuappid12345",              "pagepath":"index?foo=bar"            },                      "data":{                    "first": {                        "value":"恭喜你购买成功!",                        "color":"#173177"                    },                    "keyword1":{                        "value":"巧克力",                        "color":"#173177"                    },                    "keyword2": {                        "value":"39.8元",                        "color":"#173177"                    },                    "keyword3": {                        "value":"2014年9月22日",                        "color":"#173177"                    },                    "remark":{                        "value":"欢迎再次购买!",                        "color":"#173177"                    }            }        }

实现方式

1、定义组织模板数据

 Template_Id = TemplateIditem.TemplateId.FirstOrDefault(o => o.type == "Disconnected").value;                 var Data = new                 {                     first = new TemplateDataItem() { value = "您已解除连接!" },                     keyword1 = new TemplateDataItem() { value = userMgmtExtra.EMail },                     keyword2 = new TemplateDataItem() { value = DateTime.Now.ToString("yyyy年MM月dd日") },                     remark = new TemplateDataItem() { value = "您已解除微信绑定,若要持续接收xxxxxx系统信息,请至xxxx账户重新绑定,感谢您的使用" }                 };                  TemplateData = JsonConvert.SerializeObject(Data);

 

if (item.OpenId != null && Template_Id != null && TemplateData != null)             {                 return new TemplateSendParam()                 {                     OpenId = item.OpenId,                     Template_Id = Template_Id,                     TemplateData = TemplateData                 };             }

2、post请求微信api

 private static Tuple<TemplateSendInfo, string, string> TemplateSend(string AppId, string Appsecret, string OPENID, string template_id, string TemplateData, bool isResh)         {             string jsonstr = "{"touser":"" + OPENID + "","template_id":"" + template_id + "", "data":" + TemplateData + " }";             var accessToken = TryGetAccessToken(AppId, Appsecret, isResh);             string url = APIConfig.Templatesend(accessToken);             string str = APIConfig.CreatePostHttpResponse(url, jsonstr);             _logger.Debug("发送模板消息rn" + "输入:" + url + "rn" + jsonstr + "rn输出:" + str);             return new Tuple<TemplateSendInfo, string, string>(JsonConvert.DeserializeObject<TemplateSendInfo>(str), url, jsonstr);         }

效果

 一日一技:微信开发-发送模板消息