All Projects → ihaolin → Wechat

ihaolin / Wechat

Licence: mit
轻量的微信公众号组件(A Lightweight Wechat Component)

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Wechat

Wechat
Wechat API wrapper in Elixir
Stars: ✭ 70 (-64.1%)
Mutual labels:  wechat-sdk, wechat
Yii2 Easy Wechat
WeChat SDK for yii2 , based on overtrue/wechat.
Stars: ✭ 188 (-3.59%)
Mutual labels:  wechat-sdk, wechat
Cordova Plugin Wechat
A cordova plugin, a JS version of Wechat SDK
Stars: ✭ 1,198 (+514.36%)
Mutual labels:  wechat-sdk, wechat
Tom Vpr
how does voiceprint recognition work in wechat page
Stars: ✭ 37 (-81.03%)
Mutual labels:  wechat-sdk, wechat
Yii2 Wx
这可能是yii2中最好用的微信SDK🔥🔥🔥
Stars: ✭ 148 (-24.1%)
Mutual labels:  wechat-sdk, wechat
Gopay
QQ、微信(WeChat)、支付宝(AliPay)的Go版本SDK。【微信支付V3已支持,推荐使用微信V3接口】
Stars: ✭ 1,034 (+430.26%)
Mutual labels:  wechat-sdk, wechat
Weixin Java Cp Demo
基于Spring Boot 和 WxJava 实现的微信企业号/企业微信 后端Demo
Stars: ✭ 175 (-10.26%)
Mutual labels:  wechat-sdk, wechat
Weixin Java Miniapp Demo
基于Spring Boot 和 WxJava 实现的微信小程序Java后端Demo
Stars: ✭ 779 (+299.49%)
Mutual labels:  wechat-sdk, wechat
Gochat
🔥 微信 Go SDK 🚀🚀🚀
Stars: ✭ 141 (-27.69%)
Mutual labels:  wechat-sdk, wechat
Oss.clients.sns
社交网站sdk(标准库),微信公众号(订阅号,服务号,小程序)接口sdk-包含消息回复(明文和安全模式),Oauth2.0授权等
Stars: ✭ 136 (-30.26%)
Mutual labels:  wechat-sdk, wechat
Go Workwx
a sensible Work Weixin(企业微信, Wechat Work) SDK for Go
Stars: ✭ 181 (-7.18%)
Mutual labels:  wechat-sdk, wechat
Caswechat
caswechat 微信全接口SDK封装
Stars: ✭ 155 (-20.51%)
Mutual labels:  wechat-sdk, wechat
Entwechat
📦 WeChat Enterprise SDK based on EasyWeChat 3.X
Stars: ✭ 12 (-93.85%)
Mutual labels:  wechat-sdk, wechat
Weixinsdk
微信开发SDK。
Stars: ✭ 177 (-9.23%)
Mutual labels:  wechat-sdk, wechat
Weixinmpsdk
微信全平台 SDK Senparc.Weixin for C#,支持 .NET Framework 及 .NET Core、.NET 6.0。已支持微信公众号、小程序、小游戏、企业号、企业微信、开放平台、微信支付、JSSDK、微信周边等全平台。 WeChat SDK for C#.
Stars: ✭ 7,098 (+3540%)
Mutual labels:  wechat-sdk, wechat
Wechat
API, command and message handling for WeChat in Rails
Stars: ✭ 1,251 (+541.54%)
Mutual labels:  wechat-sdk, wechat
Diplomat
整合第三方 SDK 微信、微博、 QQ 等为统一的 Diplomat 接口。
Stars: ✭ 672 (+244.62%)
Mutual labels:  wechat-sdk, wechat
Python Weixin
微信(weixin|wechat) Python SDK 支持开放平台和公众平台 支持微信小程序云开发
Stars: ✭ 746 (+282.56%)
Mutual labels:  wechat-sdk, wechat
Easyopenwechat
微信公众号第三方平台SDK
Stars: ✭ 105 (-46.15%)
Mutual labels:  wechat-sdk, wechat
Wechat Api
🗯 wechat-api by java7.
Stars: ✭ 1,813 (+829.74%)
Mutual labels:  wechat-sdk, wechat

WechatBuild Status

