前言

在上一篇文章《微信支付之扫码支付、公众号支付、H5支付、小程序支付相关业务流程分析总结》中,分析和总结了微信支付相关支付类型的业务流程,这里作为与微信支付平起平坐不相伯仲的支付宝支付,当然也是每个公司少不了的第三方支付接入选择。

因此,本篇文章主要分析和总结支付宝支付中的扫码支付、H5支付相关业务流程。

概述

1. 电脑网站支付

电脑网站支付,也称扫码支付,是专门针对电脑而开发的一种支付方式,既在网页展示一个动态生成的支付二维码,用户通过手机支付宝扫码以后可实现支付功能的一种支付方式。

2. 手机网站支付

手机网站支付,是专门针对手机而开发的一种支付方式,跟扫码支付不一样的是,手机网站支付可以唤醒手机中安装的支付宝APP,直接通过支付宝APP实现支付功能;如果手机中没有安装支付宝APP,则会通过手机网页支付流程实现支付功能。

开发前准备

1. 电脑网站支付

电脑网站支付的流程目前分新老版本两种,新版本开发文档地址:

https://docs.open.alipay.com/270/105899/

老版本开发文档地址:

https://docs.open.alipay.com/62/103566

因本人所在公司目前所用的电脑网站支付依旧用的是老版本的支付功能,因此文中会对老版本的业务流程做一定分析。

