[微信小程序]向指定用户推送模版消息(c#代码)亲测可用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
调用:SubscribeMessageToUser("用户openid字符串");<br>官方比较坑:限制必须点击授权按钮的时候才能执行否则就会提示:<br>{"errcode":43101,"errmsg":"user refuse to accept the msg rid: 5f66d001-785045b2-5443a9f9"}<br>翻译解释为:用户拒绝接收信息<br>小程序向指定用户推送模版消息(c#代码)
     [HttpPost]
        public JsonResult SubscribeMessageToUser(string openid, string title=null, string content=null)
        {
            AjaxResult res = new AjaxResult();
            res.state = false;
            try
            {
                AccessTokenModel AccessTokenModel = xcx_Get_Token();//获取access_token
                string _url = string.Format("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={0}", AccessTokenModel.access_token);
                //json参数
                string jsonParam = Newtonsoft.Json.JsonConvert.SerializeObject(new
                {
                    touser = openid,//用戶openid
                    template_id = "模版ID",    // 模版template_id
                    page = "pages/index/index",
                    //miniprogram_state = "developer",
                    lang = "zh_CN",
                    data = new
                    {
                        thing1 = new { value = "签到提醒" },
                        time5 = new { value = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") },
                        thing2 = new { value =  "点击签到" }
                    }
                });
                var request = (HttpWebRequest)WebRequest.Create(_url);
                request.Method = "POST";
                request.ContentType = "application/json;charset=UTF-8";
                byte[] byteData = Encoding.UTF8.GetBytes(jsonParam);
                int length = byteData.Length;
                request.ContentLength = length;
                Stream writer = request.GetRequestStream();
                writer.Write(byteData, 0, length);
                writer.Close();
                var response = (HttpWebResponse)request.GetResponse();
                var responseString = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();
 
 
                JavaScriptSerializer js = new JavaScriptSerializer();   //实例化一个能够序列化数据的类
                AccessTokenModel_Err ErrInfo = js.Deserialize<AccessTokenModel_Err>(responseString);
 
 
                //AccessTokenModel_Err ErrInfo = (AccessTokenModel_Err)JsonConvert.DeserializeObject(responseString);
                res.message = ErrInfo.errmsg;
                if(ErrInfo.errcode==0)
                    res.state = true;
                //return responseString.ToString();
            }
            catch (Exception ex)
            {
                res.state = false;
                res.message = ex.Message;
            }
            return Json(res, JsonRequestBehavior.AllowGet);
        }

  

posted @   大da脸  阅读(2256)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示