资质校验为什么必须做在交易入口处
商户资质上传到后台,只是合规的第一步。真正关键的是,这笔支付能不能创建,必须由资质状态来决定。如果交易接口只查了商户的启用状态、没把资质校验放进前置判断,那证照就只是后台上一个静止的图标,起不到任何风控作用。
正确做法是在服务端交易前置做统一校验:创建支付单之前,先读商户的资质状态,只有"已上传且已核验"的商户才允许建单。这一步要放在支付接口的前置中间件里统一处理,而不是每个支付通道各自写一套,否则容易漏。
落地时把握一条原则:资质校验必须进入交易判断链路,而不是停留在资料展示层。
网站支付功能实现里的三个关键点
第一,配置默认值要收紧。有些开源项目里 qualification_check 这一项默认是 false,上线时如果没人点开,就一直不生效。部署的时候要主动把它设成 true,并且把允许的资质状态写清楚。
第二,接口查询要带全字段。交易时为了减少查询,很多人只查商户主表、不查资质表,结果资质变更不影响支付。合理的做法是把资质状态放进服务端前置检查,宁可多一次查询,也要保证判断完整。
第三,缓存要及时失效。资质状态变了以后,要主动让交易服务感知。不能靠数据库触发器,最好在商户状态更新接口里发一个 cache invalidation,否则旧的查询结果还在 Redis 里,改完仍然会按老状态建单。
qualification_check = true
allowed_qualification_status = uploaded, verified
有同行问支付平台哪个好用,我现在的回答是,先看它有没有把资质校验放进服务端前置,而不是只看界面和费率。产品体验再顺,合规开关没开也白搭。
如果配置改了仍不生效,多半是 config cache 没清。先跑一次清理命令,再看 /api/pay/create 的响应体。
聚合支付合规经营的正确姿势
除了前置校验,还可以加一个定时巡检脚本,每天跑一次,把资质状态异常、需要人工复核的商户号列出来,做到早发现、早处理。审计日志里把每次资质校验的字段都记录,方便回溯。
商户资质的核验不是一锤子买卖。资质状态变化、证照到期、法人变更,都要同步更新到交易判断里。把合规做在交易入口处,平台才能经得起监管检查,商户也才用得安心。
支付资质不是传完就结束了,它得进入交易判断。这既是平台合规经营的基本要求,也是对每一位商户资金安全负责的态度。