当我们在商城购物时,可能会用到在线支付,你会发现无论你是哪个银行的银行卡接口中都会支持,在做项目开发时,也经常会用到支付接口,我们当然希望支持所有的网银,但这需要我们针对每个银行开发一套接口吗?不是不可以而是没必要,使用第三方的支付接口就可以满足,第三方支付平台已经与各大银行进行签约,网站主只需要在此平台申请一个账号即可支持几乎所有的种类的银行卡信用卡的交易,当然是可能支付少量的手续费的。什么是第三方支付呢?

所谓第三方支付,就是一些和各大银行签约、并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支付,由第三方通知卖家货款到达。

目前提供第三方支付的机构很多,常见的有支付宝、财付通、快钱、网银在线、易宝支付、云网等各大支付平台。网站如果需要实现第三方支付首先应该向第三方支付平台申请一个账号并签署协议,协议生效后第三方支付平台将为其开通在线支付功能,通过程序将接口集成到网站中。

第三方支付原理图:

以上简要说明了支付过程,当然其中省略了一些步骤(比如购物车,订单等),我们重点来看支付流程。

1用户向商城网站发起确认订单的请求

2商城网站接收到请求保存订单数据到数据库或其他存储介质

3返回订单确认页面,页面上应该显示订单金额等信息

4用户确认支付,发起支付请求。注:支付请求是发送到支付网关(比如支付宝、网银在线)而不是发送到商城网站。

5显示支付页面

6用户填写认证信息(账号密码等)提交

7这里有两个步骤一个是扣款成功后页面跳转到支付结果页面(展示给用户),另一个是支付通知,这两步没有先后顺序可能同时执行,商城网站接收到支付通知后根据验证规则验证信息的有效性,并作出相应的更改操作(例:有效则更改订单为已付款状态,无效则记录非法请求信息)。

以支付宝为例:如果实现在网站中集成支付宝接口,首先要有一个支付宝账号,接下来向支付宝申请在线支付业务,签署协议。协议生效后有支付宝一方会给网站方一个合作伙伴ID,和安全校验码,有了这两样东西就可以按照支付宝接口文档开发支付宝接口了,在上图的几个步骤中只有4和7两个步骤在商城与支付网关之间有信息交互。在步骤4中指将数据发送到支付网关(支付宝),在步骤7中是的通知验证部分,验证网关请求网站某地址,网站按验证规则对信息进行验证记录并作出响应,我们几乎在开发任何支付接口时,重点是这两部分的开发,明白支付接口原理,开发在线支付接口就不难了。

支付宝目前提供了,担保交易、标准即时到帐、双功能等几种接口,只是在功能上有些差异,网站集成方式是一样的。以标准即时到帐接口为例,在与支付宝签署协议后,还需要几个步骤才能完成集成。

进入支付宝后台在商家服务菜单下有两个链接:

分别可以查询到PID和Key,依次点击我的产品,技术服务将会显示:

选择“我要自助集成”接下来会看到 下载技术文档 的链接,点击下载技术文档。

在下载后的文件中有标准支付宝交易服务接口、商家工具、接口集成指南等接文档,另外还有几种语言写的demo。我们可以根据接口文档按规则全新开发,也可以再demo基础上修改集成到网站,需要注意的是开发支付接口需要在公网(服务器必须可以通过外网访问)才可以完成整个调试过程,如果服务器在外网访问不到,则无法接收到支付通知。

看一下demo中每个文件的作用:

├alipay_notify.php┈┈┈┈支付宝通知处理类文件

├alipay_service.php ┈┈┈支付宝请求处理类文件

├alipay_config.php┈┈┈┈┈┈基础信息配置文件

├index.php┈┈┈┈┈┈┈┈┈┈快速付款入口模板文件

├notify_url.php ┈┈┈┈┈┈┈服务器异步通知页面文件

├return_url.php ┈┈┈┈┈┈┈页面跳转同步通知文件

这里已经下载好了(会附加在本文附件中),为了便于调试增加修改了若干文件,并增加了一张数据表保存订单信息(见附件),我们修改一下配置文件完成一个测试过程。

alipay_config.php是基础信息配置文件,我们需要将在支付宝后台获取的PID与Key写入到配置文件中。

配置项:

    其中方框内的数据是我们需要重点修改的。支付通知地址与返回地址的区别,前面已经提到,在步骤7中有两项:支付结果页面与支付通知信息,支付结果页面是用户支付完成后会自动跳转到这个地址这里是返回地址($return_url)。
    支付通知地址同样是用户支付完成后,支付宝会请求该地址($notify_url),但是支付通知是支付宝服务器直接请求,不会被用户看到。这两个地址必须是以http开头的完整路径格式为了完成测试过程,这里已经将/pay/alipay/notify_url.php改写,将$notify_url设置为可访问到此文件的URL即可。这几项配置好后再根据数据库脚本(pay/orders.sql)创建一张数据表。并根据数据库的配置信息修改mysql_config.php。通过对支付宝提供的demo做简单修改就可以完成创建支付请求(步骤4)了,这里更改了支付首页等页面(见附件pay目录)。我们先测试一下:


