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


    概述

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

    建立模板的方式具体见

    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("发送模板消息
    " + "输入:" + url + "
    " + jsonstr + "
    输出:" + str);
                return new Tuple<TemplateSendInfo, string, string>(JsonConvert.DeserializeObject<TemplateSendInfo>(str), url, jsonstr);
            }

    效果

     

  • 相关阅读:
    java访问修饰符
    java中的String
    int与Integer的爱恨情仇
    vs中动态DLL与静态LIB工程中加入版本信息的方法
    从页面中取出email地址和相对链接及绝对链接的代码...
    Web文件的ContentType类型大全
    将web站点下的绝对路径转换为虚拟路径_asp.net技巧
    在ASP.NET中重写URL 方法三:在IIS7中使用HttpModule 实现无扩展名的URL重写
    CSS中常用的选择器及三大特性
    JS“轮播图”
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/14462997.html
Copyright © 2020-2023  润新知