支付宝异步回调验证签名false

o_Sara 2016-03-24 01:55:44

string signContent = AlipaySignature.GetSignContent(dic);


//RSA 验证签名
bool rsaCheckContent = AlipaySignature.RSACheckV1(dic, publicKeyPem, "utf-8");
//rsaCheckContent 一直是false

//参数我是用支付宝回调的参数拼接 按照支付宝的要求传递 参数拼接没问题

...全文
39248 43 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_小帅发 2020-02-12
  • 打赏
  • 举报
回复 1
注释这段代码!!!注释这段代码!!!注释这段代码!!! 当没有乱码时存在这段代码反而出现乱码
cdr_cool 2019-07-04
  • 打赏
  • 举报
回复
引用 35 楼 真-酸辣土豆丝 的回复:
[quote=引用 34 楼 m0_37540267 的回复:] 除了上面说的用支付宝公钥外 还要注意编码问题 要是有乱码的话,要把demo的这句注掉 //乱码解决,这段代码在出现乱码时使用 valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
专门登陆上来感谢34楼解决了我的问题。就是这句代码导致的。。注释掉就好啦。。[/quote] 注释掉就好了,感谢!
macrobn 2018-02-08
  • 打赏
  • 举报
回复
31# 正解!!!支付宝公钥!!!支付宝公钥!!!支付宝公钥!!!支付宝公钥!!!
u_goddesses 2018-01-30
  • 打赏
  • 举报
回复
赞,支付宝公钥是关键,谢谢大家
pjvslx 2018-01-22
  • 打赏
  • 举报
回复
引用 15 楼 sinat_29771839 的回复:
引用 13 楼 sinat_29771839 的回复:
我用的支付宝公钥也一直返回错误
你是不是在沙箱环境下测得
我的应用没审核通过 所以看不到支付宝公钥 我现在是用沙箱测试的 这样的话我的公钥该用哪个啊
qq_29439685 2017-12-29
  • 打赏
  • 举报
回复
String signType=params.get("sign_type"); // 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)// boolean signVerified = false; try { signVerified = AlipaySignature.rsaCheckV1(params, alipaypublickey, "utf-8",signType); } catch (AlipayApiException e1) { e1.printStackTrace(); } 支付宝验签需要签名格式,取到signType放入验签函数可以返回true。
qq_38140733 2017-11-30
  • 打赏
  • 举报
回复
遇到同样问题,解决方法: 官方demo+自己app参数+注释掉这一行valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); 返回为true。给大家做个参考
ceshigaoshou 2017-09-27
  • 打赏
  • 举报
回复



为啥我的一直通不过验签~~两个秘钥用的是dmeo里的就返回true,把私钥改成自己的就不行~~~。

改成两个都是dmeo里的可以通过验签,但是在调起生成订单接口方法时候就报签名错误了
AlipayTradeCreateResponse response = _Client.Execute(request);

搞两天了~~~
  • 打赏
  • 举报
回复
引用 34 楼 m0_37540267 的回复:
除了上面说的用支付宝公钥外 还要注意编码问题 要是有乱码的话,要把demo的这句注掉 //乱码解决,这段代码在出现乱码时使用 valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
专门登陆上来感谢34楼解决了我的问题。就是这句代码导致的。。注释掉就好啦。。
m0_37540267 2017-07-24
  • 打赏
  • 举报
回复
除了上面说的用支付宝公钥外 还要注意编码问题 要是有乱码的话,要把demo的这句注掉 //乱码解决,这段代码在出现乱码时使用 valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
追云zy 2017-06-29
  • 打赏
  • 举报
回复
文档有地方说要移除sign 和signType则两个参数,实际上不用移除 boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap,PayBean.ALIPAY_PUBLIC_KEY,"UTF-8",''RSA2");
返朴归真氟气 2017-06-28
  • 打赏
  • 举报
回复
异步通知获取参数用 Request.Form而不是Request.Params、Request.QueryString之类的
shendexuan1986 2017-04-14
  • 打赏
  • 举报
回复
要用支付宝的公钥 不要用应用的公钥 两个长的差不多 其实不一样 已解决
  • 打赏
  • 举报
回复
wangjuncsc 2017-03-13
  • 打赏
  • 举报
回复
String signType=params.get("sign_type"); boolean bool=false; try { bool=AlipaySignature.rsaCheckV1(params, 支付宝公钥, "UTF-8",signType); } catch (Exception e) { e.printStackTrace(); } 返回结果true
tankkean 2017-03-09
  • 打赏
  • 举报
回复
支付宝公钥是对的啊 而且同步返回页面的验证是通过的 但是异步签名验证死活不通过 求大神解答
渴望越狱的猫 2017-02-13
  • 打赏
  • 举报
回复
引用 26 楼 GeeMaple 的回复:
AlipaySignature.getSignCheckContentV1() + 12楼助攻,终于验证通过了
之前太激动了,贴错了方法 AlipaySignature.rsaCheckV1() + 12楼助攻,终于验证通过了
渴望越狱的猫 2017-02-13
  • 打赏
  • 举报
回复
AlipaySignature.getSignCheckContentV1() + 12楼助攻,终于验证通过了
luoyidong 2016-12-23
  • 打赏
  • 举报
回复
整整整了两天,先是公钥不对,后面是参数,咨询技术客服,可以拿了我的验证信息PHP调用多可以通过,就是我本地netsdk 用不了。最后调试netsdk 的源码,发现将 回调公钥转换为Base64报错, RSACryptoServiceProviderExtension.GetDERFromPEM( sPEM ) ,直接将这个改成了这样,一下就通过了。 //byte[] DERData = RSACryptoServiceProviderExtension.GetDERFromPEM( sPEM ); byte[] DERData = Convert.FromBase64String(sPEM);
m0_37059940 2016-12-16
  • 打赏
  • 举报
回复
如果你用的demo里的支付宝公钥是写在Config.cs文件里而不是从文件里读取的话,用Boolean signVerified = AlipaySignature.RSACheckV1()进行验签时,公钥的变量需要加上"-----BEGIN PUBLIC KEY-----\r\n" + Config.alipay_public_key + "-----END PUBLIC KEY-----\r\n\r\n" 如果是直接读取文件alipay_rsa_public_key.pem的话则不需要加,因为文件里已经带有
加载更多回复(23)

1,171

社区成员

发帖
与我相关
我的任务
社区描述
移动支付相关内容讨论专区
社区管理员
  • 移动支付
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