Android接入支付宝实现支付功能
作者:刘某人程序员
博客:http://blog.****.net/qq_26787115
Android接入支付宝实现支付功能
我本来是想直接讲Android支付这一块的,包括支付宝,微信,其他第三方整合支付等,但是微信开放平台他对我的账号做了限制,所有我今天就先把重心放在支付宝的支付上,也算是写得尽可能详细些吧,毕竟是第三方的SDK,只要我们耐心的阅读文档和开发引导,这个其实不是很难的,我也是没有用过支付宝的支付,但是我相信,你看完这篇博客,也会对他了如指掌的,好的,我们正文开始
一.准备步骤
1.登录官网
他的官网就是蚂蚁金服的开放平台了,我们可以访问 蚂蚁金服开放平台 ,并且注册账号进行登录
2.创建应用
如果你是现有的应用直接接入支付功能的话,可以不看这里,我这里是因为需要讲博客所有重新创建了一个项目并且在Android Studio里也重新创建了一个项目,Android Studio里创建的项目我把他叫做SimpleMall,简单商城的意思,那在开放平台我们又是如何去创建应用呢,点击-进入我的开放平台-应用,就可以看到应用管理了。我们点击创建应用
创建成果之后有很多的选项包括需要你上传
这些先不管,我们这个时候可以看到已经拿到了APPID: 2017062807585767,这样我们就可以继续下一步的准备了
3.签约
大部分的功能需要签约才能使用,很遗憾,我这个个体户就不行了
4.配置**
配置秘钥是支付这一环节很重要的因素,也是分了两个步骤,生成秘钥和配置秘钥,这里使用的RAS非对称加密
生成RSA秘钥:
https://docs.open.alipay.com/291/105971
我们按照文档上来,首先是下载工具了,这里有win和mac两个地址,我是win,下载下来是这个样子的
我们按照图中的配置拿到了公钥和私钥
那我们可以配置了,我们找到项目详情
然后这里是两种方式,我们选择的是RSA方式么其实哪种方式都是可以的
到这里,这个也配置好了
5.SDK 下载
到这里,我们就可以直接去下载他的SDK了SDK下载地址:
http://p.tb.cn/rmsportal_6680_WS_APP_PAY_SDK_BASE_2.0.zip
这个压缩包下载下来什么都有,要找到Android的部分
二.SDK集成
我们现在就开始来把jar集成进去,支付宝给我们提供的就是一个jar,我们放进我们的工程里面去
并且在我们的app/build.gradle里配置一下
这样Jar就集成好了,然后配置一下清单文件
并且添加权限
如大于等于Android6.0,还需要动态申请下权限
如果你的项目需要混淆,需要添加混淆规则
嗯,可以说得上是比较简单的,我们继续
三.支付接口调用
其实支付宝的调用还是比较简单的,我们来看一下我的调用方式
可以看到我们并没有多少代码,调用起来
但是还是提示有错误,我们来看一下他的返回值
这是因为我们这个应用并没有去签约功能,所有并没有这个权限,好的,但是起码可以看出我们已经可以调用支持包的支付了,那我们继续来了解他的功能吧
四.Api
首先我们看下他提供的OrderInfoUtil2_0这个工具类
而我们一开始就需要构建订单参数列表,就是这个方法
这个方法我们来解读一下吧,他其实就是构建一个Map的键值对,都有哪些内容呢
app_id(key)
biz_content(内容)
charset(编码)
method(方法)
sign_type(签名类型)
timestamp(时间戳)
version(版本)
这个demo里面可能都是写死了,但是如果我们真的要在实际应用中开发支付的话,这里要填写正确,我们主要关心的有方法和签名类型还有版本这三个
方法有几个类型,要注意一下
其次就是签名方式了,有两种,RSA和RSA2
最后就是版本,版本可以通过PayTask去获取
而关于biz_content,就需要你们自己去定义了,我们来看下全部的参数说明
当我们拿到map之后就可以转换成一个string作为请求信息了,可以看到我们使用的是这个方法
他的本质就是拼接出最后的订单信息,如图
好的,现在订单详情已经有了我们就可以把订单加密了
这里的加密主要还是用到了SignUtils
而SignUtils则启动了Base64
这些你都可以在我写的demo里获取到的,我们继续分析就是了,当加密成功之后他会返回一个sign的字符串给我,这就是加密信息,然后通过 订单信息 & 加密订单这种公式就拼接出商品信息
好的,我们的下单需要在异步中操作,也就是我们所见到的Runnable
在这里他同样的是构建一个PayTask 区调用payV2,里面的参数就是订单信息和一个boolean值,具体参数可以参考
好的,当我们拿到结果后通过Handler回到UI线程
这里其实PayResult只是把结果几个关键信息提取出来了
我们如果想看详细的结果,可以打印resultInfo,好的,关于返回参数,可以参考App支付同步通知参数说明:
https://docs.open.alipay.com/204/105302
好的,事实上在实际开发中,要做的准备工作并不只是这么点,毕竟涉及到支付这个敏感话题,我这边也只是个人商户,没办法给大家展示正确的结果了,可能有些疏漏,但是大体就是这样,比微信稍微要简单点,我们下次细聊下微信支付。
SimpleMall下载:
http://download.****.net/download/qq_26787115/9882847
一命二运三风水,四修阴德五读书!
刘桂林
微信号 : Android_LiuGuiLin
新浪微博:@刘某人程序员