版权声明:本文为博主原创文章,未经博主允许不得转载。转载请标明文章出处和原文链接。欢迎加QQ群交流:191695206 https://blog.csdn.net/wangzl1163/article/details/83350076
一、前言
用户在小程序进行了一个操作,操作结果不是立马返回的可能需要隔一段时间才能有处理结果,那么这时候需要让用户知道操作的结果,应该怎么办呢?总的来说有两种解决方案。一种是通过小程序模板消息,推送服务通知。这种方式只能支持用户提交表单或者进行了支付这两种场景,支持的场景过少是这种方式的缺点。一种是通过公众号(服务号)来推送消息。这种方式相比第一种方式要好的多,没有场景限制,能够满足所有需要通知的场景。
在上面说到的需求基础上如果A用户在小程序进行了操作需要通知B用户,只要B用户关注了公众号(服务号),那么推送消息进行通知就是可以实现的。
二、实现方案
由于第一种方案的场景限制以及实现比较方便,参考官方文档即可,在这里不再描述。
第二种方式实现思路:
将微信公众号和小程序关联绑定,开发者数据库记录每个用户的unionID以及在公众号和小程序账号下不同的openID,公众号必须是服务号类型,订阅号类型不支持开发者单独给某个微信用户主动发送模版消息。小程序的A用户触发某个操作,公众号去提醒B用户,开发者服务器端调用sendUniformMessage接口给服务号下的某个绑定用户发送模版消息。
三、具体步骤
a、公众号(服务号)进行认证。
b、公众号关联小程序。具体关联步骤,网上很多,搜一下即可。
c、服务器端调用sendUniformMessage接口,实现推送。
代码如下:
sendUniformMessage接口请求地址:
POST https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN
注:access_token——小程序接口调用凭证
请求数据示例:
{
"touser":"ojzW05MCMmYnD3xZZ-0kFa-SK6if", // 接收推送的用户的openid
"mp_template_msg":{ // 有此节点发送公众号模板消息
"appid":"wxae29545104ff81fb", // 公众号appid
"template_id":"gEb1-jKjtvSrIFNGCadGdFHf5_DmJxZ_iLT7j-ZOAYU", // 模板id
"url":"#", // 公众号模板消息所要跳转的url
"miniprogram":{
"appid":"wxd5672a9b86a06fb9", // 小程序appid
"pagepath":"" // 小程序页面路由(路径)
},
"data":{ // 消息模板中的数据(推送消息要展示的内容)
"first":{
"value":"恭喜你购买成功!",
"color":"#173177"
},
"keyword1":{
"value":"巧克力",
"color":"#173177"
},
"keyword2":{
"value":"39.8元",
"color":"#173177"
},
"remark":{
"value":"欢迎再次购买!",
"color":"#173177"
}
}
}
}
返回数据:
{
"errcode": 0,
"errmsg": "ok"
}
注:此结果表示推送消息成功。