欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【最新】微信小程序发送订阅消息(c#版)

程序员文章站 2024-03-13 13:05:45
...

说明

最近需要做一个微信小程序中的发送订阅消息功能,网上看了些资料,说明不是很详细,这里详细记录下,前面的申请模板就不说了,网上资料很多,也很详细,主要说明下代码

小程序端

调用下接口,需要用户允许才能发送

wx.requestSubscribeMessage({
  //模板ID
  tmplIds: ['JTh0eBJScPIcEVjb9dhQDVN9xZXFvyZ3WXWgrljnUP8'],
  success (res) {
    console.log(res);
  }
})

服务器端

//发送订阅消息
public ResponseModel SendSubscribe(string openid, string repairid)
{
    //demo格式
    //"{
    //    "touser": \"OPENID\",
    //    "template_id": "TEMPLATE_ID",
    //    "page": "index",
    //    "miniprogram_state":"developer",
    //    "lang":"zh_CN",
    //    "data": {
    //        "number01": {
    //            "value": "339208499"
    //                            },
    //        "date01": {
    //            "value": "2015年01月05日"
    //                    },
    //        "site01": {
    //            "value": "TIT创意园"
    //                } ,
    //        "site02": {
    //            "value": "广州市新港中路397号"
    //                }
    //    }
    //}"

    //组装json格式的请求参数
    string content = "维修水龙头";
    string finishtime = DateTime.Now.ToLocalTime().ToString();
    string tips = "超过7日未验收,系统将自动验收";
    var param = new
    {
        touser = openid,
        template_id = DormConfig.WARN_ACCEPT,
        data = new
        {
            //参数名要按照小程序后台模板中详细内容的参数写
            character_string1 = new { value= repairid },
            thing2 = new { value = content },
            time3 = new { value = finishtime },
            thing4 = new { value = tips }
        }
    };
    string _params = JsonTools.Instance.ToJson(param);

    string token = Home_BLL.Instance.GetAccessToken();
    string res=RequestWXAPI.Instance.SendSubscribe(token, _params);
    if (res != "OK") return new ResponseModel() { Code = 101, Msg = res };
    return new ResponseModel() { Code = 200, Msg = "success" };
}

SendSubscribe方法就是调用微信接口:
https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
然后post参数,比较简单,这里就不贴了

【最新】微信小程序发送订阅消息(c#版)

注意

先贴下遇到的返回信息的几种情况

  • {“errcode”:43101,“errmsg”:“user refuse to accept the msg hint: [e5WcGA07873114]”}
    用户拒绝接受消息,如果用户之前曾经订阅过,则表示用户取消了订阅关系,如果只订阅1次,第二次发送也会有这个错误
  • {“errcode”:47003,“errmsg”:“argument invalid! hint: [26.orA01123945] data.character_string1.value i”}
    模板参数不准确,可能为空或者不满足规则,errmsg会提示具体是哪个字段出错 参数名按照小程序后台模板里的写
  • {“errcode”:0,“errmsg”:“ok”}
    成功

第二种47003错误,是因为post的参数名和模板中的不同,这点网上有很多案例是写的thing01这种格式,注意这个参数名是不可以自己修改定义的,需严格按照模板中的来,在模板中以下位置
【最新】微信小程序发送订阅消息(c#版)
进入“详情”,按照详细内容中的名称填写
【最新】微信小程序发送订阅消息(c#版)

相关标签: 微信小程序