android 支付宝SDK集成
来源:互联网 发布:日本制造业造假知乎 编辑:程序博客网 时间:2024/05/17 02:48
一、前言
最近做的项目刚好要集成支付宝,上网找了很多资料,介绍得感觉不是很全面,所以我经过这两天的集成,顺便记录下来,学习交流。需要的朋友也可以看看。主要集成还是参照了官方给出的demo,再参照demo进行封装,现在使用起来变得方便好多。而且文章里面还提到了集成过程中遇到的一些问题,当然最后也都解决了。
二、准备工作
支付宝开放平台上面也明确了,目前仅仅支持企业用户申请,所以个人开发者就没法使用到。希望支付宝早日可以开放给个人开发者。
支付宝的集成是相对比较麻烦,其中涉及到了很多东西要弄,要生成私钥公钥等等。文档里面也有详细说到如何如何生成那些东西,不过就是文档的内容量有点多了,看起来总抓不住前后,这里我稍作整理,把android需要用到的提取出来了。
1、PID
首先说一下就是支付宝的支付是这样的,企业用户申请了支付宝之后,支付宝就会提供一个合作者id,就是所谓的pid,是2088开头的16位纯数字;
2、支付宝账户
这个就是你用于收款用的支付宝账号,要跟申请时候同一个。
以下几个要运行我附件中的“移动支付接口智能SDK版"中,\openssl\bin文件夹下面的openssl.exe生成,这个是由支付宝提供的
3、RSA私钥:genrsa -out rsa_private_key.pem 1024
运行完命令行可以看到bin文件夹下面会生成私钥
4、RSA公钥:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
运行完命令行后可以看到生成了公钥
5、PKCS8编码的私钥:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
运行完后,将生成的东西拷贝下来放到文本文件里面就行。这后面要用到的!!包括begin跟end那两句一起存起来
三、支付过程
需要进行再封装的主要有下面这个类,做几点说明,AliPayParamsBO是我封装的一个实体类,因为我把刚刚上面讲到的那些PID、私钥啊等等都放在服务端了,这样会比较安全,就算别人反编译了你的项目,那也看不到什么东西,支付宝官方也是这样建议的。测试的时候,可以把这个AliPayParamsBO类,装进你生成的那些参数去测试就好啦,至于OrderBO类,也是我封装的一个类,里面主要包含的是这个订单相关的一些东西,比如商品名称、商品介绍,价格等等,这些在支付过程中都是必要的。
而需要强调一点就是,产生这个支付过程中,我先是构造好需要请求的参数,注意一点就是我在createOrderInfo()方法中对参数进行构造,但是 sign、sign_type 两个参数先不要参与,因为这两个参数不需要参与签名,等前面那些参数构造好了之后,签完名再将sign、sign_type 两个参数构造进去,再进行支付。
遇到的问题:整个过程还是比较顺利的,一开始我是使用了4.0系统的手机进行测试,也能够正常使用。但是跑给同事手机之后,问题出现了,居然出现了。。点击支付的时候始终唤不起支付页面,还报了 failure calling remote service 异常,然后就挺纳闷,查了代码发现好像没啥问题。
马上去打印log,看到了如下问题:
看了以上异常信息之后我的第一反应就是难道我的私钥弄错了,但想想4.0还是没问题的啊。后来就追查到了代码中,就在Rsa类中的sign方法,这是支付宝给出的类,我就在异常中将异常信息打印出来,果真
还是编码问题。
然后我就突然想到了上面生成的 “PKCS8编码的私钥”,然后将刚刚上面那个AlipayUtil类的pay方法里面的
签名时用的就是 “PKCS8编码的私钥”(原本出问题是用到RSA私钥),代码中改过来了。这次就行了啦,无论4.0以下还是以上通杀。界面如下:
- Android 集成支付宝SDK
- android 支付宝SDK集成
- android 支付宝SDK集成
- Android 集成支付宝SDK
- android 支付宝SDK集成
- android 支付宝SDK集成
- android 支付宝SDK集成
- android 支付宝SDK集成
- android 支付宝SDK集成
- Android 集成支付宝SDK
- Android APP 集成支付宝android 支付宝SDK集成
- android开发如何集成支付宝sdk
- 支付宝SDK集成
- 支付宝sdk集成
- Android 集成支付宝SDK实现快捷支付--详解
- Android 集成支付宝SDK实现快捷支付--详解
- Android 集成支付宝SDK实现快捷支付--填坑
- Android 集成支付宝SDK实现快捷支付--详解
- eclipse mac下常用快捷键
- ps快捷键大全
- 正确保存Android视图状态(下)
- 斐波那契数列
- 如何将pdf图片进行合并的操作
- android 支付宝SDK集成
- iOS开发之获取系统相册中的图片与视频(内带url转换)
- Mina学习的极其有效的推荐方法
- 14款中文分词开源软件
- Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换
- iOS 本地推送
- java中String,int,Integer,char、double类型转换
- wifi详解(一)
- 修正lua_path导致luac编译失败的问题