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

2019-01-29  本文已影响0人  imsjw

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;
}
上一篇 下一篇

猜你喜欢

热点阅读