在很多平台都是调用第三方支付平台,比如支付宝,微信,银联电子支付等。你是否真的了解第三方支付呢?
大家每天在使用支付宝时,是不是感觉很蛮简单的?不外乎就是绑个卡,验一下支付密码,银行卡的资金就被扣掉了。
但是背后涉及的技术架构其实很复杂,比如从外部合作来说,涉及到银行,银联,网联,商户,用户,公安,电信运营商,安全防控公司,服务器运营商等等。
如果从具体业务来说,大致分成入金类业务,出金类业务,清算对账类业务,差错处理类业务。支付业务涉及的方方面面很多,技术架构其实较复杂。
今天,给大伙介绍第三方支付。
一、第三方支付介绍
1、第三方支付步简介
第三方支付
,是一些具备实力和信誉保障的第三方独立机构提供的交易支付平台。买方选购了商品后,使用第三方平台进行付款,由第三方通知卖家货款到达。
目前市面上支持第三方支付的平台有很多,商家通过和第三方签署协议,并获得一个账号,协议生效后,支付平台为商家开通支付功能,通过程序将接口集成到网站中。
使用第三方支付可以统一资源,商家可以很容易的实现与几乎所有种类的银行实现交易服务。
2、第三方支付步骤
调用第3方支付,具体来说有如下步骤:
1.用户向商城网站发起确认订单的请求。
2.商城网站接收到保存订单数据到数据库。
3.返回订单确认页面,页面上应该显示订单金额信息。
4.用户确认支付,发起支付请求。支付请求是发送至支付网关,不是商城。
5.显示支付页面。
6.用户填写认证信息(账号密码)提交。
7.这里一共两
步,一个是扣款成功后页面跳转到支付结果展示页面,另一个是支付通知,这两步同时进行,商城网站接收到支付通知后根据验证规则验证操作信息的有效性。
有效则为订单已付款状态,没有则为非法请求信息。
3、第三方支付的好处
第3方支付的好处在于:
1.能够解决买家卖家的信任危机,降低交易风险。
2.批量处理大量的电子小额交易,降低支付成本。
3.能够保证买家的信息安全,买家的银行卡信息与账户信息不必告知每一个收款人,只需告诉第三方支付平台。
4、第三方支付架构
一般来说,支付系统从架构上来说,分为四
层:网关层,核心层,产品层和运营支撑层;
网关层:网关一般是通过对银行,银联,网联,第三方支付的能力进行包装然后提供原子能力给上层系统调用;比如接入网联的快捷,网关,代付,清算对账,差错处理能力后,提供给其上层系统调用;另外网关一般还会维护路由系统(简单来说,路由就是帮一笔交易通过一定规则比较后,选择合适的道路到渠道侧)。
核心层:支付系统的核心模块,一般包括会员系统,风控系统,交易系统,收费系统,订单系统,清算系统,账务系统,签约系统,数据系统等;
产品层:通过对核心层提供的服务组合起来,大体来分,可以组合成入金类产品,比如组合成充值产品,转账产品等,还有出金类产品,比如提现产品,结算产品;然后通过接口,收银台,钱包,官网,内部运营后台等具体产品系统来提供服务;
运营支撑层:用来支持核心系统的服务, 包括运维监控系统、日志分析系统等。
简单来说,一笔交易进入第三方支付系统,首先会经过产品层,然后经过核心层,最后经过网关到达渠道侧,同时支付机构还可以通过运营支撑层对这笔交易进行监控维护。
二、从支付宝了解第三方支付
1、基本流程
首先有一个支付宝账号,向支付宝申请在线支付业务,签署协议。
协议生效后支付宝会给网站方一个合作ID加安全效验,然后就按照支付宝的的接口文档开发支付宝的接口,在上面的操作步骤中4是将数据发送到支付宝网关,7是通知验证部分,验证网关请求网站,网站验证规则对信息进行验证记录,我们开发时其他支付平台也是重要的这两步。
2、支付宝支付流程
支付宝基本流程如下:查询PID和KEY->下载技术文档->根据代码示例集成—>接口测试->集成成功。
支付宝在后台商家服务菜单:查询合作者身份(PID),查询安全验证码(Key)。
|-alipay_notify.php----支付宝通知处理文件 |-alipay_service.php---支付宝请求处理文件 |-alipay_config.php-----基础信息配置文件 |-index.php-----------快速付款模板入口文件 |-notify_url.php--服务器异步通知页面文件
2345678 $partner="---"."86754233"合作伙伴ID $security_code='u3e'guirpffcib7''安全验证码 $_input_charset="utf-8"字符编码格式 $sign_type='MD5'加密方式 $transport="http" 访问模式 $notify_url支付通知地址 $return_url返回地址 $show_url 商品展示地址
3、支付结果返回地址
支付结果页面是用户支付完成后,支付宝会请求该地址:$notify_url 这里是向支付宝服务器请求,这个url是以http开头的完整格式路径,然后根据数据库脚本创建一张表,根据数据的配置更改mysql_config.php 通过对支付宝提供的demo修改。
在后台会有一张订单表:id、goods_id、 goods_name、email、status这几个字段。
三、实际工作中应用第三方支付
1、工作流程
平台需要接入第三方,首先微信/支付宝等第三方支付平台会提供一个商户的技术接口文档,里面包括充值,查询,退款,对账各个接口的详细参数和返回值。并完成如下工作:
1.将订单信息(订单号,时间,金额,商户号等等)通过接口的形式传给第三方。
2.页面会跳转到第三方链接页面去进行支付。
3.支付完成后第三方会给到支付结果。
4.根据支付结果同步订单状态接入第三方支付具体是接口方面的一些开发,应双方约定好资金流向的话,在平台账务体系中,第三方应作为一个补款渠道方,补款成功后资金流向不变结算的话,是和第三方进行结算,一般是T+1日对账完成后进行结算退款的问题要看你的需求了,是自动退款(订单失败后自动退款)还是人工退款(用户或者工作人员发起退款)第三方给的接口文档中都有退款接口,详细看看就行了,一般也是将原订单信息给到第三方后发起退款,账务回滚,退款对账。
2、第三方支付测试点
(1) 正常场景验证
1.测试环境使用大金额、小金额( 0.01 元)测试,检查使用正确参数能否正确调用第三方接口,各个字段值是否正确;
2.上线前,可以向公司申请备用金,去做一笔大额支付,或者做完大额支付并且检查各项信息正确无误后,调用退款接口或者在系统上直接退款;
3.不论支付还是退款,都会有对应的查询接口,可以在数据库中核对各个字段,也可以通过后台直接在页面看订单信息;
4.对账差错处理;
5.支付成功后,检查第三方系统返给我们的值是否正确;
(2) 异常场景验证
1.使用错误的参数,修改每个需要上送的字段为错误的值看能否请求第三方接口下单;
2.退款时使用错误信息,能否请求到第三方接口进行退款;
3.超过单笔限额和单日限额;
4.支付失败订单补单等等
5.唤醒第三方页面后,能否做取消操作;
6.重复支付会第三方是否提示;
7.通过篡改第三方响应数据,我方能否接到正常处理;
8.例如遇到订单超时、第三方渠道故障,我司是否有监控报警机制;
9.非功能验证(弱网、安全、兼容测试);
B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)