收藏
回答

签名不对?

https://api.weixin.qq.com/wxa/game/queryorderinfo?access_token=ACCESS_TOKEN&signature=SIGNATURE&sig_method=SIG_METHOD&pay_sig=PAY_SIGNATUR
回答关注问题邀请回答
收藏

2 个回答

  • 漂浮的云
    漂浮的云
    06-30
    public static void main(String[] args) throws Exception {
    
            String access_token = "屏蔽";
    
            Map<String, Object> paramMap = new TreeMap<>();
            paramMap.put("openid", "屏蔽");
            paramMap.put("offer_id", "1450049208");
            paramMap.put("ts", 1751271984);
            paramMap.put("zone_id", "1");
            paramMap.put("env", 1);
            paramMap.put("out_trade_no", "屏蔽");
            paramMap.put("biz_id", 2);
    
            String sessionKey ="屏蔽饿了";
    //        String signData = JSON.toJSONString(paramMap).replaceAll(",",", ").replaceAll(":",": ");//JSONUtil.toJsonStr(paramMap); //MapUtil.sortJoin(paramMap, "&", "=", true);
            StringBuilder signData = new StringBuilder();
            for (Map.Entry<String, Object> entry : paramMap.entrySet()) {
                if (signData.length() > 0) {
                    signData.append("&");
                }
                signData.append(entry.getKey()).append("=").append(entry.getValue());
            }
    
            System.out.println(signData);
            String signature = getSHA256StrJava(sessionKey,signData.toString());//Base64.encodeBase64String(AesUtil.getSHA256StrJava(sessionKey,signStr));
    //        String signature = sign(signData.toString(),sessionKey);
            System.out.println("用户态签名:"+signature);
    //        System.out.println("用户态签名:"+AesUtil.getSHA256StrJava(sessionKey,signData1));
    
            //支付请求签名
            String relativeUrl = "/wxa/game/queryorderinfo";
            String app_key = " 屏蔽了";
            String pay_sig = getSHA256StrJava(app_key,relativeUrl +"&"+signData.toString());//AesUtil.to_hex(PropertiesFactory.getWeiXin_APP_KEY_0(),url,signStr);
            System.out.println("支付签名:"+pay_sig);
    
            String SIG_METHOD = "hmac_sha256";
            String url = "https://api.weixin.qq.com/wxa/game/queryorderinfo";
            String url_param = url + "?access_token="+access_token+"&signature="+signature+"&sig_method="+SIG_METHOD+"&pay_sig="+pay_sig;
            System.out.println("请求url:"+url_param);
            String android_content = HttpUtil.post(url_param, paramMap);
    
            System.out.println(android_content);
        }
    
        private static  String getSHA256StrJava(String key,String data){
            byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
            SecretKeySpec signingKey = new SecretKeySpec(keyBytes, "HmacSHA256");
            try {
                Mac mac = Mac.getInstance("HmacSHA256");
                mac.init(signingKey);
                return  new String(Hex.encode(mac.doFinal(data.getBytes(StandardCharsets.UTF_8)))).toLowerCase();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    


    06-30
    有用
    回复
  • 智能回答 智能回答 该问答由AI生成
    06-30
    有用
登录 后发表内容