引用自:微信Java SDK开发文档

weixin-java-tools 是一款开源的微信 Java SDK 工具,对微信接口封装的比较全,简单配置即可使用,正式版的更新频率是两个月,是 Java 开发微信项目的利器。此文主要介绍使用过程中遇到的的一些 wiki 中没有详细介绍的地方。

# CP_如何调用未支持的接口

CP_如何调用未支持的接口

使用 wxCpService.get(url, queryParam)wxCpService.post(url, postData) 方法时 url 和 queryParam 不用附带 accessToken 参数,因为该参数在实际调用微信接口时已经封装在 url 的 queryParam 里了。post 方法中的 postData 是 stringify 处理之后的 JSON 字符串 而不是 JSON 对象。

# MP_js_api

MP_js_api

微信企业号服务获取JS-SDK需要的证书信息可以调用 wxCpService.createJsapiSignature(url),其中 url 必须是调用 JS-SDK 页面的全路径(包括?后的 queryString)中第一个#之前的字符串。例如当前的页面全路径是 http://www.yupaits.com/hello?text=world&next=config#wechat,则 url 应该是 http://www.yupaits.com/hello?text=world&next=config

页面上可以通过config接口注入权限验证配置

wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,企业号的唯一标识,此处填写企业号corpid
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名,见附录1
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
1
2
3
4
5
6
7
8

两者结合的实例。点击页面上的“扫码”按钮,调用 js 中的 scan() 方法。

@RequestMapping(value = "/jssdk", method = RequestMethod.GET)
public String jsSdkPage(HttpServletRequest request, Model model) {
    try {
        String url = request.getRequestURL().append(StringUtils.isNotBlank(HttpUtil.getRequest().getQueryString()) ? "?" + HttpUtil.getRequest().getQueryString() : "").toString();
        model.addAttribute("jsApiSignature", JSON.toJSONString(wxCpService.createJsapiSignature(url)));
    } catch (WxErrorException e) {
        logger.error("获取JS-API的签名出错,{}", e.getMessage());
    }
    return "weixin/jssdk";
}
1
2
3
4
5
6
7
8
9
10
var jsapisignature = JSON.parse('${jsApiSignature}');
function scan() {
    wx.config({
        debug: false,
        appId: jsapisignature.appid,
        timestamp: jsapisignature.timestamp,
        nonceStr: jsapisignature.noncestr,
        signature: jsapisignature.signature,
        jsApiList: [
            'scanQRCode'
        ]
    });

    wx.ready(function () {
        wx.scanQRCode({
            needResult: 1,
            success: function (res) {
                alert('恭喜你');
            },
            error: function (res) {
                if(res.errMsg.indexOf('function_not_exist') > 0){
                    alert('版本过低请升级');
                }
            }
        });
    });

    wx.error(function (res) {
        alert('微信JS接口验证失败,无法调用相关接口');
    });
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31