首先说说笔者的集成经历,一开始集成时,像往常一样百度了一下集成的方法,然后出来一大堆结果,以为应该会很简单,然而事实却并非如此。网上的集成方法很多都是旧版本的集成,现在支付宝已经对sdk以及demo进行了更新,虽说和旧版差别不是很大,不过对于不了解整个流程的开发人员来说,确实一个极大的痛苦;当然在集成过程中遇到各种各样的问题,甚至对一些流程根本就不了解,当然这跟笔者的水平有一定关系。最后给大家的建议是,不要心急,一步一步跟着流程走,其实集成是很简单的。本文介绍的是沙箱环境下的集成,到时候只需要在签约后将代码中的各种ID改为签约后的即可(集成app支付需要和支付宝进行签约)。笔者将整个流程分为两大部分,第一个是前期配置,第二个是开始集成。
前期配置
首先,进入开放平台后,我们点击应用
接着我们点击沙箱环境下的沙箱应用
在这边我们能看到支付宝给我们进行测试的应用ID和测试账号等,我们点击设置RSA2密钥(这边我已经设置好了,RSA(SHA1)可以不用设置)
那么如何设置密钥呢->查看密钥生成方法 进入之后我们下载对应版本后,运行“RSA签名验签工具.bat”(WINDOWS)或“RSA签名验签工具.command”(MAC_OSX),然后如下图勾选,点击生成密钥(注意保存)
然后我们将这边生成的应用公钥复制并粘贴到刚刚的需要设置应用公钥的地方,设置完成后会生成一个对应的支付宝公钥
好了,这边需要特别注意: ”应用公钥、应用私钥、支付宝公钥”这三个不要混淆、不要混淆、不要混淆。好了,第一部分的配置也差不多到这边了。
开始集成
流程
我们先来看下集成的整个流程
简单介绍一下整个流程(图中虚线标识商户链路,实线标识支付宝链路。)
步骤1:用户点击进行付款
步骤2:客户端从商户的服务端获取签名后的订单消息
步骤3:(商户将订单信息加签)返回签名后的订单信息
步骤4、5、6、7、8:这几个步骤是我们点击确认支付后自动执行的,不需要我们执行(其中第8步返回最终的支付结果(即同步通知))
步骤9、10:商户客户端将同步通知的支付结果发送至支付宝服务端并返回最终结果(这两个步骤可以不执行,因为我们后面还有步骤12的异步通知)
步骤12、13:根据我们设置的异步通知地址(下面会介绍)获取支付结果
好了,流程差不多就是这样,接下来我们结合代码开始实战。
编码
我们下载支付宝提供的SDK和DEMO(更新时间:2017/05/11) 解压导入Android Studio后我们打开PayDemoActivity
如果我们只想进行支付功能的话,只要设置上图的APPID和RSA2_PRIVATE即可。当然,这是沙箱环境,我们需要在onCreate下添加这一句:
EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
位置如下:
当然整个支付的精华莫过于此处(代码已给出注释)