支付宝demo中,有个sign方法是会报错的,具体错误如下
error
而且定位过去的时候,显示的错误是这个
order0nfoUtil2_0.java
跟随着debug进去以后就是这句话出了问题
sign.png
首先,这么写是没有问题的,但是会在6.0以下的机子上报错和闪退,以上就没有问题,网上写的解决方案是
KeyFactory keyf = KeyFactory.getInstance("RSA" , "BC");
这样写,的确在8.0以下的机子上成功运行,但是到了Android 9.0 ,又会造成这个问题,导致闪退。查阅了相关资料,发现Android P(9.0)之后对RSA加密进行了修改 ,今后是不需要BC这个参数了的,所以我们需要对Android的版本进行判断,从而判断如何进行加密,代码如下:
KeyFactory keyf = null ;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
keyf = KeyFactory.getInstance("RSA"); //适配Android P及以后版本,否则报错NoSuchAlgorithmException
} else {
keyf = KeyFactory.getInstance(ALGORITHM, "BC");
}
编译结束后就可以进行运行了
吐槽一下支付宝的技术客服是真的坑,问问题都答不到点子上,一直要我们发demo,而且官方文档也很坑啊,你们官方竟然不改改么!!!过分!
网友评论