微信公众号官方API开发之配置服务器

本文介绍了如何配置微信公众号的服务器,包括设置AppID、URL、Token,并详细讲解了服务器验证过程。开发者需要通过验证GET请求中的signature、timestamp、nonce参数来确保安全性。验证成功后,点击启用按钮,服务器配置完成,可以开始与微信官方接口进行交互。
摘要由CSDN通过智能技术生成

最近进行微信官方API开发,需要知道用户的openid,以及需要扫码传参数,需要进行服务器配置。

1、服务器配置

微信公众号要开通开发者模式,然后在最左下角 开发->基本配置->服务器配置 里面进行配置,页面如下:

 

AppID:是微信公众号的唯一标识,通过和AppSecret进行验证。

URL:开发服务器的路径(你要接收微信官方返回信息的接口地址,用来接收微信服务器发送的数据,需外网)

Token:自设定的token(可随意设置,后面进行URL接口联调验证时会用到,要保持一致)

微信公众号用户,微信服务器和开发服务器三者之间的关系:微信公众号用户发送信息时,发送到微信服务器,微信服务器将消息转发给开发服务器,交互都是通过接口。

2、验证服务器

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求参数如下:

参数描述
signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp时间戳
nonce随机数
echostr随机字符串,要原样返回

验证代码如下:

//采用的是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);
        }else
            failure("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算法验证Token
public 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(AesException.COMPUTE_SIGNATURE_ERROR);
		}
	}

signature:signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。将这三个参数采用sha1算法进行加密。

根据这三个参数,在开发服务器里面重新sha1算法加密,生成新的signature,然后和请求参数中的signature比较,相同则验证成成,成功之后返回随机字符串。配置阶段则成功。

3、启用

配置完成,验证完成后,点击“启用”按钮,开发服务器才算正式完成。

之后,你只能通过verifyWXToken接口与微信官方进行交互,所以你也只能通过修改verifyWXToken完成你需要的开发。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值