900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 消息推送----微信小程序 公众号

消息推送----微信小程序 公众号

时间:2024-07-06 07:17:00

相关推荐

消息推送----微信小程序 公众号

##微信公众号,和微信小程序是微信的两款单独的产品,各自拥有一套openid,用来发送消息

一.微信小程序发推送消息只有在以下情况:

1.微信支付回调;

2.提交form表单的时候;

微信小程序获取openid步骤(官网api文档都有):

官网api文档地址:https://developers./miniprogram/dev/api/1.调用接口wx.login() 获取临时登录凭证(code)会返回2.请求 https://api./sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code参数说明:appid 小程序唯一标识 secret 小程序的 app secretjs_code登录时获取的 code grant_type填写为 authorization_code

微信公众号获取openid步骤(官网api文档都有):

官网api文档地址:https://mp./wiki?t=resource/res_main&id=mp14452414321.先获取公众号的accessToken(appid,secret填写微信公众号的,跟小程序不一样,切记)https请求方式: GEThttps://api./cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET2.获取用户的openid微信公众号提供获取用户列表接口(即获取所有关注该微信公众号的用户信息)请求地址https://api./cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID如果想获取整个用户列表的openid,next_openid=即可,即https://api./cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=3.获取用户基本信息 接口调用请求说明http请求方式: GEThttps://api./cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

ok,小程序的openid,公众号的openid都到手了(小满足),BUT, 要想打通小程序,公众号,光有各自的openid并没有什么用,因为两套产品,各自都只维护自己的openid,so,腾讯搞出了一套unionid机制,即腾讯旗下所有产品相对于用户来说,都存在一个唯一标识就是unionid,如何获取unionid?注册一个开发者账号,绑定公众号,小程序,即指定小程序,公众号在同一开发者下,这样在获取公众号openid,小程序openid都会返回unionid(真的是一样的,开心),这样数据库存储公众号,小程序的openid,unionid,通过反查出公众号的openid,就可以在公众号发模板消息了…(小程序触发事件,向公众号推送模板消息)

走一波,封装参数:

http请求方式: POST https://api./cgi-bin/message/template/send?access_token=ACCESS_TOKENPOST数据{"touser":"OPENID","template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY","url":"/download", "miniprogram":{"appid":"xiaochengxuappid12345","pagepath":"index?foo=bar"},"data":{"first": {"value":"恭喜你购买成功!","color":"#173177"},"keyword1":{"value":"巧克力","color":"#173177"},"keyword2": {"value":"39.8元","color":"#173177"},"keyword3": {"value":"9月22日","color":"#173177"},"remark":{"value":"欢迎再次购买!","color":"#173177"}}}这里的access_token是微信公众号的注意事项:pagepath 不能用 / 开头 (小程序的跳转页面链接)appid 使用小程序的appid

java 对象封装(个人不建议使用map封装,建议采用对象封装)

import lombok.Getter;import lombok.Setter;import java.util.Map;@Getter@Setterpublic class WechatTemplate {private String touser;private String template_id;private String url;private Map<String, TemplateData> data;private MiniprogramData miniprogram;}@Getter@Setterpublic class TemplateData {private String value;private String color;}@Setter@Getterpublic class MiniprogramData {private String appid;private String pagepath;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。