1.构建参数
Map<String, String[]> parameters = req.getParameterMap();
Map<String, String> parameterMap = new HashMap<>();
for (Object v : parameters.entrySet()) {
Map.Entry<String, String[]> item = (Map.Entry<String, String[]>) 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;
}
网友评论