app支付宝接入流程图_Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)...
一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多家成熟的移动支付提供商,阿里就是其中之一。
笔者在此总结了下阿里旗下支付宝Android SDK支付的接入流程,供后来者参考。
接入流程如下:
1 签约成为支付宝商户
签约地址:https://b.alipay.com/,
只有成为签约商户的开发者才能具备集成支付宝app支付的资格。
签约资料:1)营业执照 2)APP说明文档 3)商户经营信息、商户联系人等信息
必要时还需提供APP apk以备审核。审核通过后即可进行代码集成。
审核通过后,可得到支付宝分配的商户号等信息。
2 客户端代码集成准备
2.1 导入jar包资源
目前最新版支付宝开发jar包下载地址:http://xiazai.jb51.net/201611/yuanma/alipaySdk_jb51.jar
下载后将之拷贝libs目录,Eclipse会自动添加依赖,Android Studio需在app的gradle中添加一行
compile files('libs/alipaySdk-20160223.jar')
点击右上角:Sync Now,稍等片刻
2.2 修改AndroidManifest.xml清单
声明必要Activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind" >
android:name="com.alipay.sdk.auth.AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind" >
添加必要权限
2.3 添加支付宝混淆规则
-libraryjars libs/alipaySDK-20160223.jar
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}
3 客户端代码集成
支付宝交互流程示意图
流程图白话版解释
1.app携带支付信息调用支付接口请求支付宝客户端调起支付界面;
2.用户操作,输入密码支付,支付成功;直接返回取消支付;出现错误,支付失败;进入支付界面,但输入密码支付,支付待确认;
3.支付宝客户端将支付结果告诉app客户端,商户服务器通知app服务器支付结果;
4.app客户端处理支付结果;
5.app服务器处理支付结果。
支付宝的支付流程较之微信的支付流程图少了一步app服务器端订单的生成,但是在其demo代码中是推荐使用app服务器进行sign签名过程的,于是笔者索性是按照的微信支付的流程(微信支付交互流程)去集成的。
•客户端代码得到用户购买的商品信息,将之传给自己公司app服务器,参数包含但不限于以下:
params.put("money", payMoney);// 商品金额,单位:元
params.put("goodsname", goodsName);// 商品名称
注意:支付宝支付的人民币单位和微信支付,银联支付稍有不同,需以:元 作为支付单位。其他两者支付单位为:分
其他参数均交给咱们app服务器处理即可,详细参数请点击:https://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103663&docType=1
•app服务器参考上述详细参数链接,得到sign(支付签名信息)字段并返回sign字段给手机客户端;
•手机客户端使用sign签名信息在非UI线程调起支付客户端进行支付;
用户操作:输入密码进行支付;返回键取消支付;进入支付界面,用户未进行支付,用户返回,待支付;网络无连接支付失败等;
•客户端得到支付结果;
•支付宝服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)
这样做的好处:签名逻辑在服务器完成,app无需暴露公钥和私钥,更安全。同时也是demo中的推荐做法。
更详细的支付宝接入交互流程解释请点击:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.7WO30X&treeId=59&articleId=103658&docType=1
4 客户端代码示例
支付调起代码(须在子线程)
new Thread() {
@Override
public void run() {
super.run();
PayTask payTask = new PayTask(mActivity);
String result = payTask.pay(signInfo, true);
Message message = mHandler.obtainMessage();
message.what = PAY_RESULT;
message.obj = result;
mHandler.sendMessage(message);
}
}.start();
支付处理代码(UI线程)
/*支付宝支付结果码*/
private static final String PAY_OK = "9000";// 支付成功
private static final String PAY_WAIT_CONFIRM = "8000";// 交易待确认
private static final String PAY_NET_ERR = "6002";// 网络出错
private static final String PAY_CANCLE = "6001";// 交易取消
private static final String PAY_FAILED = "4000";// 交易失败
/*内部类,处理支付宝支付结果*/
static class AliPayHandler extends Handler {
private SoftReference activitySoftReference;// 使用软引用防止内存泄漏
public AliPayHandler(PayActivity activity) {
activitySoftReference = new SoftReference(activity);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
PayActivity activity = activitySoftReference.get();
AliPayResult payResult = new AliPayResult((String) msg.obj);
String resutStatus = payResult.getResultStatus();
Log.d(TAG, "statusCode = " + resutStatus);
if (resutStatus.equals(PAY_OK)) {
activity.paySuccessed();
} else if (resutStatus.equals(PAY_CANCLE)) {
activity.payCanceled();
} else if (resutStatus.equals(PAY_NET_ERR)) {
activity.payFailed(NETWORK_ERR);
} else if (resutStatus.equals(PAY_WAIT_CONFIRM)) {
activity.payWaitConfirm();
} else {
activity.payFailed(UNKNOW_ERR);
}
}
}
注:AliPayResult.Java来自支付宝demo中的PayResult.java
至此,集成支付宝SDK结束。祝各位集成支付宝支付成功!
结束语
app服务器接入注意事项:官方给出的填写rsa公钥的地址有误,无论填写什么都提示:公钥格式错误。需要移步至:支付宝公钥填写正确地址填写
按照惯例,附上支付宝SDK接入的官方demo下载链接:https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
本文标题: Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
本文地址: http://www.cppcns.com/ruanjian/android/171409.html
app支付宝接入流程图_Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)...相关推荐
- Android App支付:支付宝SDK接入详细指南(附官方支付demo)
Android App支付:支付宝SDK接入详细指南(附官方支付demo) 前言 一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多 ...
- Android App支付系列(一):微信支付接入详细指南(附官方支付demo)
写在前面 一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统显然是不明智的,国内已经有多家成熟的移动支付提供商,腾讯就是其中之一.梳理了下微信支付的接入,今天给大家分享下腾讯旗下的 ...
- Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
前言 一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多家成熟的移动支付提供商,阿里就是其中之一. 继< Android Ap ...
- 支付宝SDK接入详细指南(附官方支付demo)
前言 一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多家成熟的移动支付提供商,阿里就是其中之一. 继< Android A ...
- android 原生开发 3d地图 下载_arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)...
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- Unity3d Android SDK接入解析(四)通用的Android SDK接入中间件
一.前言 接入Android SDK正式告一段落,在这段时间里面,依次接入了华为.应用宝.小米.360等等大大小小十来个SDK,也算对Unity接入渠道SDK有了较为全面的理解,对各个渠道的坑也算深有 ...
- 阵列信号DOA估计系列(二).导向矢量与空间FFT(附代码)
阵列信号DOA估计系列(二).导向矢量 在DOA估计里面,经常会看到导向矢量这个名词,也有的地方叫方向矢量,方向矩阵,基本上都是array steering vector 的翻译. 本文首先对均匀线阵 ...
- app闪退后重启_Android app 如何实现崩溃后自动重启
Android app 如何实现崩溃后自动重启 由于有很多场景需要让自己的app一直保持运行状态,比如客户的launcher,或者定制app. 都希望在自己的app崩溃之后还可以自重启. 对于这样子 ...
- 微信支付系列(二)之订单的创建
一.创建订单需获取商品id和用户id 1.生成一个订单号,订单号要唯一 2.商品信息和用户信息需要远程RPC调用 3.将订单保存到数据库中 4.返回订单号给前端 二.具体代码实现 1.用户id可以根据 ...
- arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
最新文章
- File Filter用法
- c++ fhog学习资料整理
- 牛客小白月赛5 E 面积 计算三角形面积模板 波尔约-格维也纳定理 匹克公式
- golang ffmpeg 做网络直播
- MySQL查询之聚合查询
- python邮件图片加密软件_用Python发一封图文并茂的邮件
- C++ 面向对象 一
- 机器人图规划算法研究现状简述
- python改变图片像素值大小_Python之修改图片像素值的方法
- c语言文学研究助手报告,文学研究助手数据结构报告
- 计算机前端开发论文参考文献,web前端论文参考文献.doc
- 《黑客秘笈——渗透测试实用指南(第2版)》—第1章1.5节构建渗透测试环境...
- 图的邻接(链)表表示法 Graph adjacency list representation
- 将姓名转为拼音,首字母大写
- 《高性能iOS 应用开发》之降低你 APP 的电量消耗
- 华硕Android原始密码,华硕路由器默认密码是多少?ASUS路由器初始密码介绍
- nginx与react配合二级路由
- explain 解析
- 【新年计划】过去的2021,2022年的期许
- Sublime Text 3 写js智能提示插件
热门文章
- Windows 7设备管理器有未知设备怎么办?
- CCF CSP 中国计算机学会-CCF计算机软件能力认证(计算机水平测试)-简介-详情
- ckfinder java 配置_JAVA里使用CKEditor和CKFinder的配置
- vue 渲染函数处理slot_Vue渲染函数详解
- linux测试上下行最大网速和实时网速
- Asp.Net 密码加密技术
- ceph rbd mysql_ceph-rbd使用
- 【Spring】IoC,DI,两种代理方式,AOP定义和使用
- UNIX网络编程---守护进程和inetd超级服务器(十三)
- 11月总结#nobody