美文网首页
支付宝支付通知回调, 校验验证失败

支付宝支付通知回调, 校验验证失败

作者: lerambo | 来源:发表于2018-04-09 09:20 被阅读0次
String requestStr = AuthenticationInterceptor.getBodyString(request);
        requestStr = URLDecoder.decode(requestStr, "UTF-8");
        // 在此处打断点, 查看支付宝返回的参数是不是乱码. 
        // 如果不是乱码, 只需要遍历数据到map中,
        // 如果是乱码, 添加paramsMap.put(key, new String(value.getBytes("ISO-8859-1"), 
        String[] params = requestStr.split("&");
        Map<String, String> paramsMap = new HashMap<>(50);
        for (String param : params) {
            try {
                String key = param.substring(0, param.indexOf("="));
                String value = param.substring(param.indexOf("=") + 1, param.length());
                // paramsMap.put(key, new String(value.getBytes("ISO-8859-1"), "utf-8"));
                paramsMap.put(key, value);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        try {
            if (paramsMap.get("trade_status").equals("TRADE_SUCCESS")) {
                //systemPayService.orderStateAli(paramsMap);
                // 校验签名是否正确
                boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap, AliPayConfig.getAliPublicKey(),
                        AlipayConstants.CHARSET_UTF8, AliPayConfig.SIGN_TYPE);
                if (signVerified) {
                    //按照支付结果异步通知中的描述,对支付结果中的业务内容进行1\2\3\4二次校验,校验成功后在response中返回success,校验失败返回failure
                    systemPayService.orderStateAli(paramsMap);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

另外需要注意:

  1. 选择加密的方式要和你请求支付接口的加密方式一样
    2.AliPayConfig.getAliPublicKey()这个是支付宝的公钥不是应用公钥

相关文章

网友评论

      本文标题:支付宝支付通知回调, 校验验证失败

      本文链接:https://www.haomeiwen.com/subject/jzsbhftx.html