公众号入门指引中的服务搭建有java demo吗,python看不懂
发布于 7 年前 作者 yong79 8887 次浏览 来自 官方Issues
2 回复
package com.example.demo.controller;

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.apache.commons.codec.digest.DigestUtils;

import java.util.Arrays;

[@RestController](/user/RestController)
[@RequestMapping](/user/RequestMapping)("/hello")
public class AuthController {

    @GetMapping(produces = MediaType.TEXT_PLAIN_VALUE)
    public String authGet(
            @RequestParam(name = "signature", required = false) String signature,
            @RequestParam(name = "timestamp", required = false) String timestamp,
            @RequestParam(name = "nonce", required = false) String nonce,
            @RequestParam(name = "echostr", required = false) String echostr) {
        if (this.checkSignature(timestamp, nonce, signature)) {
            return echostr;
        }
        return "非法请求";
    }

    @PostMapping(produces = MediaType.APPLICATION_XML_VALUE)
    public String post(
            @RequestBody String requestBody,
            @RequestParam(name = "msg_signature", required = false) String msgSignature,
            @RequestParam(name = "encrypt_type", required = false) String encryptType,
            @RequestParam(name = "signature", required = false) String signature,
            @RequestParam("timestamp") String timestamp,
            @RequestParam("nonce") String nonce) throws Exception {
        if (!this.checkSignature(timestamp, nonce, signature)) {
            return "";
        }
        return "success";
    }

    private boolean checkSignature(String timestamp, String nonce, String signature) {
        String token = "hello";
        String[] arr = {token, timestamp, nonce};
        Arrays.sort(arr);
        StringBuilder stringBuilder = new StringBuilder();
        for (String a : arr) {
            stringBuilder.append(a);
        }
        return DigestUtils.sha1Hex(stringBuilder.toString()).equals(signature);
    }

}

微信回调上面的第一个接口是只调一次还是多次,

回到顶部