3. 撤销和退款
有些渠道区分撤销和退款,比如银联、农行等,撤销指取消当天在渠道侧未结算的交易; 而退款仅针对已经结算的交易 。有些渠道则不作区分 。
4. 查询签约状态
对于需要签约的交易,可以通过这个接口来查询签约状态 。
5. 查询订单状态
通过这个接口来查询支付清单状态以及退款的订单状态 。
6. 预授权
预授权交易用于受理方向持卡人的发卡方确认交易许可 。受理方将预估的消费金额作为预授权金额,发送给持卡人的发卡方 。
7. 预授权撤销
对已成功的预授权交易,在结算前使用预授权撤销交易,通知发卡方取消付款承诺 。预授权撤销交易必须是对原始预授权交易或追加预授权交易最终承兑金额的全额撤销 。
8. 预授权完成交易
对已批准的预授权交易,用预授权完成做支付结算 。
9. 预授权完成撤销
预授权完成撤销交易必须是对原始预授权完成交易的全额撤销 。预授权完成撤销后的预授权仍然有效 。
10. 对账
通过FTP或者HTTP方式提供对账文件供商户侧对账 。
11. 余额查询
查询商户的交易账户的余额,避免由于余额不足导致交易失败 。注意,不是客户的余额 。当然,不是所有的银行或者第三方支付都提供这个接口 。
业务流程
上述操作,除了对账、查单外,每个操作实现的主流程,一般会包括参数校验,支付路由,生成订单,风险评估,调用渠道服务,更新订单和发送消息这7步,对于一些比较复杂的服务,还会涉及到异步同通知处理的步骤 。

文章插图
1. 执行参数校验
所有的支付操作,都需要对输入执行参数校验,避免接口受到攻击 。
- 验证输入参数中各字段的有效性验证,比如用户ID,商户ID,价格,返回地址等参数 。
- 验证账户状态 。交易主体、交易对手等账户的状态是处于可交易的状态 。
- 验证订单:如果涉及到预单,还需要验证订单号的有效性,订单状态是未支付 。为了避免用户缓存某个URL地址,还需要校验下单时间和支付时间是否超过预定的间隔 。
- 验证签名 。签名也是为了防止支付接口被伪造 。一般签名是使用分发给商户的key来对输入参数拼接成的字符串做MD5 Hash或者RSA加密,然后作为一个参数随其他参数一起提交到服务器端 。如支付网关设计所介绍,签名验证也可以在网关中统一完成 。
根据用户选择的支付方式确定用来完成该操作的合适的支付渠道 。用户指定的支付方式不一定是最终的执行支付的渠道 。比如用户选择通过工行信用卡来执行支付,但是我们没有实现和工行的对接,而是可以通过第三方支付,比如支付宝、微信支付、易宝支付,或者银联来完成 。那如何选择合适的支付渠道,就通过支付路由来实现 。支付路由会综合考虑收费、渠道的可用性等因素来选择最优方案 。
3. 评估交易风险
检查本次交易是否有风险 。风控接口返回三种结果:阻断交易、增强验证和放行交易 。
1) 阻断交易,说明该交易是高风险的,需要终止,不执行第5个步骤;
2) 增强验证,说明该交易有一定的风险,需要确认下是不是用户本人在操作 。这可以通过发送短信验证码或者其他可以验证用户身份的方式来做校验,验证通过后,可以继续执行该交易 。
3) 放行交易,即本次交易是安全的,可以继续往下走 。
4. 生成交易订单
将订单信息持久化到数据库中 。当访问压力大的时候,数据库写入会成为一个瓶颈 。
5. 调用支付渠道提供的服务
所有的支付服务都需要第三方通道来完成执行 。一般银行渠道的调用比较简单,可以直接返回结果 。一些第三方支付,支付宝,微信支付等,会通过异步接口来告知支付结果 。
【支付系统整体架构详解】6. 更新订单
对于同步返回的结果,需要在主线程中更新订单的状态,标记是支付成功还是失败 。对于异步返回的渠道,需要在异步程序中处理 。
7. 发送消息
通过消息来通知相关系统关于订单的变更 。风控,信用BI等,都需要依赖这数据做准实时计算 。
8. 异步通知
如上述流程,其中涉及到调用远程接口,其延迟不可控 。如果调用方一直阻塞等待,很容易超时 。引入异步通知机制,可以让调用方在主线程中尽快返回,通过异步线程来得到支付结果 。对于通过异步来获取支付结果的渠道接口,也需要对应的在异步通知中将结果返回给调用方 。异步通知需要调用方提供一个回调地址,一般以http或者https的方式 。这就有技术风险,如果调用失败,还需要重试 。而重试不能过于频繁,需要逐步拉大每一次重试的时间间隔 。在异步处理程序中,订单根据处理结果变更状态后,也要发消息通知相关系统 。
推荐阅读
- 微信有个开关,不用绑定银行卡也能支付,操作简单一看就会
- 安卓手机恢复出厂设置,重置安卓手机系统的方法
- Linux系统故障问题汇总,值得永久收藏
- 怎样重装电脑主机系统 台式机重装系统
- 支付宝首页页面可简化,操作在这里
- 抖音推荐特征系统演进历程
- 5年迭代5次,抖音推荐系统演进历程
- 华为新版鸿蒙OS系统3.0更新,三大重磅功能,使用更加流畅!
- 鸿蒙系统该怎么启用5g网络 鸿蒙系统启用5g教程分享
- Ubuntu 系统的 IP 原来是这样配置的
