支付宝异步通知 ,签名验证问题

1.构建参数

 Map parameters = req.getParameterMap();
 Map parameterMap = new HashMap<>();
 for (Object v : parameters.entrySet()) {
    Map.Entry item = (Map.Entry) v;
    parameterMap.put(item.getKey(), item.getValue()[0]);
}     

2.验证签名
这里有坑,官方给的代码中没有要求传入signType 参数,而代码中使用的是rsa算法 所以需要传入signType 将算法变为参数中的算法类型(rsa2)
公钥是支付宝公钥,非应用公钥,这是一个细节方面

String signType = parameterMap.get("sign_type");
if (AlipaySignature.rsaCheckV1(parameterMap, alipayPublicKey, "UTF-8", signType)) {
    return true;
}

你可能感兴趣的:(支付宝异步通知 ,签名验证问题)