微信公众号开发框架 For Java —— wechatapi

亢嘉茂
2023-12-01

微信公众号开发框架 For Java

微信公共平台API。

功能列表

  • 公共API
  • 发送客服消息(文本、图片、语音、视频、音乐、图文)
  • 菜单操作(查询、创建、删除、个性化菜单)
  • 二维码(创建临时、永久二维码,查看二维码URL)
  • 分组操作(查询、创建、修改、移动用户到分组)
  • 用户信息(查询用户基本信息、获取关注者列表)
  • 媒体文件(上传、获取)
  • 群发消息(文本、图片、语音、视频、图文)
  • 客服记录(查询客服记录,查看客服、查看在线客服)
  • 公众号支付(发货通知、订单查询)
  • 微信小店(商品管理、库存管理、邮费模板管理、分组管理、货架管理、订单管理、功能接口)
  • 模版消息
  • 网址缩短
  • 语义查询
  • 数据分析
  • JSSDK服务端支持
  • 素材管理
  • 摇一摇周边
  • 卡劵管理
  • 小程序

Git

https://github.com/muzin/wechatapi

详细文档:
https://github.com/muzin/wechatapi/blob/master/ReadMe.md

Installtion

需手动在项目中加入如下jar:

// 需引入以下 jar 包

// https://mvnrepository.com/artifact/com.google.code.gson/gson
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.2'

// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.6'

// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime
compile group: 'org.apache.httpcomponents', name: 'httpmime', version: '4.5.6'

组建jar包后,将jar包放入项目下,
在build.gradle的repositoriesdependencies加入如下代码:

repositories {
     flatDir {  dirs 'lib' }     //   lib 代表存放jar包的目录
}

dependencies {
    compile group: 'com.fangle', name:"wechatapi", version:'1.0.0'
}

组建jar

gradle jar

或者,使用idea中gradle可视化工具组建

Usage

import com.fangle.WechatAPI;

WechatAPI api = new WechatAPI(appid, appsecret);

多进程

当多进程时,token需要全局维护,以下为保存token的接口:

WechatAPI api = new WechatAPI(appid, appsecret, new TokenStorageResolver() {

    /**
     * 获取token
     * 程序内部将通过此方法获取token
     */
    @Override
    public AccessToken getToken() {
        AccessToken token = 从文件、redis等渠道获取保存的accessToken
        return token;
    }
    
    /**
     * 保存token
     * 程序内部每次更新accessToken时,将会通知此方法
     * 在此时将accessToken持久化
     */
    @Override
    public void saveToken(AccessToken accessToken) {
        // code...
        // 保存到文件、redis等渠道
    }
});

Demo

public WechatAPI wechatAPI = new WechatAPI("appid", "appsecret");

// or

WechatAPI api = new WechatAPI(appid, appsecret, new TokenStorageResolver() {

   /**
    * 获取token
    * 程序内部将通过此方法获取token
    */
   @Override
   public AccessToken getToken() {
   	// ... code  ...
   	String tokenStr = 从文件、redis等渠道获取保存的accessToken
   	JsonParser jsonParser = new JsonParser();
   	JsonObject token = jsonParser.parse(tokenStr);
       AccessToken token = new AccessToken(token.accessToken, token.expire_in)
       return token;
   }
   
   /**
    * 保存token
    * 程序内部每次更新accessToken时,将会通知此方法
    * 在此时将accessToken持久化
    */
   @Override
   public void saveToken(AccessToken accessToken) {
       // code...
   	Map<String, Object> token = new HashMap<String, Object>();
   	token.put("accessToken", accessToken.getAccessToken());
   	token.put("expire_in", accessToken.getExpireTime());
   	Gson gson = new Gson();
   	String tokenStr = gson.toString(token)
       // 将 tokenStr 保存到文件、redis等渠道
   }
});

调用业务函数

public WechatAPI wechatAPI = new WechatAPI("appid", "appsecret");

// 获取用户信息
wechatAPI.getUser("openid");

// 获取微信服务器IP
wechatAPI.getIp("openid");
 类似资料: