一、背景介绍:

业务需求需要,故加入支付宝支付功能。

二、如何实现。

1、关于APP调用支付宝支付的大致流程:

商家APP调用支付宝提供的SDK,SDK再调用支付宝APP内的支付模块。如果用户已经安装支付宝APP,商家APP会跳转到支付宝中完成支付,支付完后跳回到商家APP内,最后展示支付结果。如果用户没有安装支付宝APP,商家APP会调起支付宝网页支付收银台,用户登录支付宝账户,支付完后展示支付结果。

2、关于商家APP、商家后台、支付宝APP、支付宝支付后台四者的关系:

3、完整的系统交互流程:

4、实现细节。

(1)在蚂蚁金服开放平台创建应用,获取应用唯一标识(APPID)。

(2)集成支付宝Android SDK。导入alipaySdk-20180601.jar,Gradle添加依赖。

(3)在AndroidManifest.xml中声明权限:

android.permission.INTERNET android.permission.ACCESS_NETWORK_STATE

android.permission.ACCESS_WIFI_STATE android.permission.READ_PHONE_STATE

android.permission.WRITE_EXTERNAL_STORAGE

(4)Java后端集成支付宝服务端SDK。

(5)APP端调用支付接口。

注意:调用支付接口必须在工作线程中。

这里主要用到了PayTask类。PayTask类主要为商户提供订单支付、查询功能及获取当前开发包版本号。

核心代码如下:

final String orderInfo = (String) msg.obj;  //订单信息
Runnable payRunnable = new Runnable() {@Overridepublic void run() {//PayTask对象主要为商户提供订单支付、查询功能,及获取当前开发包版本号。PayTask alipay = new PayTask(OrderManagementActivity.this);//var1:app支付请求参数字符串,主要包含商户的订单信息,key=value形式,以&连接。从服务端获取。//var2:用户在商户app内部点击付款,是否需要一个loading做为在钱包唤起之前的过渡,这个值设置为true,将会在调用pay接口的时候直接唤起一个loading,直到唤起H5支付页面或者唤起外部的钱包付款页面loading才消失。//(建议将该值设置为true,优化点击付款到支付唤起支付页面的过渡过程。)Map<String, String> result = alipay.payV2(orderInfo, true);Message msg = Message.obtain();msg.what = ALIPAYSDK_PAY_FLAG;msg.obj = result;alipayHandler.sendMessage(msg);}
};
Thread payThread = new Thread(payRunnable);
payThread.start();

支付结果的获取:支付宝SDK对商户的请求支付数据处理完成后,会将结果同步返回给商户APP端。

这里需要注意:支付结果有同步通知和异步通知。有些时候会出现商户APP在支付宝付款阶段被关闭导致无法正确收到同步结果,此时支付结果可以完全依赖服务端的异步通知。

由于同步通知和异步通知都可以作为支付完成的凭证,且异步通知支付宝一定会确保发送给商户服务端。商户可以将同步结果仅仅作为一个支付结束的通知,实际支付是否成功,完全依赖服务端的异步通知。

(6)沙箱联调。

沙箱环境是蚂蚁金服开放平台提供给开发者调试接口的环境。因为需要在签约、上线后,才能在生产环境中调用接口,所以我们可以先在沙箱环境中进行调试。

注意:使用沙箱环境,必须在支付接口调用前,调用如下方法:

EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);

并且,在生产环境必须将如上代码注释。

如果不使用以上方法,默认使用生产环境。

在沙箱环境中联调,可以先在蚂蚁金服开放平台下载沙箱版支付宝APP。

使用沙箱联调还需要先去蚂蚁金服开放平台沙箱环境中获取沙箱环境对应的APPID、支付宝网关、应用公钥、支付宝公钥,并且使用这些参数在我们集成了支付宝服务端SDK的Java后端进行配置。

(7)使用支付宝提供的RSA签名验签工具生成生产环境中所需的应用公钥、应用私钥,并上传蚂蚁金服开放平台,得到支付宝公钥。

(8)将我们集成了支付宝服务端SDK的Java后端中的APPID、应用公钥、应用私钥、支付宝公钥、支付宝网关都改成生产环境中的。

(9)签约、上线。

(10)在生产环境中调试。

在生产环境中调试完毕,没有问题,整个功能完成。

