上一篇文章我们已经详细讲解了微信支付,今天我们继续介绍支付宝支付,支付宝支付比微信支付简单,吐槽一下,另外支付宝的文档确实比微信的文档好很多,下面开始讲解支付流程。
1.首先给出官方文档的地址
支付宝整合流程
2、在开始集成开发之前,首先了解常见的接入方式和架构建议:
付款流程.png
在开始下一步之前,我先给大家展示一下网上的很多操作。
互联网上的代码.png
这一堆后面大概有几百行代码,支付宝的Demo好像也是这么做的。我估计有些新司机都有点疑惑了,真的有那么严重吗?集成第三方的时候,调用不是应该越简单越好吗?而且是大公司的第三方,不是吗?因此我需要出面解释一下,那些老司机,你们搞定了不能再这样吓唬新司机了。说真的,线上代码那么长,是因为他们要在本地生成订单签名。这个订单签名只是一个字符串,由订单信息、支付金额、订单号、商户信息等拼接起来的。
以下是APP支付请求所需参数
APP支付请求所需参数
App支付请求参数说明.png
但是我要告诉你,这些你都不需要,你只要理解就行。因为在实际开发中,支付订单签名和订单信息几乎都是在服务端生成的,因为后端的安全性比前端要好。在APP中生成是非常危险的。如果你的后端老板不帮你做,让你自己生成,我建议你跟他喝一杯,聊聊天,他多半会答应的。所以网上那些写了很多代码的人其实都是在本地生成签名的。
接下来的事情就比较简单了。
3.列表文件配置如下
代码语言:
复制
4.请求自身服务器获取订单签名字符串,然后调用支付宝SDK发起支付请求
代码语言:
复制
/** * 显示支付宝签名 * * @param aliPayBean 自己服务器返回的订单签名字符串 */ public void aliPayData(AliPayBean aliPayBean) { //支付宝支付请求所需的签名字符串 final String orderInfo = aliPayBean.getResult().getMessage(); Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask(PaymentActivity.this); Map
5.支付宝支付结果回调
代码语言:
复制
//支付宝返回数据handler @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { @SuppressWarnings("unused") public void handleMessage(Message msg) { switch (msg.what) { case SDK_ALI_PAY_FLAG: { @SuppressWarnings("unchecked") PayResult payResult = new PayResult((Map
注意:我这里只以客户端作为支付成功的标准,实际支付结果要以服务端为准。当我们调用支付宝支付的时候,支付宝会有两个回调,一个是APP回调,就是上面的那个,9000代表支付成功,另一个是支付宝服务器通知我们自己的服务器,所以我们自己的服务器也有回调。这样APP就可以请求后台接口来获取支付结果。