点击“下订单”按钮


根据上图的流程现在已经走到了步骤3,此时已经生成了订单号(为了便于测试使用了时间戳作为订单号),并且将订单信息写入到数据库。我们看一下数据库:

数据库中增加了一条“订单信息”。

如果点击“确认支付”按钮或者确认支付 链接将会跳转到支付宝页面,点击按钮时通过表单POST方式将信息提交到支付网关,由于支付请求数据无需让用户看到,这里都写在隐藏域中了。确认支付 链接是通过URL传参,因为支付宝接口允许以POST或者GET方式提交,所以两种方式都可以。把参数提交给支付网关后,页面跳转到到支付页面。我们看到如下图所示:

我们看到支付宝为我们提供了两种支付方式,一种是通过支付宝账户支付,另一种是通过银行卡支付。例如选择使用银行卡支付,填写邮箱或手机号即可跳转到下一个页面进行选择银行,支付宝几乎支持所有的银行卡支付,同时有信用卡和网点方式付款,选择对应的银行下一步按提示付款即可。付款完成后页面会返回到我们在配置文件中配置的$return_url地址,同时“订单状态”也会发生改变。

注:测试时如果没有在外网测试(即支付通知地址无法在外网访问)则支付通知无法被请求到,无法自动完成订单状态的修改。
      也有的开发者在浏览器的跳转页面做订单状态的更改(不推荐这样做,因为浏览器端服务器无法控制,比如突然断网,浏览器关闭等)

支付宝接口规范可参考附件和示例文件,里面已经有了比较详细的说明,比如要对支付通知进行响应等。

如何创建支付请求?

在前面的测试中我们点击了“确认支付”将信息将信息提交到了支付宝的支付网关,我们可以思考一下应该发送哪些参数给支付网关。关于请求参数列表可以参考附件中的标准支付宝交易服务接口(专用于防钓鱼网站).Pdf中的3.2.2。需要注意的是并不是我们把这些参数原封不动的提交到支付宝就可以了,为了保证数据安全支付宝目前使用的是MD5签名防止数据篡改机制。

在提交数据前需要将需要提交的数据以一定规则(见接口文档)组装成字符串,加上安全校验码(Key)组成一个新字符串,通过MD5生成一个32字节的签名,我们提交支付请求时还需要把这个签名也提交过去。看一下表单源码

支付宝接收到参数后会进行验证请求参数的合法性,验证无误后将显示支付页面,否则提示错误。

如何验证支付通知?

在用户支付完成后,支付宝会请求网站支付通知地址(这个地址应在创建支付请求时作为参数传递过去)。返回参数列表参见标准支付宝交易服务接口(专用于防钓鱼网站).Pdf3.3.1。支付宝的返回数据中同样有一个签名串(采取和支付请求同样的签名方式),在支付通知文件中首先要对数据进行签名验证。除了验证签名,还需要将参数中的notify_id提交到支付宝的验证网关支付宝系统这个通知的真实性,通知验证。支付宝系统判断通知是否是自己发送,如果是以字符串格式返回 true,否则返回false,我们通过验证服务器返回的数据验证请求的真实性,如果都验证通过则可以进行更改订单数据、给用户发送邮件通知等操作。关于验证签名可以看一下通知文件中的源码。带demo中将参数中的notify_id提交到支付宝是通过POST方式提交并取得返回数据,代码片段:

这里重点就是fsockopen函数,在发送电子邮件时我们已经接触过,通过此函数打开套接字连接,类似于以前学过的fopen函数返回的是一个文件句柄,之后可以使用文件函数( fgets()、fgetss()、fputs()、fclose() feof()等)对其进行操作,代码中使用了fputs()(同fwrite())函数,写入数据来模拟表单以POST方式提交数据,最后通过fgets()函数获取返回的数据保存到数组中,最后进行验证,具体参照附件中的源码。

 支付宝接口示例与文档

原文链接 : http://www.com133.com/44

