工作生活

支付宝sign时闪退问题

2019-07-02  本文已影响0人  NineThm

支付宝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,而且官方文档也很坑啊,你们官方竟然不改改么!!!过分!

参考文献:
https://www.jianshu.com/p/883851bbc988

上一篇下一篇

猜你喜欢

热点阅读