最近进行微信官方API开发,需要知道用户的openid,以及需要扫码传参数,需要进行服务器配置。
1、服务器配置
微信公众号要开通开发者模式,然后在最左下角 开发->基本配置->服务器配置 里面进行配置,页面如下:
AppID:是微信公众号的唯一标识,通过和AppSecret进行验证。
URL:开发服务器的路径(你要接收微信官方返回信息的接口地址,用来接收微信服务器发送的数据,需外网)
Token:自设定的token(可随意设置,后面进行URL接口联调验证时会用到,要保持一致)
微信公众号用户,微信服务器和开发服务器三者之间的关系:微信公众号用户发送信息时,发送到微信服务器,微信服务器将消息转发给开发服务器,交互都是通过接口。
2、验证服务器
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求参数如下:
验证代码如下:
//采用的是Jfinal框架,验证接口如下public void verifyWXToken() throws AesException {logger.error("进入验证servlet!!!!!");Map<String, Object> paramsMap = getParamsMap();String msgSignature = paramsMap.get("signature")+"";String msgTimestamp = paramsMap.get("timestamp")+"";String msgNonce = paramsMap.get("nonce")+"";String echostr = paramsMap.get("echostr")+"";if (verifyUrl(msgSignature, msgTimestamp, msgNonce)) {renderText(echostr);}elsefailure("failure");}//用到的方法public static boolean verifyUrl(String msgSignature, String timeStamp, String nonce)throws AesException {// 这里的 Constants.TOKEN 填写你自己设置的Token就可以了String signature = getSHA1(Constants.WECHAT_TOKEN, timeStamp, nonce);if (!signature.equals(msgSignature)) {throw new AesException(AesException.VALIDATE_SIGNATURE_ERROR);}return true;}//用SHA1算法验证Tokenpublic static String getSHA1(String token, String timestamp, String nonce) throws AesException {try {String[] array = new String[] { token, timestamp, nonce };StringBuffer sb = new StringBuffer();// 字符串排序Arrays.sort(array);for (int i = 0; i < 3; i++) {sb.append(array[i]);}String str = sb.toString();// SHA1签名生成MessageDigest md = MessageDigest.getInstance("SHA-1");md.update(str.getBytes());byte[] digest = md.digest();StringBuffer hexstr = new StringBuffer();String shaHex = "";for (int i = 0; i < digest.length; i++) {shaHex = Integer.toHexString(digest[i] & 0xFF);if (shaHex.length() < 2) {hexstr.append(0);}hexstr.append(shaHex);}return hexstr.toString();} catch (Exception e) {e.printStackTrace();throw new AesException(PUTE_SIGNATURE_ERROR);}}
signature:signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。将这三个参数采用sha1算法进行加密。
根据这三个参数,在开发服务器里面重新sha1算法加密,生成新的signature,然后和请求参数中的signature比较,相同则验证成成,成功之后返回随机字符串。配置阶段则成功。
3、启用
配置完成,验证完成后,点击“启用”按钮,开发服务器才算正式完成。
之后,你只能通过verifyWXToken接口与微信官方进行交互,所以你也只能通过修改verifyWXToken完成你需要的开发。