android支付宝问题2013-07-17

这几天在弄android的支付宝unity3d插件,在这记录一下,以供后人参考。1:android 4.1版本以上支付时遇到"java.security.spec.InvalidKeySpecException" 跳转支付宝支付时出现异常,debug发现“java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag”;在网上找了下,发现stackOverFlow有个比较符合这个问题的答案:
1
2
3
4
5

// use encription in my app. I store private key as bytes array and use the following code to restore it:

PrivateKey
private
= KeyFactory.getInstance(
"RSA"
).generatePrivate(
new
PKCS8EncodedKeySpec(s_privateKeyIn1t));

// It works perfectly on all my target android platforms 2.1 -> 4.0.4, but fails on Jelly Bean!

测试出现bug的机器刚好是android4.1的系统。根据其中一个答案 修改支付宝插件demo Rsa.java相应的sign和doCheck方法:

1
2
3

PKCS8EncodedKeySpec privSpec =
new
PKCS8EncodedKeySpec(s_privateKeyIn1t);

KeyFactory keyFactory = KeyFactory.getInstance(
"RSA"
,
"BC"
);

PrivateKey privateKey = keyFactory.generatePrivate(privSpec);

再次测试OK;
http://blog.csdn.net/nono_love_lilith/article/details/88339602:华为测试机支付时卡死 在公司华为测试机上调用支付方法时卡死,其他同样版本机器上无次问题。 初步估计是华为机预装有支付宝快捷支付服务,且该服务不能删除。调用支付宝demo时所用支付服务和机器预装服务版本不匹配造成。 该原因还没有验证,稍后root删除机器预装支付服务后再来补充。

你可能感兴趣的:(android支付宝问题2013-07-17)