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

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

作者: 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