关于支付宝同步验签成功而异步验签失败的解决办法

支付宝这个验签真是坑多多啊
官方demo里给的验签代码如下

	Map params = new HashMap();
    Map requestParams = request.getParameterMap();
    for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
        String name = (String) iter.next();
        String[] values = (String[]) requestParams.get(name);
        String valueStr = "";
        for (int i = 0; i < values.length; i++) {
            valueStr = (i == values.length - 1) ? valueStr + values[i]
                    : valueStr + values[i] + ",";
        }
        //乱码解决,这段代码在出现乱码时使用
        // valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
        params.put(name, valueStr);
    }

    boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type); //调用SDK验证签名

// valueStr = new String(valueStr.getBytes(“ISO-8859-1”), “utf-8”);


罪魁祸首主要是上面这句,解决乱码的,在异步通知时候,这个好像没有用…
加上的话就会导致产生验签失败问题!
如果你也是这样的问题,就好办了,直接注释掉这一句就行了.
看来demo只能提供一下借鉴功能,项目的具体实现还要根据实际情况来做

特别感谢一下这个同学

https://www.cnblogs.com/westward/p/6958871.html

你可能感兴趣的:(Java)