Unity Android 支付宝 接入

来源:互联网 发布:淘宝内衣模特拍摄 编辑:程序博客网 时间:2024/06/07 09:49

本想以后做个单机游戏,接入支付宝的小愿望破灭了,注册需要企业执照什么哒,搞毛。。。


第一步当然是到支付宝平台 注册应用了,注册后会有获得APPID  当然作为商户本身有一个PID 只是要签约 呵呵了,签约要的资料个体户只能长叹。。然后呢有工具 用于生成密钥 公钥和私钥  上传公钥  私钥按理应该服务器对其进行处理后发给客户端,不过demo 直接写私钥在客户端  处理了。

工具蛮给力的。

本来是用的RSA2  没啥问题  后来服务端 说不想换,所以用了RSA 

报错 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

错误在这里


1             PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(2                     Base64.decode(privateKey));3             KeyFactory keyf = KeyFactory.getInstance("RSA");4             PrivateKey priKey = keyf.generatePrivate(priPKCS8);

但是这里显然没有错啊?这到底是怎么回事呢??

经过在博客和StackOverFlow上查询,发现原来是这样的:(我的测试机比较早了,Android版本是4.0.3的,但是用的其它人的手机版本基本上都在4.3.x)

在Android4.1.0之前的版本,代码行

是工作正常的。但是在4.1.0之后,这个就不能正常工作了,需要将该代码改变成:

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

然后就研究了一下这个方法的作用,API上面说的是:“为指定提供程序中的指定算法生成 KeyFactory 对象”;

即:KeyFactory.getInstance(String algorithm, String provider);中的algorithm为“指定算法”,provider为“指定提供程序”。

或许是因为Android虚拟机Dalvik对KeyFactory的实现中,默认的provider在4.1.0之后由"BC"改为了其它的了。当然,仅是猜测。

还好最终解决了问题。