微信第三方平台--实现公众号授权(java版)

最近在做微信第三方的业务,把最近做的微信开发相关陆续做一个总结。

第三方平台的申请和上线:

根据微信官方文档开放平台描述,首先需要注册一个开发者账号,按照微信开发文档流程申请审核成功后获取AppID和APPSecret,然后可以开始进行开发。
在这里插入图片描述
第三方平台所需要配置的信息:
在这里插入图片描述
授权事件接收URL:配置接收微信发送过来的ticket接口
消息与事件接收URL:配置接收微信发送的公总号消息和事件

微信授权流程

1)获取预授权码(pre_auth_code)

	微信服务器会每隔十分钟向第三方平台的授权事件接收接收地址发送一次验证票据 (component_verify_ticket)。为了确保安全性,发送过来的ticket是加密的,所以获取ticket需要解密。
获取ticket

授权事件接收接收接口:

@ApiOperation(value = "授权事件接收")
	@RequestMapping(value = "/eventAccept")
	public String eventAccept(HttpServletRequest request, HttpServletResponse response) {
   
		return weChatAuthorizeService.eventAccept(request);
	}

解密ticket:
微信公众平台提供了 c++, php, java, python, c# 5 种语言的示例代码:
微信公众平台加解密示例代码
注意:微信发送的component_verify_ticket里没有ToUserName,所以引用微信代码之后XMLParse解析ToUserName会报错,需要修改一下。
把文件里面粘过来的XMLParse中的ToUserName解析注释掉就可以了,如果也需要用到ToUserName,那就添加一个不解析ToUserName的

@Override
	public String eventAccept(HttpServletRequest request) {
   
		String nonce = request.getParameter("nonce");
		String timestamp = request.getParameter("timestamp");
		String msgSignature = request.getParameter("msg_signature");
		String encryptType = request.getParameter("encrypt_type");
		String signature = request.getParameter("signature");
		String postData = "";
		try {
   
			postData = StreamUtils.getInputStreamJson(request.getInputStream());
		} catch (IOException e) {
   
			ExceptionUtils.logError(e);
		}
		logger.info("nonce: " + nonce);
		logger.info("timestamp: " + timestamp);
		logger.info("msg_signature: " + msgSignature);
		logger.info("encrypt_type: " + encryptType);
		logger.info("signature: " + signature);
		logger.info("postData: " + postData);
		//获取配置文件中的appid等信息
		String encodingAesKey = weChatComponentProperties.getEncodingAesKey();
		String appId = weChatComponentProperties.getAppId();
		String token = weChatComponentProperties.getToken();
		//解密
		WXBizMsgCrypt pc;
		String requestXml  = "";
		try {
   
			pc = new WXBizMsgCrypt(token, encodingAesKey, appId);
			requestXml = pc.
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值