一.创建应用
登录服务商平台->应用管理->应用开发->网页应用->创建应用
具体地址https://open.work.weixin.qq.com/wwopen/developer#/sass/apps/list
1.配置基础信息
3.配置开发信息
注:除了圈红线的url,其他的都能从旁边的详细解释看的懂。当然这两个url可以创建完成之后再进行更改调试。
点击创建完成。
二.编辑回调配置
- 这里需要我们正确的响应微信服务调用,微信会通过下面我们配置的两个url进行传参调用,我们需要根据TOKEN、ENCODING_AES_KEY、CORP_ID等参数(CORP_ID可以在服务商信息找到)生成加、解密的接口的实例,再将从微信发起的请求中获取对应的参数,就可以解析出相应的信息。
微信开发官方指南https://work.weixin.qq.com/api/doc/90001/90143/91116
- 编写接口响应回调
入参如下图所示
需要引用到的jar下载地址
https://work.weixin.qq.com/api/doc/90001/90145/90446#java库
实现代码参考:
@ResponseBody
@RequestMapping("wx/callback")
public String callback(HttpServletRequest request, HttpServletResponse response) {
String resData = "";
try {
boolean getFlag = GET.equals(request.getMethod().toLowerCase());
String signature = request.getParameter(MSG_SIGNATURE);
String timestamp = request.getParameter(TIMESTAMP);
String nonce = request.getParameter(NONCE);
String sVerifyEchoStr = request.getParameter(ECHOSTR);
//数据回调URL
if (getFlag) {
resData = this.verifyUrl(signature, timestamp, nonce, sVerifyEchoStr);
return resData;
}
private String verifyUrl(String signature, String timestamp, String nonce, String sVerifyEchoStr) throws Exception {
WXBizMsgCrypt wxCpt = new WXBizMsgCrypt(TOKEN, ENCODING_AES_KEY, CORP_ID);
logger.info("------开始进行数据回调URL--------");
logger.info(String.format("msg_signature=%s×tamp=%s&nonce=%s&echostr=%s",
signature, timestamp, nonce, sVerifyEchoStr));
//解密
String resData = wxCpt.VerifyURL(signature, timestamp,
nonce, sVerifyEchoStr);
logger.info("-------数据回调URL结束------------返回的字符串: " + resData);
return resData;
}
点击申请校验会出现正确响应该次请求的日志
注:
1.如出现异常java.security.InvalidKeyException:illegal Key Size
2.配置指令回调url、数据回调url这两个是一个请求。
(这里保留疑问,因为看官方文档我的理解是指令回调url对应POST请求接口,但是在这里申请验证时候接收到的请求参数和数据回调url是一样的,包括请求方式,返回值)
三.安装测试
点击安装测试->添加测试企业
这里会提示必须响应并处理“ 授权成功的通知”的回调消息
四.设置授权
①官方文档https://work.weixin.qq.com/api/doc/90001/90143/90600
- 代码实现
整体逻辑如下:
1.接收回调接口推送suite_ticket并进行存储及更新(每十分钟推送一次)
此次调用的接口还是/wx/callback,请求方式为POST,请求包体xml参数需要从body中获取,再解析xml可以判断是推送suite_ticket事件,再获取SuiteTicket标签中的值,解析成功必须返回success字符串,其他均为失败。
2.调用获取第三方应用凭证接口
通过http请求调用,suite_id,suite_secret在应用管理->应用详情获取
调用成功返回suite_access_token,这个值需要进行缓存更新
3.调用预授权码接口
成功返回预授权码
4.调用设置授权配置接口
获取结果,成功必须返回success字符串,其他均为失败。
五.扫码安装
可以设置哪些人可以使用,点击同意就会调用上述请求。然后在工作台就能打开该应用,会跳转至之前配置的首页。
注:出现cropid校验失败时,要把生成加解密实例的入参cropid换成suitid
最后上架到第三方应用时需要一些条件的;