当前位置: 首页 > news >正文

图解拒付平台:如何应对用户的拒付

这是《百图解码支付系统设计与实现》专栏系列文章中的第(5)篇。

本章主要讲清楚支付系统中拒付涉及的基本概念,产品架构、系统架构,以及一些核心的流程和相关领域模型、状态机设计等。

1. 前言

拒付在中国比较少见,但是在海外非常普遍,只要做跨境收单支付系统,就无法绕开拒付。

拒付涉及到冻结收单单据,并扣减商户的结算款,所以拒付经常和收单、结算一起讲。下面这个图第三次出现,只是想强调三者之间的紧密关系。

三者的职能如下:

收单核心:主要负责处理商户订单的全生命周期管理:订单创建、支付推进、退款、撤销等。

结算核心:主要负责把商户应收账款算清楚,把结算款按合同约定结转给商户。

拒付核心:主要负责处理用户的拒付和对应的抗辩以及最后的判责。

2. 拒付基本概念

拒付在中国比较少见,但是在海外非常普遍,只要做跨境收单支付系统,就无法绕开拒付。

简单地说,拒付就是指用户在收到账单后,向发卡行申请对某笔交易拒绝付款。然后发卡行、卡组、收单行、第三方收单机构就开始正式进入拒付流程,中间会涉及到拒付举证、拒付判责等。

一旦拒付量大,卡组就会对收单机构的风控能力质疑,有一些惩罚措施,严重可能会影响收单资质,所以一般的收单机构对拒付率看得比较重,收单机构的风控能力也就显得尤为重要。

拒付的原因通常有以下3种:

  1. 用户的卡被盗。
  2. 对商品不满意并产生交易纠纷。
  3. 恶意拒付。

3. 拒付产品架构

拒付的业务相对比较简单,产品架构也比较简单。

4. 拒付核心流程

拒付发生一般有两种来源:1)外部渠道的清算文件,这种一般称为在线拒付。2)外部渠道通过邮件发送给收单机构,需要由收单机构人工录入到内部系统,这种一般称为离线拒付。

拒付发生后,需要通知商家,商家一般会举证。比如证明是用户亲自签收的,或者收货地址是用户常用地址等。

不过从实际情况看,大部分的拒付会判商家或收单机构的责任。所以对收单机构的风控能力要求比较高。

5. 拒付领域模型

拒付的领域模型是根据拒付处理承载的信息来设计的。首先是拒付主单,关联拒付的理由、明细、清算流水,判责等。一旦判断是商家责任,还需要记录赔付信息。

6. 拒付状态机

拒付初始化为等待拒付(WAIT_JUDEG),可以被关闭(CLOSE),如果进入判责流程,就推进到IN_JUDGE,最后判责完成后,推进到JUDGE_FINISH。

7. 风控系统与拒付关系

拒付除了和收单结算紧密相关外,还和风控系统紧密相关,因为交易是由风控系统来判断风险的,如果这个用户的卡被盗刷,那风控系统的实时风控就不应该通过。如果是正常的购买,那风控系统就应该收集证据去抗辩。

这里面涉及的东西会比较多,后面有机会再讲。

8. 结束语

本章主要讲了拒付的基本概念,以及对应的产品和系统架构图,一些核心的领域模型和状态机设计。

到现在为止,与商户业务强相关的收单、结算、拒付就讲完了,后面会进入收银支付的讲解。

相关文章:

  • Linux IDEA 安装及环境配置
  • Spark Doris Connector 可以支持通过 Spark 读取 Doris 数据类型不兼容报错解决
  • Stable Diffusion的 webui 如何在Windows上使用 AMD GPU显卡?
  • Ubuntu12.0安装g++过程及其报错
  • 03 SpringMVC响应数据之接收Cookie和请求头+原生API+共享域对象操作
  • 单页面vite打包学习
  • 统计学-R语言-4.6
  • Qt6入门教程 6:Qt元对象系统
  • vue render函数的使用场景
  • 爬虫-8-数据存储-mysql
  • IOC之Spring统一资源加载策略
  • 基于LabVIEW的声音信号采集分析系统开发
  • Python - 深夜数据结构与算法之 位运算
  • 【qt】sdk写pro写法,cv,onnx,cudnn
  • stable diffusion使用相关
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • create-react-app项目添加less配置
  • If…else
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Laravel 菜鸟晋级之路
  • Less 日常用法
  • passportjs 源码分析
  • python大佬养成计划----difflib模块
  • vue-cli在webpack的配置文件探究
  • 安卓应用性能调试和优化经验分享
  • 复习Javascript专题(四):js中的深浅拷贝
  • 构建二叉树进行数值数组的去重及优化
  • 基于axios的vue插件,让http请求更简单
  • 学习Vue.js的五个小例子
  • 在Unity中实现一个简单的消息管理器
  • 智能网联汽车信息安全
  • PostgreSQL之连接数修改
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​低代码平台的核心价值与优势
  • $().each和$.each的区别
  • (175)FPGA门控时钟技术
  • (2)MFC+openGL单文档框架glFrame
  • (C语言)共用体union的用法举例
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (循环依赖问题)学习spring的第九天
  • (转)大型网站的系统架构
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .pop ----remove 删除
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [C++] 统计程序耗时
  • [codevs1288] 埃及分数
  • [git]git命令如何取消先前的配置