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

说明

小程序端

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

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" };
}

注意

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

    {“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这种格式,注意这个参数名是不可以自己修改定义的,需严格按照模板中的来,在模板中以下位置 进入“详情”,按照详细内容中的名称填写

经验分享 程序员 微信小程序 职场和发展