支付宝快捷支付集成里的坑


  移动支付是今年的热门话题,快的打车和滴滴打车两款软件的PK,给广大用户带了不少的优惠,也让越来越多的人学会了在手机上使用支付宝和微信支付。

  今天来介绍一下如何在手机端集成支付宝,支付宝的开发者是不允许个人申请的,只能以企业用户注册。本来集成不是件难事,但是如果你恰好有个4.1以上系统版本的手机,有个坑需要注意一下。

  首先申请支付宝移动快捷支付,  访问  www.alipay.com ,登录后点击我的商家服务。下载集成文档。参见 http://club.alipay.com/read.php?tid=9976972


   文档下载地址: 点我下载

  如何集成我们这里不做赘述,支付宝的接入和使用规则中已经说的很详细了。重点说一下我遇到的两个坑。

 

  坑一:版本问题导致参数错误
  按照网上一位同学的博客http://www.cnblogs.com/qianxudetianxia/archive/2012/04/04/2432406.html 参考集成,总是报参数错误。后来发现支付宝新版本更改了生成订单中的seller字段,更改为seller_id 。汗,居然不向下兼容。


  坑二: 调用支付宝客户端,返回错误码4000 
  我的手机是NOTE 2,系统版本4.1.1 ,跑测试demo死活过不去。提示异常“java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error”
   
   开始以为是我的秘钥有问题,后来找到一个靠谱的答案:

  在网上找了下,发现stackOverFlow有个比较符合这个问题的答案:
 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!

Jelly Bean throws an exception:

 说是是jelly Bean也就是Android4.1版本的问题。
 后来我看了下,确实以前我们做适配的机子基本都是4.0以下的。
 然后这个Note2刚好是4.1.1的
 然后根据下面的一个Answer
PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(s_privateKeyIn1t);
KeyFactory keyFactory = KeyFactory.getInstance("RSA", "BC");
PrivateKey privateKey = keyFactory.generatePrivate(privSpec);
 即在生成keyFactory时,多一个参数“BC”,具体干嘛也不是很清楚,可以参考api文档。就可以成功调起支付宝了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值