轻量的微信公众号组件(A Lightweight Wechat Component)

  • 包引入

     <dependency>
         <groupId>me.hao0</groupId>
         <artifactId>wechat</artifactId>
         <version>1.9.3</version>
     </dependency>
    
  • 依赖包,注意引入项目时是否需要exclude:

     <dependency>
         <groupId>me.hao0</groupId>
         <artifactId>common</artifactId>
         <version>1.1.3</version>
     </dependency>
     <!-- 1.3.0之后引入 -->
     <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>19.0</version>
     </dependency>
    
  • 业务系统与微信公众号交互图阐述:

  • API基本用法:

     Wechat wechat = 
     	WechatBuilder.newBuilder("appId", "appSecret")
     					.conf1()  // 其他可选配置
     					...
     					.build();
     // 同步调用
     wechat.module().api();
     
     // 异步调用
     wechat.module().api(Callback<T>);
    
  • Wechat已实现以下组件:

  • API使用文档见这里

  • 组件扩展: 如果想自己扩展组件,可以继承Component,调用register:

     public class MyComponent extends Component {
         // ...
     }
     MyComponent myComp = new MyComponent();
    wechat.register(myComp);
    
  • AccessToken管理:

    由于微信服务器限制AccessToken请求次数,并且频繁请求AccessToken并不是一个明智之举,需要将获取的AccessToken保存下来,待过期时,再去请求新的AccessToken,所以以上API均提供了无accessToken版本,如:

     List<String> ip();
     List<String> ip(String accessToken);
    
  • 实现AccessTokenLoader:

     public interface AccessTokenLoader {
    
         /**
          * 获取accessToken
          * @return accessToken,若""或NULL会重新从微信获取accessToken,并触发refresh方法
          */
         String get();
     
         /**
          * 刷新accessToken,实现时需要保存一段时间,以免频繁从微信服务器获取
          * @param token 从微信获取的新AccessToken
          */
         void refresh(AccessToken token);
     }
    
  • 默认的AccessTokenLoader实现(生产环境不推荐使用):

     public class DefaultAccessTokenLoader implements AccessTokenLoader {
     
         private volatile AccessToken validToken;
     
         @Override
         public String get() {
             return (validToken == null
                     || Strings.isNullOrEmpty(validToken.getAccessToken())
                     || System.currentTimeMillis() > validToken.getExpiredAt()) ? null : validToken.getAccessToken();
         }
     
         @Override
         public void refresh(AccessToken token) {
             validToken = token;
         }
     }
    
  • Ticket管理: 同AccessToken类似,需自己实现接口TicketLoader:

     public interface TicketLoader {
    
         /**
          * 获取Ticket
          * @param type ticket类型
          *             @see me.hao0.wechat.model.js.TicketType
          * @return 有效的ticket,若返回""或null,则重新从微信请求Ticket,并触发refresh方法
          */
         String get(TicketType type);
     
         /**
          * 刷新Ticket
          * @param ticket 从微信获取的新Ticket
          */
         void refresh(Ticket ticket);
     }
    
  • 默认的TicketLoader实现(生产环境不推荐使用):

     public class DefaultTicketLoader implements TicketLoader {
    
         private final Map<TicketType, Ticket> tickets = new ConcurrentHashMap<>();
     
         @Override
         public String get(TicketType type) {
             Ticket t = tickets.get(type);
             return (t == null
                     || Strings.isNullOrEmpty(t.getTicket())
                     || System.currentTimeMillis() > t.getExpireAt()) ? null : t.getTicket();
         }
     
         @Override
         public void refresh(Ticket ticket) {
             tickets.put(ticket.getType(), ticket);
         }
     }
    
  • 具体例子,可见测试用例

  • 历史版本

    • 1.0.0:

      • 基础功能实现。
    • 1.1.0:

      • 实现代码简化,个别类访问权限修改;
      • 实现MATERIAL组件。
    • 1.2.0:

      • 废弃~~Wechat.newWechat~~构建方法,替换为WechatBuilder方式。
      • *Loader设置过期时刻。
      • 实现JSSDK组件。
    • 1.3.0:

      • 引入guava
      • API支持异步调用。
    • 1.4.0:

      • 组件懒加载。
      • 改变组件访问方式,由变量方法
    • 1.5.0:

      • 上传客服头像。
      • 消息转发客服接口移至消息模块。
      • 实现DATA组件。
    • 1.6.0:

      • 将通用工具类移入common组件。
    • 1.6.1:

      • 文档完善,类访问权限控制;
      • 更新最新common包。
    • 1.6.2:

      • 参数严格校验。
    • 1.6.3:

      • 简化校验。
    • 1.6.4:

    • 1.6.5

      • 升级common,去掉kfAccount校验。
    • 1.6.6

      • 修复respNews参数校验。
    • 1.6.7

      • 消息群发兼容msgId为Int时。
    • 1.6.8

      • 修复消息被动回复问题。
    • 1.6.9

      • 修复微信菜单事件类型判断。
    • 1.6.10

      • 修复User.unionId为String类型。
    • 1.7.0

      • 增加获取用户列表的接口Users.getUsers()
    • 1.8.0

      • 增加通过场景字符串获取永久二维码的接口QrCodes.getPermQrcodeBySceneStr()
    • 1.9.0

      • 增加获取未关注公众号用户的信息接口;
      • 升级common,guava。
    • 1.9.1

      • 修复用户授权accessToken获取;
      • 废弃Bases.openId,替换为Bases.authAccessToken。
    • 1.9.2

      • 增加模版消息事件类型RecvTemplateSendJobFinishEvent
      • 兼容在接收到微信新增的事件消息时,不作抛错处理,而是返回RecvUnknownEvent
    • 1.9.3

      • 升级common包到1.1.3,修复XmlReaders线程安全问题。
  • 微信相关文档

有事请烧钱

  • 支付宝:

  • 微信:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].