找回密码
 立即注册

QQ登录

只需一步,快速开始

微信小工具

关注:3

所属分类: 微信开发 微信公众号开发资源 微信小工具

微信公众号开发过程可能会用到的各种小工具,例如一些python、js写的脚本,涵盖微信支付、微信抓包、微信通信、公众号辅助等等

微信API封装,支持多公众号操作,简单易用,暂不支持企...

[复制链接]
查看: 109|回复: 0
最佳答案
0 

3

主题

7

帖子

94

积分

新人求带

积分
94
 楼主| 发表于 5 天前 | 显示全部楼层 |阅读模式
微信API封装,支持多公众号操作,简单易用,暂不支持企业号

#Aha-Weixin 微信API的封装,支持多个公众号同时使用,操作简单。


Maven仓库
  1.     <dependency>
  2.       <groupId>io.github.rcarlosdasilva</groupId>
  3.       <artifactId>weixin</artifactId>
  4.       <version>0.1</version>
  5.     </dependency>
复制代码

##注册公众号信息 使用前,需要先将公众号注册一下
只有一个公众号时:
    WeixinRegistry.registryUnique("appid", "appsecret");
当有多个公众号时:
    WeixinRegistry.registry("key1", "appid", "appsecret");
    WeixinRegistry.registry("key2", "appid", "appsecret");

如果在公众平台官网的开发-基本设置页面设置了回调接口,那么需要设置token与EncodingAESKey信息。建议使用安全模式。
  1.     WeixinRegistry.registry("key1", "appid", "appsecret")
  2.         .setServerSecurity("token", "aesKey", EncryptionType.SAFETY) // 设置公众号消息加密信息
  3.         .setRetryTimes(5); // 设置接口调用失败时的重试次数
复制代码

##接口调用 使用
  1.     Weixin.withUnique();
  2.     或
  3.     Weixin.with("key1");
复制代码

可以开始调用各个功能的接口,例如Weixin.withUnique().user()。分别对应的是:
用户相关: .user();
用户组相关: .userGroup(); // 微信已弃用
用户标签相关: .userTag();
认证相关: .certificate();
公共api: .common(); // 例如获取微信服务器ip、生成短连接等
客服相关: .custom();
非api,帮助相关: .helper(); // 例如生成web授权链接,生成JS-SDK签名等
素材相关: .media();
自定义菜单相关: .menu();
消息相关: .message(); // 模板消息与图文消息
数据统计相关: .statistics();
模板消息相关: .template(); // 模板的消息推送在 message() 里

在不同的功能入口中再调用具体接口。所有入口都已将API 100%封装。 例如
判断ip是否为微信服务器ip
    Weixin.withUnique().helper().isLegalRequestIp("you held ip");
生成web授权链接:
    Weixin.withUnique().helper().webAuthorize(WebAuthorizeScope.BASE, "url redirect to");
通过web授权code获取用户open_id:
    Weixin.withUnique().certificate().askWebAuthorizeAccessToken("code");
获取用户信息:
    Weixin.withUnique().user().getUserInfo("open_id");

##微信通知 微信在发送消息到“微信平台中设置的”回调接口时,需要将微信发送过来的内容进行解析。(微信发送消息是在request body中,另外会传msg_signature, timestamp, nonce三个参数) 假设获取到的内容变量为body,那么解析过程为:
  1.     Notification notification = NotificationParser.parse(body);
  2.     Account account = Weixin.withUnique().info();
  3.     notification = Encryptor.decrypt(account.getToken(), account.getAesKey(),
  4.         notification.getCiphertext(), signature, timestamp, nonce);
  5.     // 以上代码获取到微信消息内容,并解密,notification中就是消息解析后的内容
  6.    
  7.     // 要响应微信的话
  8.     NotificationResponseBuilder builder = Builder.buildNotificationResponse().with(notification); // 针对当前消息生成回复构建器
  9.     NotificationResponsePlaintext response = builder.responseText("simple text response").build(); // 构建一个简单文本响应
  10.     String plainText = NotificationParser.toXml(response); // 获取到加密前的回复xml
  11.     String encrypted = Encryptor.encrypt(account.getAppId(), account.getToken(), account.getAesKey(), plainText); // 对回复加密
  12.     return encrypted;
复制代码

以上代码只能认为判断微信消息的类型与各种不同情况,为了方便处理微信发送的各种不同的消息,提供了NotificationHandlerProxy代理类与NotificationHandler接口,来代替上面的解析方案。NotificationHandler定义了所有微信可能的消息类型,可以实现该接口,并在各种不同的消息对应的方法中实现自己的流程。DefaultNotificationHandler是NotificationHandler的默认实现。
  1. 假设已经有实现NotificationHandler接口的类,并实例化为变量handler:
  2.     NotificationHandlerProxy.proxy(handler); // 指定代理
  3.     return NotificationHandlerProxy.instance().process(body); // 处理明文模式,这里的返回值就是给微信的返回值
  4.     return NotificationHandlerProxy.instance().process(body, signature, timestamp, nonce); // 处理安全或兼容模式,这里的返回值就是给微信的返回值
复制代码

##微信常用功能场景示例 生成底部菜单: 推送各类型消息: 素材管理: 网页授权: 用户相关: 客服相关:

weixin-master.zip (295.54 KB, 下载次数: 0)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



henkuai.com是专业的第三方微信开发者平台,为生态而生。


本站为第三方微信开发者平台,非腾讯官方网站。

天津市滨海新区
中新生态城中成大道生态建设公寓9号楼3层301

欢迎来这里一起喝喝茶,
聊聊你的产品。

微信公众号gongzhongkaifa

工作日12小时内回复。

网站业务
zhongcong@henkuai.com

工作日12小时内回复。

市场合作
songchang@henkuai.com