大家好,wechattyproject是一个基于JAVA的微信公众号开发框架相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于wechattyproject是一个基于JAVA的微信公众号开发框架和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
token=thisIsTokenaesKey=thisIsAesKeyappId=thisIsYourAppIdappSecret=thisIsAppSecret
JAVA代码配置
MpAppConetxt 初始化时,调用WechatMpBootstrap 的customizeWechatContext 方法进行配置。
WechatMpBootstrap bootstrap=new WechatMpBootstrap();bootstrap.customizeWechatContext(new MpWechatContextCustomizer() { @Override public void custom(MpWechatContext wechatContext) {wechatContext.setToken('thisIsToken');wechatContext.setAesKey('thisIsAeskey');wechatContext.setAppI d( ' thisIsAppId');wechatContext.setAppSecret('thisIsAppSecret');
配置参数说明
所需参数
阐明
代币
密钥
应用程序ID
应用秘密
可选参数
阐明
启用加密模式
是否启用回调加密模式,默认true。如果开启,则需要下载JCE无限制权限策略文件覆盖jdk中的相关文件。具体可以查看微信常见错误示例。
自动更新访问令牌
发生access_token相关错误时是否自动更新access_token。默认为false。应用程序可以通过计划任务来更新,稍后会详细介绍。
accessToken策略类
access_token访问策略,默认为space.chensheng.wechatty.common.http.MemoryAccessTokenStrategy,将access_token存储在内存中,应用程序可以实现自己的访问策略,比如存储在数据库中,这会在稍后详细介绍。
支付钥匙
微信支付秘钥
支付证书文件
微信支付证书文件路径
支付证书密码
微信支付证书密码
支付宝
微信支付商户ID
支付客户端IP
拨打机器IP进行支付
poolingHttpProxyEnable
是否通过代理服务器请求微信服务器,默认为false
poolingHttpProxy主机名
代理服务器的主机名,例如www.chensheng.space
池化HttpProxyPort
代理服务器端口
poolingHttpProxy用户名
代理服务器用户名
poolingHttpProxy密码
代理服务器密码
池化HttpMaxPerRoute
http连接池中每个链接的最大并发连接数,默认50
池化HttpMaxTotal
http连接池最大并发连接数,默认200
poolingHttpSocketTimeoutMillis
socket超时的毫秒数,默认10000
poolingHttpConnectTimeoutMillis
连接微信服务器超时的毫秒数,默认10000
poolingHttpConnectionRequestTimeoutMillis
从http连接池获取连接超时毫秒数,默认10000
池化HttpTcpNoDelay
是否启用tpcNoDelay,默认true
access_token更新问题
自动更新:开启自动更新后,如果微信接口请求因access_token错误而失败,框架会自动更新access_token。定时更新:应用中使用定时任务(如quartz)定期执行mpAppContext.getAccessTokenFetcher().updateAccessToken(),一般1.5小时执行一次,因为access_token的过期时间为2小时。自动更新和计划更新可以共存。如果多个线程并发执行更新access_token,则只有一个线程会请求微信服务器更新access_token,其他线程会立即返回,不执行任何操作。
access_token存取策略问题
Web应用单机部署:如果您的应用部署在单机上,可以直接使用默认策略,将access_token存储在内存中。 Web应用集群部署:如果您的应用部署在集群中,您必须实现自己的access_token访问策略,并将access_token存储在集群共享介质(如数据库)中,以实现对access_token的集中控制和管理。实现自己的策略类后,在wechat-mp.properties中添加配置accessTokenStrategyClass=your.package.name.YourAccessTokenStrategy。以下是accesss_token数据库访问的策略: import space.chensheng.wechatty.common.http.AccessTokenStrategy;//由于该策略类的实例化不是通过Spring管理的,所以不能使用Autowired在该类中注入bean,//通过ApplicationContext#getBean方法获取。 public class DatabaseAccessTokenStrategy Implements AccessTokenStrategy{ //将access_token保存到数据库中@Override public void doSave(String accessToken) { TokenService tokenService=ApplicationContextUtil .getApplicationContext().getBean(TokenService.class);tokenService.doSave(accessToken); } } //从数据库中获取access_token @Override public String doQuery() { TokenService tokenService=ApplicationContextUtil .getApplicationContext().getBean(TokenService.class);返回tokenService.doQuery();
接收消息
MpAppContext初始化时通过WechatMpBootstrap添加消息监听器接收消息(消息监听器后面会介绍) :
WechatMpBootstrap bootstrap=new WechatMpBootstrap();bootstrap.addMsgListener(new TextMessageListener()); bootstrap.addMsgListener(new SubscribeEventListener()); bootstrap.addMsgListener(new UnsubscribeEventListener());
验证微信服务器的开启回调请求
开发者可以继承space.chensheng。 wechatty.common.message.MessageListener 用于监听特定类型的消息。以下是监听users:发送的短信的示例
public class TextMessageListener extends MessageListener{ @Override protected ReplyMessage onMessage(TextInboundMessage message) { String content=message.getContent();//根据消息内容回复用户if ('1'.equals(content)) { TextReplyMessage replyMsg=new TextReplyMessage(); replyMsg.setContent('这是回复消息内容'); replyMsg.setFromUserName(message.getToUserName()); replyMsg.setToUserName(message.getFromUserName()); replyMsg.setCreateTime(System.currentTimeMillis()); returnreplyMsg;}//返回null表示不回复用户returnnull; }}
可监听的消息类型
留言
阐明
文本入站消息
短信
图像入站消息
图片留言
链接入站消息
跳转到图形消息
位置入站消息
分享位置信息
短视频入站消息
小视频留言
视频入站消息
视频留言
语音入站消息
语音留言
点击事件消息
单击普通菜单消息
查看事件消息
点击跳转至链接菜单消息
位置事件消息
位置事件消息
订阅事件消息
取消订阅事件消息
扫描事件消息
批量发送作业完成事件消息
群消息发送完成报告
可回复的消息类型
留言
阐明
文字回复留言
文字回复
图片回复留言
图片回复
音乐回复留言
音乐回复
新闻动态回复留言
图文回复
视频回复留言
视频回复
语音回复留言
语音回复
发送消息
群发消息
TextMassMessage message=new TextMassMessage();message.setIsToAll(true);message.setContent('群组消息测试');mpAppContext.getMpMessageSender().send(message, 3);群组消息类型
阐明
短信群发消息
批量文本
图片群发消息
图片群发
Mpnews群发消息
微信内图片、文字群发
Mp视频群发留言
视频群发
语音群发留言
语音群发
Wxcard群发消息
微信卡券群发
客服消息
TextCsMessage message=new TextCsMessage();message.setToUser('thisIsUserOpenId');message.setContent('客服消息测试\n 212');mpAppContext.getMpMessageSender().send(message, 3);客服消息类型
阐明
文本Cs消息
短信客服
图片Cs消息
图片客服
MpnewsCs消息
微信内图文客服
新闻资讯Cs留言
对外图文客服
视频Cs留言
视频客服
语音留言
语音客服
WxcardCs消息
微信卡券客服
素材管理
素材管理主要包括素材的上传、查询、修改、删除。素材类型包括图片、视频、语音、图形。
上传素材
上传素材是通过操作对应的素材上传类完成的。下面是上传图片的例子:
File image=new File('/this/is/image/path.jpg');ImagePermanentMedia Material=new ImagePermanentMedia(mpAppContext, image);UploadResponse resp=Material.upload();素材上传类
阐明
图像永久媒体
永久图片
拇指永久媒体
永久缩略图
视频永久媒体
永久视频
语音永久媒体
永久的声音
永久新闻
永久的图片和文字
永久新闻图片
永久图形中的图片
图像临时媒体
临时图片
拇指临时媒体
临时缩略图
视频临时媒体
临时视频
语音临时媒体
临时语音
查询素材
通过工具类space.chensheng.wechatty.mp.material.MaterialQuery和space.chensheng.wechatty.mp.material.MaterialFinder完成材质查询操作。
查询素材数量信息:mpAppContext.getMaterialQuery().count() 查询图文素材:mpAppContext.getMaterialQuery().listNews(int offset, int count) 查询其他素材:mpAppContext.getMaterialQuery().listMedia(MediaType mediaType, int) offset, int count) 根据mediaId 查找图片和文本: mpAppContext.getMaterialFinder().findNews(String mediaId) 根据mediaId 查找永久视频: mpAppContext.getMaterialFinder().findPermanentVideo(String mediaId) 根据mediaId 查找临时视频: mpAppContext .getMaterialFinder() .findTemporaryVideo(String mediaId) 根据mediaId 下载永久素材: mpAppContext.getMaterialFinder().downloadPermanentMedia(String mediaId, String saveDir, String fileName) 根据mediaId 下载临时素材: mpAppContext.getMaterialFinder().downloadTemporaryMedia(String mediaId, String saveDir, String fileName)
删除素材
通过工具类space.chensheng.wechatty.mp.material.MaterialDeleter完成素材删除操作。
根据mediaId删除素材: mpAppContext.getMaterialDeleter().delete(String mediaId)
帐号管理
查询用户信息
通过UserInfoQuery实现查询用户信息。
查询单个用户信息: mpAppConext.getUserInfoQuery().get(String openId) 批量查询用户信息: mpAppContext.getUserInfoQuery().batchGet(ListopenIds)
微信授权
用户授权
通过AuthHelper实现用户授权。
通过授权链接的code获取auth access token: mpAppContext.getAuthHelper().fetchAuthAccessToken(String code) 刷新auth access token: mpAppContext.getAuthHelper().refreshAuthAccessToken(String refreshAccessToken) 通过auth access token: mpAppContext.getAuthHelper()获取用户信息。 fetchAuthUserInfo(String authAccessToken, String openId) 下面是用户授权:的伪代码
公共WxAuthLoginDto authAndLogin(字符串代码){ AuthAccessTokenResponse authResp=mpAppContext.getAuthHelper()。fetchAuthAccessToken(代码); if (authResp==null || !authResp.isOk()) { //授权失败,执行相应业务逻辑return new WxAuthLoginDto('fail'); } 字符串openId=authResp.getOpenId(); AuthUserInfoResponse wxUserInfo=mpAppContext.getAuthHelper().fetchAuthUserInfo(authResp.getAccessToken(), authResp.getOpenId()) //根据微信用户信息在数据库中查找系统对应的用户,或者创建一个新用户//执行登录相关业务逻辑处理return new WxAuthLoginDto('success');}
jsapi授权
jsapi授权通过JsapiHelper实现。
获取jsapi票据(可以使用定时任务定时获取票据并存入数据库) : mpAppContext.getJsapiHelper().fetchTicket() 生成jsapi签名信息: mpAppContext.getJsapiHelper().generateSignature(String jsapiTicket, String nonceStr, long timestamp, String url)
微信支付
初始化MpAppContext时,调用WechatMpBootstrap的enablePayCert()方法启用微信支付并配置相关参数。 (具体参数见配置模块)
用户评论
一直想要自己搭建微信公众号,可实在是太费时费力了!这个微信TyProject真是个福音啊,基于Java开发,上手难度低又能快速搞定功能,简直完美!
有9位网友表示赞同!
作为一个前端开发工程师,我对微信公众平台的关注一直很高。但由于后台逻辑复杂,我一直在寻找合适的工具。看到这款基于Java的框架,感觉很有潜力。期待后续能支持更多功能。
有13位网友表示赞同!
看了下这个WeChatTyProject,感觉代码结构比较清晰,而且文档也很易于理解。如果支持多平台部署的话,那简直无敌了!
有17位网友表示赞同!
试着用这个框架做了一个简单的消息回复接口,结果发现功能点实在很多,配置起来也挺方便的。虽然我Java不太熟练,但也能很快get到了使用方法。这款框架开发效率真的太高了!
有17位网友表示赞同!
基于Java的微信公众号框架挺稀少的,希望这个WeChatTyProject能更成熟一些,否则对我们后端开发者来说很难选择合适的工具。
有9位网友表示赞同!
看到这套框架很多功能都自带了,比如菜单管理、素材库等等。是不是意味着我们可以直接用它搭建一套完整的公众号平台?看起来很有意思啊!
有8位网友表示赞同!
这个WeChatTyProject的社区活动还是蛮活跃的,遇到问题大家都能很快给出解答。这种良好的社区氛围真的很重要!
有6位网友表示赞同!
个人感觉这框架的性能还略微差点,对高并发的情况支持不足。对于一些流量大的公众号来说可能不够稳定。
有8位网友表示赞同!
我本来想用这个框架来开发一款微信平台小程序的功能,结果发现它似乎主要倾向于传统的公众号开发,比较遗憾。能否在未来加入更多小程序相关的开发功能呢?
有19位网友表示赞同!
虽然这个framework能快速搭建公众号,但是对于一些个性化的需求来说可能需要进行二次开发,这还是比较费劲的。
有9位网友表示赞同!
总而言之微信TyProject这款框架非常实用,能够让我们更快地开发微信公众号。希望未来官方能持续更新功能,支持更多平台和类型的开发场景!
有18位网友表示赞同!