java微信验证

@Value("${custom.wechat.appId}")
private String wechatAppId;  //微信公众号appID

@Value("${custom.wechat.secret}")
private String wechatSecret; //微信公众号appsecret

@GetMapping(value = "/wechatAuthorization")
@ApiOperation(value = "微信验证")
public ResultVO wechatAuthorization(@RequestParam String wechatCode) {
    try {
        if (StringUtils.isEmpty(wechatCode)) {
            return ResultVO.FAIL("请先获取微信授权!", null);
        }
        Map<String, String> param = new HashMap<>();
        param.put("appid", wechatAppId);
        param.put("secret", wechatSecret);
        param.put("code", wechatCode);
        param.put("grant_type", "authorization_code");
        RestTemplate restTemplate = new RestTemplate();
        String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + wechatAppId + "&secret="
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java微信支付V3验证签名代码示例: ```java public class WechatPayVerification { /** * 验证签名 * * @param body 请求报文主体 * @param signature 微信支付返回的签名 * @param timestamp 微信支付返回的时间戳 * @param nonce 微信支付返回的随机字符串 * @param publicKey 商户平台API证书公钥内容 * @return 验证成功返回true,否则返回false */ public static boolean verify(String body, String signature, String timestamp, String nonce, String publicKey) { try { // 拼接待签名字符串 String message = timestamp + "\n" + nonce + "\n" + body + "\n"; // 将公钥字符串转换为公钥对象 PublicKey publicKeyObj = getPublicKey(publicKey); // 验证签名 Signature sign = Signature.getInstance("SHA256withRSA"); sign.initVerify(publicKeyObj); sign.update(message.getBytes()); return sign.verify(Base64.getDecoder().decode(signature)); } catch (Exception e) { e.printStackTrace(); } return false; } /** * 将公钥字符串转换为公钥对象 * * @param publicKeyStr 商户平台API证书公钥内容 * @return 公钥对象 * @throws Exception 异常 */ private static PublicKey getPublicKey(String publicKeyStr) throws Exception { byte[] keyBytes = Base64.getDecoder().decode(publicKeyStr); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); return keyFactory.generatePublic(keySpec); } } ``` 使用示例: ```java String body = "{\"id\":\"123456\"}"; String signature = "Y5iHYv5RyajCQ2e0gLdK0l1vFqZpDq0NqOuLWmzv7y4t4kzO7EhO5Qjv7xuS9OcX7s1sB2QkIwPzDjKsTGMeTg=="; String timestamp = "1607993739"; String nonce = "nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6"; String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjvJwOwFf7GmzQY+KcSEZrLJrL9rDdM0LpO+u4w1lu4B4f8Jg+4zE5xjZS+7XuJ2f/CQ7h+Q2D5R7R5Y5Y5o5v3qZ3Hc9X8LW1n0LJw5DQMYca12R8GtWk5v5H3lqfZ9XN8gW0hJFyO4cq4QE4b8CkWpLdOxuKqb07SUI7kcD2h06Ov7k6zAAbAzP57F6Y2sI1cXx1ZrT9rKlPnPOgI7w3HnF6kzgD1YjBvzQ6U2J6U9+6bGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6nYut1vzqJHKBn3sxq8UGaGv6vzR6U9Q6"; boolean result = WechatPayVerification.verify(body, signature, timestamp, nonce, publicKey); System.out.println(result); ``` 注意:在实际使用中,需要将公钥字符串替换为商户平台API证书中的公钥内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值