前言

在上一篇文章《微信支付之扫码支付、公众号支付、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. SecureCRT配置华为S5700交换机

    我准备从交换机中监控某台设备的流量,所以要配置交换机的某个口作为镜像口,用来下载另外一个指定端口的流量. 第一步:华为5700交换机 简而言之网口部分除了最后四个都是用来连接下级网络设备的,最后四个端 ...

  2. HNU_团队项目_需求分析感想(全员)

    以下为软件1701-“洋芋好想飞”的需求分析感想 PM QXS 需求分析过程中的前进与曲折令我深刻地认识到,需求分析是一个动态的过程,而非一个静态的任务结点. 比如最初我们设想可以为用户设定角色,但最 ...

  3. Tensorflow实战第十课(RNN MNIST分类)

    设置RNN的参数 我们本节采用RNN来进行分类的训练(classifiction).会继续使用手写数据集MNIST. 让RNN从每张图片的第一行像素读到最后一行,然后进行分类判断.接下来我们导入MNI ...

  4. 【神经网络与深度学习】【C/C++】使用blas做矩阵乘法

    使用blas做矩阵乘法   #define min(x,y) (((x) < (y)) ? (x) : (y)) #include <stdio.h> #include <st ...

  5. 【Python开发】增强的格式化字符串format函数

    自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和 ...

  6. OKR工作法 目标明确的写下来 - 结果记录- 校准

    1.o - objective - 旅程的目的地 - 方向 - 定性的 2.kr - key result - 旅途的下一跳和关键节点 - 定量的 - 需要停下来校准 ################ ...

  7. 小菜鸟之Oracle数据库

    select * from STUDENT; select * from mark; select * from COURSE; select * from teacher; --注释 select ...

  8. 2018.08.15【2018提高组】模拟A组 比赛总结

    总结 T1 这题我一看,哇!好简单啊! 直接建立每一个字母的映射就可以了. 我很快就打完了程序,跳到下一题. 等到比赛快结束时,我才发现了一个可怕的数据: 1 abcdefghijklmnopqrst ...

  9. c++学习笔记之类和对象(二、构造函数和析构函数)

    1.构造函数(Constructor):在C++中,有一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用(用户也不能调用),而是在创建对象时自动执行. 这种特殊的成员函数就是构造函 ...

  10. Robot Framework(一)安装笔记

    参考网址:https://www.cnblogs.com/yinrw/p/5837828.html因为自己安装了py,网上教程都是统一安装py2.7开始的. 所以这里总结下安装笔记:cmd命令界面进行 ...