老版本:

  1. 登录支付宝开放平台后台,查询到合作伙伴身份(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/

新版本:

  1. 登录支付宝开放平台,在开发者中心登记应用,获得应用唯一标识(APPID),最后提交审核,待审核通过后该应用可正式使用;
  2. 配置密钥。操作手册地址:https://docs.open.alipay.com/200/105310 ;
  3. 搭建和配置开发环境。电脑网站支付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. 电脑网站支付

老版本业务流程:

  1. 用户在电脑下单,选择支付宝支付;
  2. 商户后台生成订单,并准备和组合好调起支付宝支付所需的参数,最终形成跳转到支付宝网页的URL链接。
  3. 商户后台跳转至上一步形成的URL,既跳转至支付宝网页;
  4. 支付宝后台接收请求并处理;
  5. 支付宝网页展示支付二维码;
  6. 用户打开手机支付宝进行扫码支付;
  7. 支付宝后台检测到支付成功,跳转至商户回调页面,并向商户异步通知地址发送通知;
  8. 商户在回调页面获取回调信息,并作相关业务逻辑处理,并根据成功或失败的情况做跳转到到支付成功或失败页面的处理;
  9. 商户后台异步通知地址收到支付宝的异步通知,并做相关业务逻辑处理,最终返回success或fail的标识以告知支付宝商户后台已经收到通知。

新版本业务流程:

  1. 用户在电脑下单,选择支付宝支付;
  2. 商户后台生成订单,并准备和组合好调起支付宝支付所需的参数,调用统一下单接口;
  3. 支付宝返回前台页面请求需要的完整form表单的html(包含自动提交脚本),商户直接输出该HTML到前台页面,最终将支付二维码展示给用户;
  4. 用户打开手机支付宝进行扫码支付;
  5. 支付宝后台检测到支付成功,跳转至商户回调页面,并向商户异步通知地址发送通知;
  6. 商户在回调页面获取回调信息,并作相关业务逻辑处理,并根据成功或失败的情况做跳转到到支付成功或失败页面的处理;
  7. 商户后台异步通知地址收到支付宝的异步通知,并做相关业务逻辑处理,最终返回success或fail的标识以告知支付宝商户后台已经收到通知。

2. 手机网站支付

支付宝的手机网站支付目前也分新老版本两种,但由于惠庶网项目采用的是新版本支付,因此下面只介绍新版本的业务流程。

  1. 用户在手机端下单,选择支付宝支付;
  2. 商户系统按照手机网站支付接口alipay.trade.wap.payAPI的参数规范生成订单数据,并以包含form表单的HTML形式输出到前端页面;
  3. 前端页面通过form表单的形式请求到支付宝;
  4. 支付宝将页面跳转至支付宝收银台,如果用户手机安装了支付宝APP,则自动唤起支付宝APP,否则就调用支付宝网页支付;
  5. 用户输入密码进行支付操作;
  6. 支付宝后台检测到支付成功,跳转至商户回调页面,并向商户异步通知地址发送通知;
  7. 商户在回调页面获取回调信息,并作相关业务逻辑处理,并根据成功或失败的情况做跳转到到支付成功或失败页面的处理;
  8. 商户后台异步通知地址收到支付宝的异步通知,并做相关业务逻辑处理,最终返回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

支付宝支付之扫码支付(电脑网站支付)、H5支付(手机网站支付)相关业务流程分析总结的更多相关文章

  1. php实现支付宝在线支付和扫码支付demo

    ### php实现支付宝在线支付和扫码支付demo 背景:在做一个公众号时增加了h5端,需要接入支付,非微信环境,选择了支付宝,以下简单记录下实现过程,并做了简单的封装,拿来即可使用,注意:本项目只是 ...

  2. 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结

    最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...

  3. C#版微信公众号支付|微信H5支付|微信扫码支付问题汇总及解决方案总结

    最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存.代码在文章结尾处,有需要的 ...

  4. 微信原生支付 Native扫码支付( V3.3.7 版本)

    原文:微信原生支付 Native扫码支付( V3.3.7 版本) [尊重别人的劳动成果,转载请注明出处:一缕晨光工作室,www.wispdawn.com] 前言 辛苦研究三天,遇到各种困难,最终还是克 ...

  5. asp.net core 微信扫码支付(扫码支付,H5支付,公众号支付,app支付)之1

    2018-08-13更新生成二维码的方法 在做微信支付前,首先要了解你需要什么方式的微信支付,目前本人做过的支付包含扫码支付.H5支付.公众号支付.App支付等,本人使用的是asp.net mvc c ...

  6. 微信支付之扫码、APP、小程序支付接入详解

    做电商平台的小伙伴都知道,支付服务是必不可少的一部分,今天我们开始就说说支付服务的接入及实现.目前在国内,几乎90%中小公司的支付系统都离不开微信支付和支付宝支付.那么大家要思考了,为什么微信支付和支 ...

  7. 微信支付之扫码支付、公众号支付、H5支付、小程序支付相关业务流程分析总结

    前言 很久以来,一直想写一篇微信支付有关的总结文档:一方面是总结自己的一些心得,另一方面也可以帮助别人,但是因种种原因未能完全理解透彻微信支付的几大支付方式,今天有幸做一些总结上的文章,也趁此机会,将 ...

  8. 支付宝接口(扫码支付的原理)使用文档说明 支付宝异步通知(notify_url)与return_url

    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类. A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通 ...

  9. 【支付宝支付】扫码付和app支付,回调验证签名失败问题

    在检查了参数排序,编码解码,文件编码等问题后,发现还是签名失败,最后找出原因: 扫码付和app支付采用的支付宝公钥不一样   Pid和公钥管理里面:   开放平台密钥界面和开放平台应用界面的密钥应该一 ...

随机推荐

  1. H5中调起微信这么实现,如果未安装则提示未安装

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  2. Tensorflow 保存和载入训练过程

    本节涉及点: 保存训练过程 载入保存的训练过程并继续训练 通过命令行参数控制是否强制重新开始训练 训练过程中的手动保存 保存训练过程前,程序征得同意 一.保存训练过程 以下方代码为例: import ...

  3. PTA --- 天梯赛 L1-059 敲笨钟

    L1-059 敲笨钟 (20 point(s)) 微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉.为了增加敲钟的趣味性,还会糟改几句古诗词.其糟改的方法为:去网上搜寻压“ong” ...

  4. 【ABAP系列】【第六篇】SAP ABAP7.50 之隐式增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列][第六篇]SAP ABAP7.5 ...

  5. numpy array和mat的乘法

    1.mat()函数中矩阵的乘积可以使用(星号) *  或 .dot()函数,其结果相同.而矩阵对应位置元素相乘需调用numpy.multiply()函数. a = np.mat([1, 2, 3]) ...

  6. 【Python】【基础知识】【内置函数】【help的使用方法】

    原英文帮助文档: help([object]) Invoke the built-in help system. (This function is intended for interactive ...

  7. 安装破解MyEclipse2017CI

    一.下载 1.Myeclipse官网下载地址:http://www.myeclipsecn.com/download/ 2.破解补丁链接:https://pan.baidu.com/s/1Ge_fbm ...

  8. Django基础之视图(views)层、模板层

    目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...

  9. redis 单线程的理解

    单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程.其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会 ...

  10. 使用 vscode将本地项目上传到github、从github克隆项目以及删除github上的某个文件夹

    安装Git后,可以看到windows环境下有两个命令输入窗口Git CMD 和Git Bash Git GUI是可视化图形界面 Git中的Bash是基于CMD的,在CMD的基础上增添一些新的命令与功能 ...