.NET WebApi后端开发框架-微信小程序消息订阅与推送案例详解


微信小程序消息订阅与推送消息流程:

开发步骤:
步骤一:
获取模板 ID,在微信公众平台手动配置获取模板 ID:登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
步骤二:
微信小程序通过手机号登录,判断当前手机号是否存在OpenId,若为空,调用微信服务器第一次注册并返回OpenID,在商户服务器保存手机号对应的OpenID。如下图:

步骤三:
订阅消息,小程序端若要接受信息,必须先订阅,而且每次只能订阅一次消息,然而系统需要频繁推送消息的,为了解决这个问题,必须在微信小程序某个节点触发下一次订阅,形成一个无限订阅消息的循环,比如打开某个界面,触发某个事件开始订阅。
微信服务器会判断只有订阅消息的客户端才能定向推送消息。
C# Code:
//消息模板内容
ModelWXSubscribeMessageTemplate data = new ModelWXSubscribeMessageTemplate
{
thing1 = new ModelWXSubscribeMessageParam { value = "【" + goods.CityFromName + "】-->【" + goods.CityToName + "】" },
thing2 = new ModelWXSubscribeMessageParam { value = goods.GoodsName + " " + goods.WV + " " + goods.Unit }
};
//调用微信后台,订阅消息接口的请求参数
ModelWXSubscribeMessage subscribe = new ModelWXSubscribeMessage
{
access_token = re.access_token,
data = data,
page = pageParam,
template_id = "nYSABmQjT2Dr1UyLXq5pUYSfPLob4Ejtig7ZtkxOkoo",
touser = goods.WXOpenId//openid
};
string dataMsg = JsonConvertEx.ToJson(subscribe);//转成JSON
//提交微信后台,URL
string posturl = $"https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={re.access_token}";
string result = WebApiTools.Post(posturl, dataMsg);
//转换对象
ModelWXPostResult postResult = JsonConvertEx.ToObject<ModelWXPostResult>(result);
if (postResult.errcode != 0) LogManager.Log.Write("PushWxMessage", "发布货源推送微信订阅消息失败!", goods.GoodsID);
//来源:C/S框架网(www.csframework.com) QQ:23404761
//消息模板内容
ModelWXSubscribeMessageTemplate data = new ModelWXSubscribeMessageTemplate
{
thing1 = new ModelWXSubscribeMessageParam { value = "【" + goods.CityFromName + "】-->【" + goods.CityToName + "】" },
thing2 = new ModelWXSubscribeMessageParam { value = goods.GoodsName + " " + goods.WV + " " + goods.Unit }
};
//调用微信后台,订阅消息接口的请求参数
ModelWXSubscribeMessage subscribe = new ModelWXSubscribeMessage
{
access_token = re.access_token,
data = data,
page = pageParam,
template_id = "nYSABmQjT2Dr1UyLXq5pUYSfPLob4Ejtig7ZtkxOkoo",
touser = goods.WXOpenId//openid
};
string dataMsg = JsonConvertEx.ToJson(subscribe);//转成JSON
//提交微信后台,URL
string posturl = $"https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={re.access_token}";
string result = WebApiTools.Post(posturl, dataMsg);
//转换对象
ModelWXPostResult postResult = JsonConvertEx.ToObject<ModelWXPostResult>(result);
if (postResult.errcode != 0) LogManager.Log.Write("PushWxMessage", "发布货源推送微信订阅消息失败!", goods.GoodsID);
//来源:C/S框架网(www.csframework.com) QQ:23404761
若OpenID没有订阅消息,会报43101错误。

步骤四:
商户WebApi服务器推送消息,可以推送指定消息模板以及指定用户的消息(定点推送)
微信小程序接受到消息:

本文参考文章:
WebApi后端框架开发微信小程序订阅消息接口
http://www.csframework.com/archive/1/arc-1-20191228-2681.htm
适用开发:快速构建支持多种客户端的服务端程序,支持APP、B/S、C/S跨平台移动终端等。
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015+,C#语言
数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)
http://www.csframework.com/archive/1/arc-1-20191228-2681.htm
.NET WebApi开发框架|MVC框架|后端框架|服务端框架-标准版V1.0




扫一扫加微信:



版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网