前言
在上一篇文章《微信支付之扫码支付、公众号支付、H5支付、小程序支付相关业务流程分析总结》中,分析和总结了微信支付相关支付类型的业务流程,这里作为与微信支付平起平坐不相伯仲的支付宝支付,当然也是每个公司少不了的第三方支付接入选择。
因此,本篇文章主要分析和总结支付宝支付中的扫码支付、H5支付相关业务流程。
概述
1. 电脑网站支付
电脑网站支付,也称扫码支付,是专门针对电脑而开发的一种支付方式,既在网页展示一个动态生成的支付二维码,用户通过手机支付宝扫码以后可实现支付功能的一种支付方式。
2. 手机网站支付
手机网站支付,是专门针对手机而开发的一种支付方式,跟扫码支付不一样的是,手机网站支付可以唤醒手机中安装的支付宝APP,直接通过支付宝APP实现支付功能;如果手机中没有安装支付宝APP,则会通过手机网页支付流程实现支付功能。
开发前准备
1. 电脑网站支付
电脑网站支付的流程目前分新老版本两种,新版本开发文档地址:
https://docs.open.alipay.com/270/105899/
老版本开发文档地址:
https://docs.open.alipay.com/62/103566
因本人所在公司目前所用的电脑网站支付依旧用的是老版本的支付功能,因此文中会对老版本的业务流程做一定分析。
老版本:
- 登录支付宝开放平台后台,查询到合作伙伴身份(PID),然后根据开发文档正确配置RSA密钥。密钥配置操作手册:https://docs.open.alipay.com/common/104740
老版本的支付接口叫及时到账接口,最原来的时候支付宝官方也是封装了一套开发demo的,后来由于新版本的到来,老版本的demo就被屏蔽了,我找了好半天都没能在官网文档中找到,因此只好到其他网站去找,于是找到了这篇文章《支付宝即时到账接口》,在这篇文章中找到了下载老版本demo的链接地址:
<a href="http://aopsdkdownload.cn-hangzhou.alipay-pub.aliyun-inc.com/demo/alipaydirect.zip?spm=a219a.7629140.0.0.ZXTiAo&file=alipaydirect.zip" >下载DEMO</a>
如果链接失效,则请访问我的百度网盘:https://pan.baidu.com/s/1scJRwAIhIfkXbhf8cegZkg;下载完毕后的demo结构如下:
上图中分别是MD5跟RSA两中签名版本的SDK,打开文件夹以后又分贝包含了C#、JAVA、PHP三个版本的内容,这里选用C#版本,在往里打开就是具体的项目结构了:
其中主要demo源码就封装在app_code中:
有了开发demo,再结合官方文档的指导,将文件夹app_code中的所有内容复制粘贴到实际开发项目中,就可进行实际开发应用了。官方操作文档:https://docs.open.alipay.com/62/104746/
新版本:
- 登录支付宝开放平台,在开发者中心登记应用,获得应用唯一标识(APPID),最后提交审核,待审核通过后该应用可正式使用;
- 配置密钥。操作手册地址:https://docs.open.alipay.com/200/105310 ;
- 搭建和配置开发环境。电脑网站支付SDK与Demo:https://docs.open.alipay.com/270/106291/
新版本的demo下载到本地以后的项目目录如下:
新版本的demo已经将大部分内容封装成了DLL,只保留了一个需要开发者自己去配置的类文件config.cs;因此开发前需要将BIn目录下的AopSdk.dll应用到项目中,并且将config.cs复制到项目中。
其余事情则按官方开发文档操作即可。
2. 手机网站支付
1.登录支付宝开放平台,根据实际需要创建应用,这里选择手机网站支付类型;配置相关参数后提交审核,审核通过后即可使用;开发平台操作手车URL:
https://docs.open.alipay.com/203/105910/
2. 搭建和配置开发环境。首先下载服务独胆SDK,并将相关SDK内容应用到开发项目中;SDK下载地址:
https://docs.open.alipay.com/203/105910/
手机网站支付的SDK跟电脑网站支付的最新版SDK是一样的,这里就不做重复介绍。
对于电脑网站支付、手机网站支付中都提到的密钥配置,支付宝官方文档提供了相应的配置工具,但是仅针对与RSA签名方式,RSA密钥下载及操作文档:https://docs.open.alipay.com/291/105971,下载了密钥生成工具后,解压压缩包:
双击点击RSA签名验签工具.bat:
最后将商户公钥上传至支付宝开放平台,保留商户私钥给到自己,下面就可以进行开发了。
业务流程
因公司项目接入的是支付宝电脑网站支付的老版本,所以这里会对新版本的业务流程做一个梳理。
1. 电脑网站支付
老版本业务流程:
- 用户在电脑下单,选择支付宝支付;
- 商户后台生成订单,并准备和组合好调起支付宝支付所需的参数,最终形成跳转到支付宝网页的URL链接。
- 商户后台跳转至上一步形成的URL,既跳转至支付宝网页;
- 支付宝后台接收请求并处理;
- 支付宝网页展示支付二维码;
- 用户打开手机支付宝进行扫码支付;
- 支付宝后台检测到支付成功,跳转至商户回调页面,并向商户异步通知地址发送通知;
- 商户在回调页面获取回调信息,并作相关业务逻辑处理,并根据成功或失败的情况做跳转到到支付成功或失败页面的处理;
- 商户后台异步通知地址收到支付宝的异步通知,并做相关业务逻辑处理,最终返回success或fail的标识以告知支付宝商户后台已经收到通知。
新版本业务流程:
- 用户在电脑下单,选择支付宝支付;
- 商户后台生成订单,并准备和组合好调起支付宝支付所需的参数,调用统一下单接口;
- 支付宝返回前台页面请求需要的完整form表单的html(包含自动提交脚本),商户直接输出该HTML到前台页面,最终将支付二维码展示给用户;
- 用户打开手机支付宝进行扫码支付;
- 支付宝后台检测到支付成功,跳转至商户回调页面,并向商户异步通知地址发送通知;
- 商户在回调页面获取回调信息,并作相关业务逻辑处理,并根据成功或失败的情况做跳转到到支付成功或失败页面的处理;
- 商户后台异步通知地址收到支付宝的异步通知,并做相关业务逻辑处理,最终返回success或fail的标识以告知支付宝商户后台已经收到通知。
2. 手机网站支付
支付宝的手机网站支付目前也分新老版本两种,但由于惠庶网项目采用的是新版本支付,因此下面只介绍新版本的业务流程。
- 用户在手机端下单,选择支付宝支付;
- 商户系统按照手机网站支付接口alipay.trade.wap.payAPI的参数规范生成订单数据,并以包含form表单的HTML形式输出到前端页面;
- 前端页面通过form表单的形式请求到支付宝;
- 支付宝将页面跳转至支付宝收银台,如果用户手机安装了支付宝APP,则自动唤起支付宝APP,否则就调用支付宝网页支付;
- 用户输入密码进行支付操作;
- 支付宝后台检测到支付成功,跳转至商户回调页面,并向商户异步通知地址发送通知;
- 商户在回调页面获取回调信息,并作相关业务逻辑处理,并根据成功或失败的情况做跳转到到支付成功或失败页面的处理;
- 商户后台异步通知地址收到支付宝的异步通知,并做相关业务逻辑处理,最终返回success或fail的标识以告知支付宝商户后台已经收到通知。
分析和总结
1. 支付宝支付的新老版本电脑网站支付、手机网站支付支付接口的请求参数中都有两个参数return_url和notify_url,return_url传的是支付完成后支付宝要跳转的同步回调地址,notify_url传的是支付宝支付完成后要发送异步通知的地址;但是支付宝向这两个地址发送请求的顺序是不定的,因此在两个地址的后台都需要做针对支付完成后订单业务逻辑处理的操作;区别在于return_url操作完成以后直接跳转到支付成功或失败页面,而notify_url则是返回SUCCESS或FAIL给到支付宝;
2. 支付宝电脑网站支付的老版本demo在官方文档已经找不到,因此如果不是原来项目中已经使用了老版本开发demo,都建议使用新版本demo进行开发;
3. 电脑网站支付新老版本、手机网站支付调起支付宝支付的区别:
电脑网站老版本:根据及时到账接口提供的请求参数说明,调用SDK生成可以调起支付宝支付的URL,商户后台直接做Respopnse.Redirect(URL)操作,既可调起支付宝支付。
电脑网站新版本:商户调用统一下单接口,统一下单接口返回完整form表单的HTML(HTML中包含自动提交表单的脚本),商户后台输出该form表单,即可调起支付宝支付。
手机网站新版本:商户后台向支付宝api发起支付请求,支付宝api返回完整form表单的HTML(HTML中包含自动提交的脚本),商户后台输出form表单。即可掉漆支付宝支付。
4. 对于手机网站支付,在用户将有form表单的HTML字符串输出后,自动提交脚本会向支付宝收银台发起请求,支付宝收银台会先判断用户手机上是否安装了支付宝APP,如有安装,则调起支付宝APP发起支付功能,如果没有,则跳转至网页版支付宝支付,实现支付功能。
如有发现错误及解释不当之处,欢迎大家指正。
参考文档
手机网站支付(新版):https://docs.open.alipay.com/203/105285/
电脑网站支付(老版):https://docs.open.alipay.com/62/104746/
电脑网站支付(新版):https://docs.open.alipay.com/270/105899/
转载请注明本文出处:https://www.cnblogs.com/luckyyang/p/9517402.html