汕头网站优化公司沈阳电商网站建设
news/
2025/9/22 21:16:07/
文章来源:
汕头网站优化公司,沈阳电商网站建设,自己做的网站如何盈利,带产品展示的个人网站模板本章主要讲解微信公众号自定义菜单、微信网页开发、模板消息推送等功能的实现#xff1b;发福利了#xff0c;下方关注公众号#xff0c;就能免费获取项目源码1、自定义菜单开发前需要了解以下几点#xff1a;1、微信公众号的自定义菜单最多包括3个一级菜单#xff0c;每个… 本章主要讲解微信公众号自定义菜单、微信网页开发、模板消息推送等功能的实现发福利了下方关注公众号就能免费获取项目源码1、自定义菜单开发前需要了解以下几点1、微信公众号的自定义菜单最多包括3个一级菜单每个一级菜单最多包含5个二级菜单。2、一级菜单最多4个汉字二级菜单最多7个汉字多出来的部分将会以“...”代替。3、自定义菜单接口可实现多种类型按钮本教程主要实现以下两个按钮更多按钮参照官方文档click点击推事件按钮view跳转URL按钮创建自定义菜单接口调用请求说明http请求方式POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_tokenACCESS_TOKENclick和view的请求示例如下所示{button:[ { type:click,name:今日歌曲,key:V1001_TODAY_MUSIC }, {name:菜单,sub_button:[ { type:view,name:搜索,url:http://www.soso.com/ }, {type:miniprogram,name:wxa,url:http://mp.weixin.qq.com,appid:wx286b93c14bbf93aa,pagepath:pages/lunar/index }, {type:click,name:赞一下我们,key:V1001_GOOD }] }] }下面我们基于mp框架创建公众号菜单需要项目源码的请下方关注公众号获取现在我们要实现如图所示的菜单我们应该如何去实现我们只用调用WxMpService的getMenuService()方法获取WxMpMenuService该类下封装了菜单的查询、删除、创建等方法调用menuCreate方法可以创建自定义菜单方法如下WxMenu menu new WxMenu();WxMenuButton button1 new WxMenuButton();button1.setType(WxConsts.MenuButtonType.CLICK);button1.setName(今日热点);button1.setKey(V1001_TODAY_MUSIC);WxMenuButton button2 new WxMenuButton();button2.setType(WxConsts.MenuButtonType.CLICK);button2.setName(发布信息);button2.setKey(V1001_TODAY_MUSIC);WxMenuButton button3 new WxMenuButton();button3.setName(用户中心);menu.getButtons().add(button1);menu.getButtons().add(button2);menu.getButtons().add(button3);WxMenuButton button31 new WxMenuButton();button31.setType(WxConsts.MenuButtonType.VIEW);button31.setName(搜索);button31.setUrl(http://www.soso.com/);WxMenuButton button32 new WxMenuButton();button32.setType(WxConsts.MenuButtonType.VIEW);button32.setName(视频);button32.setUrl(http://v.qq.com/);WxMenuButton button33 new WxMenuButton();button33.setType(WxConsts.MenuButtonType.CLICK);button33.setName(个人信息);button33.setKey(V1001_GOOD);WxMenuButton button34 new WxMenuButton();button34.setType(WxConsts.MenuButtonType.VIEW);button34.setName(获取用户信息);ServletRequestAttributes servletRequestAttributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if (servletRequestAttributes ! null) { HttpServletRequest request servletRequestAttributes.getRequest(); URL requestURL new URL(request.getRequestURL().toString()); String url this.wxService.switchoverTo(appid).getOAuth2Service().buildAuthorizationUrl( String.format(%s://%s/wx/redirect/%s/greet, requestURL.getProtocol(), requestURL.getHost(), appid), WxConsts.OAuth2Scope.SNSAPI_USERINFO, null); button34.setUrl(url);}button3.getSubButtons().add(button31);button3.getSubButtons().add(button32);button3.getSubButtons().add(button33);button3.getSubButtons().add(button34);this.wxService.switchover(appid);return this.wxService.getMenuService().menuCreate(menu);2、微信网页开发我们现在要实现这么一个功能用户点击菜单进入到我们自己开发的H5页面同时要获取用户的信息应该如何去实现下面我看一个官方文档如果用户在微信客户端中访问第三方网页公众号可以通过微信网页授权机制来获取用户基本信息进而实现业务逻辑。步骤如下1 第一步用户同意授权获取code2 第二步通过code换取网页授权access_token3 第三步刷新access_token(如果需要)4 第四步拉取用户信息(需scope为 snsapi_userinfo)5 附检验授权凭证(access_token)是否有效2.1、获取code应用授权作用域有两种方式snsapi_base (不弹出授权页面直接跳转只能获取用户openid)snsapi_userinfo (弹出授权页面可通过openid拿到昵称、性别、所在地。并且 即使在未关注的情况下只要用户授权也能获取其信息 )我们只需要按照字段顺序组装如下url地址redirect_uri为你自己服务端的回调地址scope可以选择snsapi_base或者snsapi_userinforesponse_type固定填写codestate重定向后会带上state参数开发者可以填写a-zA-Z0-9的参数值#wechat_redirect 无论直接打开还是做页面302重定向时候必须带此参数https://open.weixin.qq.com/connect/oauth2/authorize?appidwx520c15f417810387redirect_urihttps%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60response_typecodescopesnsapi_basestate123#wechat_redirect我们在微信端访问该地址会通过回调地址把code带过来后端代码实现如下所示:HttpServletRequest request servletRequestAttributes.getRequest();URL requestURL new URL(request.getRequestURL().toString());String url this.wxService.switchoverTo(appid).getOAuth2Service().buildAuthorizationUrl( String.format(%s://%s/wx/redirect/%s/greet, requestURL.getProtocol(), requestURL.getHost(), appid), WxConsts.OAuth2Scope.SNSAPI_USERINFO, null);2.2、通过code换取网页授权access_token请求方法:https://api.weixin.qq.com/sns/oauth2/access_token?appidAPPIDsecretSECRETcodeCODEgrant_typeauthorization_code后端代码实现比较简单通过以下方法就能获取到用户信息WxMpOAuth2AccessToken accessToken wxService.getOAuth2Service().getAccessToken(code);WxMpUser user wxService.getOAuth2Service().getUserInfo(accessToken, null);2.3、刷新access_token由于access_token拥有较短的有效期当access_token超时后可以使用refresh_token进行刷新refresh_token有效期为30天当refresh_token失效之后需要用户重新授权。获取第二步的refresh_token后请求以下链接获取access_tokenhttps://api.weixin.qq.com/sns/oauth2/refresh_token?appidAPPIDgrant_typerefresh_tokenrefresh_tokenREFRESH_TOKEN我们只用调用wxService.getOAuth2Service().refreshAccessToken(refresh_token)方法就可以实现刷新token是不是非常的简单。2.4、拉取用户信息如果网页授权作用域为snsapi_userinfo则可以通过access_token和openid获取用户信息。httpGET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_tokenACCESS_TOKENopenidOPENIDlangzh_CN同样后端方法也非常简单只用调用wxService.getOAuth2Service().getUserInfo();即可。3、模板消息推送我们需要实现一个功能公众号平台需要给用户主动推送消息例如支付的通知、通知、公告等如下图所示我需要给用户推送如下信息该如何实现首先我们进入到公众平台创建模板消息点击新增测试模板进入模板添加页面后需要填写模板标题和内容标题就是上图所示的重要通知而模板内容我们想写成动态如何实现我们只用按{{first.DATA}}这样的格式就可以通过后端传入我们需要的内容我们模板方法中有两个动态参数分别是{{first.DATA}}和{{remark.DATA}}后端代码实现如下GetMapping(/send)public void testSendTemplateMsg() throws WxErrorException { SimpleDateFormat dateFormat new SimpleDateFormat(yyyy-MM-dd HH:mm:ss.SSS); WxMpTemplateMessage templateMessage WxMpTemplateMessage.builder() .toUser(oiAsTwtKx4qzbwuRozjSO7NvXD_A) .templateId(-sJvjdzIpKyH4MTi-c0A5HAfrxgWCyvmrHhcQB1fk-Q) .url( ) .build(); templateMessage.addData(new WxMpTemplateData(first, dateFormat.format(new Date()), #FF00FF)) .addData(new WxMpTemplateData(remark, 公众号上线啦, #FF00FF)); String msgId this.wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);}其中.toUser为发送给哪个用户参数为openId如何获取openId就需要通过上面的网页授权获取了.templateId()为模板id我们在传教了模板之后会有一个id把该id填入到该参数里面first模板中的{{first.DATA}}参数同理remark为模板中的{{remark.DATA}}参数可以把{{XX.DATA}}理解为占位符调用以上方法就会把内容通知到用户的公众号。本章内容就讲解到这微信公众号更多的个性化开发查看官方文档以及开源框架文档下一期带大家学习如何通过mq实现消息的阶梯式通知。4、学习交流QQ群【883210148】5、关注微信公众号免费获取文档及资源
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910398.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!