支付宝第三方在线支付接口详解相关推荐

  1. python 微信支付接口 详解_Python支付接口汇总大全(包含微信、支付宝等,长期更新、欢迎补充)...

    wzhifuSDK- 由微信支付SDK 官方PHP Demo移植而来,v3.37下载地址 学习Python中有不明白推荐加入交流群 号:864573496 群里有志同道合的小伙伴,互帮互助, 群里有不 ...

  2. 对接支付宝App支付和网页支付接口详解

    之前在项目中使用过支付宝的沙箱测试支付和实际开发支付,是关于App对接支付宝接口的,由于前段时间有朋友询问怎么对接网页支付,通过研究支付包的开发文档,在这里总结一下对接支付宝的App支付接口和网页支付 ...

  3. SpringBoot整合支付宝支付接口 详解 (有源文件)

    目录 1.简介与支付接口运行原理 2.基本配置说明 3.支付接口实现 4.整合后沙箱测试 1.简介与支付接口运行原理 简介: 现在与钱有关的项目都离不开支付,现在就来介绍一下如何对接支付宝接口.演示项 ...

  4. 对接银联支付接口详解java版mac开发

    首先,这是一篇工具类的文章了,也是为了备忘,需求就是微信公众号的开发后台对接支付,有银联,支付宝,微信等,我负责写银联的接口.明天大年三十,今天在公司码完字也要灰走了,祝大家新年快乐,发大财. 先说一 ...

  5. 【在线支付】在线支付代码详解

    前言:        上一篇文章中([在线支付]在线支付流程分析)说道,为了保证数据安全,网站把源数据和hmac码发送到第三方,那么,在代码中是如何实现的呢?接收到付款成功的消息,又是如何响应的呢?以 ...

  6. 个人免签支付接口详解

    这里我们用到的个人免签支付下单接口如下: 请求地址:https://www.gogozhifu.com/shop/api/createOrder 请求方式:POST/GET 对应的参数列表如下: 参数 ...

  7. 支付宝在线支付接口申请教程

    最近业余时间开发做了一个代理网站 http://proxy.ithomer.net,想接入在线支付接口. 本文调研了支付宝,财付通,网银支付,下面将介绍接口申请教程. 1)支付宝申请 1.通过支付宝网 ...

  8. 在非淘宝店网站的个人网站如何利用支付宝在线支付接口?

    QQ:<3O⑤⑦10439>支付宝免签约即时到帐接口关联|各种行业,网站,商城,均可实现在线支付, 想在网站上实现移动支付, 扫码支付,即时到帐,担保交易,手机网站支付, 它是最著名的程序 ...

  9. PHP在线支付接口集成教程

    网上支付(支付宝,财付通,易宝,银联)是电子支付的一种形式,它是通过第三方提供的与银行之间的支付接口进行的即时支付方式,这种方式的好处在于可以直接把资金从用户的银行卡中转账到网站账户中,汇款马上到账, ...

  10. Android商家端线下支付流程详解

    对于Android应用客户端来说,通常情况下的支付方式分为微信和支付宝两种,实现方式是通过接入微信和支付宝的SDK,调用手机已安装微信和支付宝应用来完成支付操作,并将支付结果回调给该应用,根据支付结果 ...

最新文章

  1. map按value值查找——find_if的使用(转载)
  2. 浮点数能进行取模运算吗?(不行,暂时只能是两个整数之间)
  3. python爬虫 爬取有道翻译详解
  4. 数据库SQL语言从入门到精通--Part 3--SQL语言基础知识
  5. 三、PHP框架Laravel学习笔记——路由参数、重定向、视图
  6. JS中使用bignumber处理高精度小数运算
  7. winfrom 从网页中通过源代码截取文章
  8. mysql 生成xml 表头_Spring Boot + MySql + Mybatis generator 自动生成mapper/entity/xml文件
  9. 小米手表外观官宣:方表盘+黑银两色
  10. Spring相关笔记整理
  11. Linux: Shared MIME
  12. 如何写出布局好看而且漂亮的博客
  13. 使用Eclipse编译运行MapReduce程序_Hadoop2.6.0_Ubuntu/CentOS
  14. 编译原理 词法分析实验 流程图传不上去,不传了
  15. 365天历史时间顺序读经计划表
  16. HDU6578 2019HDU多校训练赛第一场 1001 (dp)
  17. DS18B20温度采集报警系统,原理及汇编、C语言实现
  18. 记录自己遇到的问题1
  19. 微信公众号支付WeixinJSBridge
  20. 输入一个数字,在数组中查询是否存在,如果存在则显示其索引

热门文章

  1. 停车小程序,智能停车场小程序,智能停车源码
  2. 云计算和python哪个好就业_盘点linux云计算就业方向
  3. 虚拟机安装未能启动服务器,虚拟机里安装Windowsserver2016,部署wsus出现无法启动和配置...
  4. 2019Windows7 虚拟机安装系统图文教程
  5. 2021-02-01 25 个常用 Matplotlib 图的 Python 代码
  6. 用拉普拉斯变换求零状态响应_【解析几何】椭圆的仿射变换(伸缩变换)
  7. python画双坐标图_Python画双坐标曲线图
  8. 分治法 --- 大整数的乘法
  9. 虚拟主机服务需要备案吗?推荐使用哪种进行建站?
  10. android 表情包下载,超级表情包app下载