Android APP如何实现支付宝支付相关推荐

  1. android支付宝支付微信支付封装,如何在Android App中集成支付宝和微信支付功能

    前言 本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友相信会是一个很好的参考,下面话不多说了,来一起看看详细的介 ...

  2. 在你的 Android App 里接入支付宝

    没想到现在 App 里集成支付宝是这么的简单,我还折腾了好久... 好了,开始,假设你已经完成了支付宝那些繁杂的申请啥的工作,进入开发了. 首先,去下载官方的 DEMO : App支付客户端DEMO& ...

  3. EasyPay(易支付)Android超简单微信支付宝支付接入

    今天我们来看看一个超简单集成微信和支付宝的支付框架EasyPay(易支付), 初学者都能一看就会一写就对的集成支付的方法. 首先还是先上gitHub链接 GitHub - kingofglory/Ea ...

  4. android app 快速接入支付宝流程(android studio)

       前一段时间做了商城app,增加了支付宝支付,感谢在遇到问题的时候,帮助我的大神们~    编程的路很长,学习的路也很长,总结才是提高的最快过程~ 一.快捷支付地址: https://b.alip ...

  5. android蚂蚁金服支付宝支付集成步骤

    此篇仅限于android客户端集成步骤,查看全部的请转https://docs.open.alipay.com/204/105296/ 自支付宝 SDK  15.5.7 开始,打包方式更换为 AAR, ...

  6. APP端接入支付宝支付接口

    支付宝支付常量配置 AlipayConfig public class AlipayConfig {// 商户appidpublic static final String APPID = " ...

  7. 支付宝支付开发实践总结-Java-支付宝当面付-支付宝小程序-二维码生成-支付宝退款-APP调起支付宝支付

    虽然目前相对较火的支付方式是微信支付,但是本人更喜欢支付宝支付,有积分拿,还可以部分提现免手续费,每月还有信用卡还款免手续费额度,捐步数,蚂蚁森林等等,扯远了,总之,对我来说,微信用于沟通,支付宝是支 ...

  8. Android安卓原生接支付宝支付PHP服务端SDK

    1.下载支付宝开发助手工具 下载地址:https://opendocs.alipay.com/open/291/introduce 生产密匙 打开开发助手 点击生成密匙,然后点击打开密匙文件路径后可以 ...

  9. App接入阿里支付宝支付,app如何开通接入支付宝支付功能,APP如何申请阿里支付宝支付

    注意时间,现在是 2021年8月12日 首先,需要注册一个支付宝企业身份的账号. 然后开始. 1.进入蚂蚁金服开放平台https://open.alipay.com/platform/home.htm ...

最新文章

  1. exchange无法收发邮件_Python使用POP3和SMTP协议收发邮件!
  2. Entity Framework 实体框架的形成之旅--实体数据模型 (EDM)的处理(4)
  3. 使用奇异值谱分析鉴定振荡成份
  4. 「转型新范式」第四范式2021发布会全程直播倒计时
  5. rust新版组队指令_Rust最新控制台命令2017
  6. java二维数组两个框代表什么_在java语言中,二维数组的两个中括号[][]分别表示()和()。...
  7. 为什么c++要“在头文件中声明,在源文件中定义”?
  8. xslt 定义表格html表格样式,使用 XSLT 作为 HTML 的样式表.doc
  9. 程序员是吃青春饭的,为啥还有这么多人想转行当程序员?
  10. 10天内构建良好的REST API的指南
  11. 微软官方出的各种dll丢失的修复工具
  12. openGL之API学习(五十五)凹凸贴图技术
  13. JVM和DVM的区别
  14. 平面波法用于一维光子晶体
  15. 对图片进行剪切,保留原始比例
  16. 使用WordPress搭建个人网站
  17. sqlite自动转mysql,Sqlite数据库转换为mysql工具SqliteToMysql使用教程
  18. 【易语言界面开发系列教程之(EX_UI使用系列教程 ——1-8节)】
  19. 物联网毕业设计 单片机火灾报警器设计与实现
  20. mysql禁止空密码登录_PhpMyadmin空密码登录被禁止登录问题解决办法

热门文章

  1. MSDN如何找到和打开
  2. SWFObject 2.0的使用说明
  3. PPC气箱脉冲除尘器
  4. 布袋除尘器过滤风速多少_布袋除尘器过滤风速一般多大?
  5. 使用Trinity进行转录组组装
  6. 【操作系统】进程:管程
  7. Mac 下用Homebrew安装Go
  8. C++版 - 剑指Offer 面试题36:数组中的逆序对及其变形(Leetcode 315. Count of Smaller Numbers After Self)题解
  9. 汇编中浮点栈寄存器st0~st7浮点计算fld压栈再计算的过程运行原理
  10. 【Linux】进程状态的理解