微信模板消息推送
2016-01-27 17:48
736 查看
开发文档说明:http://mp.weixin.qq.com/wiki/17/304c1885ea66dbedf7dc170d84999a9d.html#.E8.8E.B7.E5.BE.97.E6.A8.A1.E6.9D.BFID
请求方法:
返回值:
POST数据:
这是传给微信服务器的数据。
写法:
这里生成一个TempleteValue对象
TempleteValue t1 = new TempleteValue("name","#000");
这样data中的first已经生成好了,赋值给OrderConfirm
OrderConfirm oc = new OrderConfirm();
oc.first = t1;
一次赋值到remark,然后把BaseTemplete序列化就OK了。
具体:
SendModelMessageInterface方法:
请求方法:
http请求方式: POST https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN
返回值:
{ "errcode":0, "errmsg":"ok", "template_id":"Aojud5uP7Aciu-qZ2sIUPtWkbkYnWBWVja22DeDISyk" }
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" } } }
这是传给微信服务器的数据。
写法:
[DataContract] public class BaseTemplete { [DataMember(Order = 0, IsRequired = true)] public string touser { get; set; } //接收方的openid [DataMember(Order = 1, IsRequired = true)] public string template_id { get; set; } //模板ID [DataMember(Order = 2, IsRequired = true)] public string url { get; set; } //点击模板进入的页面地址</span> [DataMember(Order = 3, IsRequired = true)] public OrderConfirm data { get; set; } //data数据 }
[DataContract] public class OrderConfirm { [DataMember(Order = 0)] public TempleteValue first { get; set; } [DataMember(Order = 1)]//订单编号:{{keyword1.DATA}} public TempleteValue keyword1 { get; set; } [DataMember(Order = 2)]//下单时间:{{keyword2.DATA}} public TempleteValue keyword2 { get; set; } [DataMember(Order = 3)]//订单详情:{{keyword3.DATA}} public TempleteValue keyword3 { get; set; } [DataMember(Order = 4)]//订单金额:{{keyword4.DATA}} public TempleteValue keyword4 { get; set; } [DataMember(Order = 5)]//备注 public TempleteValue remark { get; set; } }可以看到在data中的数据,除了内容和名字不一样,value和color都是不变的,可以把他们单独写成一个类
[DataContract] public class TempleteValue { [DataMember(Order = 0, IsRequired = true)] public string value { get; set; } //对应的值 [DataMember(Order = 1)] public string color { get; set; } //对应文字的颜色 //重写构造函数 public TempleteValue(string value,string color) { this.value = value; this.color = color; } }
这里生成一个TempleteValue对象
TempleteValue t1 = new TempleteValue("name","#000");
这样data中的first已经生成好了,赋值给OrderConfirm
OrderConfirm oc = new OrderConfirm();
oc.first = t1;
一次赋值到remark,然后把BaseTemplete序列化就OK了。
具体:
OrderConfirmTemplete orderConfirmTemplete = new OrderConfirmTemplete(); orderConfirmTemplete.touser = ds.Tables[0].Rows[0]["WECHAT_OPEN_ID"].ToString();//用户openid orderConfirmTemplete.template_id = ConfigurationManager.AppSettings["confirmid"].ToString();//模板id orderConfirmTemplete.url = ""//链接地址,可不写 OrderConfirm oc = new OrderConfirm(); TempleteValue tv1 = new TempleteValue("尊敬的用户您好。您有一个订单待确认!", "#000"); oc.first = tv1; TempleteValue tv2 = new TempleteValue("1", "#000"); oc.keyword1 = tv2; TempleteValue tv3 = new TempleteValue("2", "#173177"); oc.keyword2 = tv3; TempleteValue tv4 = new TempleteValue("3", "#173177"); oc.keyword3 = tv4; TempleteValue tv5 = new TempleteValue("5", "#173177"); oc.keyword4 = tv5; TempleteValue tv6 = new TempleteValue("点击查看详细信息", "#00f"); oc.remark = tv6; orderConfirmTemplete.data = oc; string postdata = WXJSONHelper.GetJson<OrderConfirmTemplete>(orderConfirmTemplete); //序列化方法,不会则看我上一篇博客 //调用发送模板消息的方法 SendModelMessageInterface(postdata, "11111");
SendModelMessageInterface方法:
public string SendModelMessageInterface(string postData, string accountcode) { string access_Token = new GetAccessToken().GetNewAccess_token(accountcode); //内部自己写获取token的方法 string url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_Token; //微信token, return DealPost(url,postData); //POST数据到微信服务器 }DealPost:
public string DealPost(string posturl, string postdata) { string responseString = "";//post返回的结果 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(posturl); req.Method = "POST"; req.Headers["Cookie"] = "usersession=67d2da2c9f17e5e189fb1bf334fc6e36"; byte[] postBytes = Encoding.UTF8.GetBytes(postdata); req.ContentType = "application/json; charset=utf-8"; req.ContentLength = Encoding.UTF8.GetByteCount(postdata);//strJson为json字符串 Stream stream = req.GetRequestStream(); stream.Write(postBytes, 0, postBytes.Length); req.Timeout = 90000; stream.Close(); var response = req.GetResponse(); Stream streamResponse = response.GetResponseStream(); StreamReader streamRead = new StreamReader(streamResponse); responseString = streamRead.ReadToEnd(); response.Close(); streamRead.Close(); return responseString; }
相关文章推荐
- Android仿微信照片选择器实现预览查看图片
- 基于新浪SAE平台的微信开发
- 微信模糊照片破解
- 微信SDK导入报错 Undefined symbols for architecture i386:"operator delete[](void*)", referenced from:
- zabbix微信告警实践
- 微信开发调试各项都正常,提示该公众号无法提供服务
- 微信公众平台--6.JS-SDK 微信内网页开发工具包
- 模仿微信朋友圈 仿微信js-sdk wx.previewImage javascript实现,支持图片预览,滑动切换,双指缩放,图片缓存 h5 html5 js
- iOS下微信语音播放之切换听筒和扬声器的方法解决方案
- c#微信扫码支付,完整版。包括回调
- 微信公众平台--5.其他
- 微信公众号支付和移动支付
- 微信公众平台--4.接收事件推送消息
- 支付宝和微信
- 微信付款
- 微信公众平台--3.普通消息交互(发送与接收)
- 微信公众平台--2.获取接口调用凭据
- 微信公众平台--1.开发者接入
- 微信分享
- 手把手教你免费看IOS微信红包照片