前言
这里开篇讲解一系列的android相关的移动支付。移动支付也称为手机支付,用户使用移动的设备,完成对所购买商品或者服务的支付功能。包括远程支付(网上支付、短信支付),近场支付(刷卡、滴卡、pos机)。
国内的移动支付方式:
支付宝,微信,银联,百度钱包,QQ钱包,财付通,京东支付
易宝支付,快钱支付,还有一些第三方的支付什么连连支付之类的
*的移动支付方式(这里直说一个) :paypal
流程
我们这里主要是来学习一下支付宝,微信支付,银联支付和paypal支付
现实生活中的支付就是:去商店浏览商品->把商品加入购物车->把购物车中的商品拿到收银台付款
上面的支付流程细化下来就是:
1.浏览商品
2.把要买的商品加入购物车
3.把商品拿到收银台,收银人员处理商品信息
4.告诉收银员支付方式
5.选择支付方式进行支付
6.处理支付结果(成功、失败、取消)
程序中的支付流程中:
1.浏览商品
2.把要买的商品加入购物车
3.把购物车中的商品信息和用户信息和支付方式等信息发送到自己服务器,服务器处理商品信息生成订单,并返回”支付串”给客户端
4.客户端拿着“支付串”,调用第三方服务(支付宝、微信、银联、paypal等)完成支付
5.处理支付结果(成功、失败、取消)
l 同步返回:支付后通知我们的客户端
l 异步通知:支付后通知我们的服务端
以上就是一般的移动支付的基本流程了,下面看这几个支付平台的详细介绍
android移动支付——支付宝支付
android移动支付——微信支付
android移动支付——银联支付
android移动支付——PayPal支付
支付宝支付
支付宝产品介绍:
其中包括了支付宝支付的:
场景介绍,产品流程,案例规范,准入条件(提交一些申请资料等事情),计费模式(平台支付费用等),简单的使用说明
支付宝支付指引请看支付宝平台的:
https://doc.open.alipay.com/docs/doc.htm?treeId=204&articleId=106079&docType=1
支付宝的详细接入流程:
其他的接入方式:
如果您已经接入了手机网站支付,除了“集成流程详解”中介绍的接入方式,支付宝推荐另一种更为便利的SDK接入方式——手机网站支付转为Native支付。
1.支付流程图
2.详细的请到开发者平台工具下载相应的demo
3.demo里面有
这需要公司去申请支付宝商家账号,申请成功后即可获得partnerId(合作者id),这个直接问公司要就行了。
密钥的获取,参照支付宝开发包中的openssl目录下“生成命令.txt”生成,生成我们自己的公钥和私钥,把我们的公钥提交到支付宝,支付宝再给我们返回支付宝的公钥。这一步需要先有支付宝商家账号,一般来说都是公司直接申请好的,问公司领导要就行了。
4.配置支付宝开发环境:
a)把支付宝Demo中的“alipaySdk-20160516.jar”复制到我们的项目中
b)把支付宝Demo中的清单文件中的权限复制到我们的项目中
<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
c)把支付宝Demo中的清单文件中声明的支付相关的Activity声明复制到我们的项目中
5. 查看支付宝Demo中的支付方法,用到我们的Demo中,如下
6. 订单数据的生成和数据的签名都会放到服务器上来完成,这样安全性比较高,所以orderInfo要从服务器中获取,可以使用okhttp开源工具来发送网络请求
一些相关的参数说明在下面说明
7.把上面那些id都配置好之后就可以运行demo支付了
8.类似这些支付请求的参数
在支付宝开发平台上也写的很清楚
9.客户端同步返回
10.支付结果异步通知
11.支付交易操作
12.支付宝支付还有很多功能,详情请看
https://openhome.alipay.com/developmentDocument.htm
13. 添加混淆规则
在商户应用工程的proguard-project.txt里添加以下相关规则:
-libraryjars libs/alipaySDK-20150602.jar
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep classcom.alipay.android.app.IRemoteServiceCallback{*;}
-keep classcom.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}