微信测试账号配置 ———接口配置信息

进入微信公众平台 获取测试账号appId 和 secretKey

配置接口信息

 注意:

1.url的端口 http 为80   https 为443

2.Token为任意数字与字母组合且长度3-32

由于我的服务器80端口已经被nginx监听,所以做了一个nginx转发

我的wechatService服务监听的web端口为9080

server.port=9080

WechatContoller.java

package com.wl.wechat.contoller;

import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;

/**
 * Created by wl on 2021/4/10.
 */
@RestController
@RequestMapping("/wx")
public class WxController {

    private static final String TOKEN = "wl123";

    @RequestMapping("/receiveWx")
    public void receiveWxToken(HttpServletRequest request,HttpServletResponse response) throws Exception{

        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");
        System.out.println("signature: " + signature);
        System.out.println("timestamp: " + timestamp);
        System.out.println("nonce: " + nonce);
        System.out.println("echostr: " + echostr);
        String[] params = new String[]{nonce,timestamp,TOKEN};
        Arrays.sort(params);
        String signatureResult = DigestUtils.sha1Hex(params[0]+params[1] + params[2]);
        //校验签名
        if(!signatureResult.equals(signature)) {
            throw new RuntimeException("signature is not the same wechat signature is " + signature + " signatureResult is " + signatureResult);
        }
        response.getWriter().write(echostr);
    }

    @RequestMapping("/login")
    public String login(HttpServletRequest request){
        return "ok";
    }

}

nginx部分配置如下(一般nginx配置在/etc/nginx/nginx.conf 我的服务器为腾讯云ubuntu20  nginx配置在 /etc/nginx/sites-available/default)

upstream wechat_server{
            server localhost:9080;
}

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        location /wechat/ {
             proxy_pass   http://wechat_server/wechat/;
          }
        .....
}

上面配置是将 http://hostIp/wechat/的请求转发到 http://hostIp:9080/wechat/上

重启nginx 并且启动java 服务

sudo /etc/init.d/nginx reload

提交微信测试账号的 接口配置信息(Token需要与java程序中的TOKEN一致)

 

成功! 

java日志如下

signature: e42508e3982e6f1c414fb4d2e1a857fdcdc31af1
timestamp: 1618138978
nonce: 1621993589
echostr: 4331993227658786679

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