支付宝当面付之扫码支付“无效签名”

来源:互联网 发布:raysource 软件下载 编辑:程序博客网 时间:2024/04/28 19:24

做支付宝的当面付扫码支付的时候,遇到最纠结的问题就是一直提示“无效签名”,然而官方又没有给出很明确的说明,在网上搜索了很长时间,也没有找到解决的具体例子,我就把我的经历说一下,有需要的也可以借鉴一下:
在POST提交之后,返回一直是40002错误,无效签名,然后各种对比参数,没有发现任何问题,又对提交的参数自己做验签,竟然也没问题,我就怀疑是提交参数的方式和格式编码等出现了问题,当官方又没有明确给出最终提交参数的样式,修改了各种编码和参数格式,XML格式和JSON格式官方网关都是无法获取,给返回了一个网页,最后还是用键值对的方式提交,又看到官方说参数有特殊字符需要做URL encoding ,然后就对整个提交参数encode,官方网关还是无法获取,其实是只要对签名后的值做URL encode就可以了,返回正确的二维码生成地址了。

String signValue=AlipaySignature.getSignContent(aliData);
sign=SignUtils.sign(signValue, AlipaySellerInfo.privateKey);
try {
sign = URLEncoder.encode(sign, "UTF-8");//仅需对sign 做URL编码
} catch (UnsupportedEncodingException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
signValue=signValue+"&sign="+sign;

1 0
原创粉丝点击