支付逻辑中的黑名单和单张
TL;DR
Blacklist/blocklist是支付管道中"硬"和"软"禁令的可管理层。它的价值是将臭名昭著的危险标识符(卡,IBAN,加密地址,设备,IP等)迅速切断为昂贵的检查和注销尝试。效率的关键是明确的数据模型(有效期,来源,管辖权,信心水平),具有强大缓存和审计的孤立服务,协调的TTL/大赦政策以及"高风险↔超额"指标。
1)术语和区别
Blacklist/Deny-list/Block List是一组ID,如果与之匹配,则会严重拒绝操作(HARD BLOCK)。
停止列表(上下文)-在特定上下文中锁定(例如,仅限输出,仅限国家/地区X,仅限总和>Y)。
Watchlist/Greylist-"观察":操作不会立即被拒绝,但会转换为STEP-UP(3 DS/OTP/dops。KYC)或手册评论。
Allow-list/White-list是一种显式分辨率,超过灰色信号(例如VIP,确认的帐户银行)。
Negative List(内部)-基于内部事件(charjbacks、bonus abuse、制裁匹配、多巡回)的列表。
2)什么是"李斯特": ID
付款详情
地图:PAN 令牌/FPAN哈希,BIN,发行人/国家/地区(用于地理政策),期限,媒体名称(可选,哈希/fazzy)。
银行:IBAN/BIC,帐户/路由(ACH/SEPA),所有者名称(归一化哈希)。
电子钱包/金融技术:钱包(PayPal/Skrill/Neteller等),UPI/PIX ID,开放银行PISP付款人。
加密地址:L1/L2地址,标签(mixer/制裁/高风险),链条(ETH/BTC/TON等)。
沟通和行为
电子邮件/电话(规范化,记录"一次性"域和可重新分配的号码)。
设备/fingerprint浏览器,客户机密钥,移动ID。
网络:IP(ASN/Proxy/VPN/数据中心),/24子网,地理位置。
帐户和交易对手
UserID/CustomerID,合作伙伴/关联,促销来源。
PSP/MID/Acquirer(用于路由操作锁定)。
地址/FIO(哈希归一化,模糊匹配令牌)。
3)名单补充来源
内部事件:charjbacks,frod-alerta,奖金缺口(多场比赛,得分"获得了奖金-没有失误"),制裁比赛,自我释放/MLRO标志。
外部来源:PSP/收购商负面名单,财团基地(共享英特尔),加密标签提供商,BIN基地,风险模型。
规则和手动输入:合成/风险办公室解决方案,事件的"冻结"。
4)数据模型(最低限度)
json
{
"key": "card:pan_token:9c4f...e1",
"scope": {
"action": ["deposit","withdrawal","payout"],
"jurisdiction": ["EEA","CA-ON"],
"product": ["casino","sports"]
},
"policy": "deny stop observe allow",
"reason_code": "CHARGEBACK BONUS_ABUSE SANCTION_MATCH MFA_BYPASS KYC_FAIL CONSORTIUM_HIT",
"source": "risk_engine psp_x mlro consortium",
"confidence": 0. 92,
"created_at": "2025-10-01T12:30:00Z",
"expiry_at": "2026-01-01T00:00:00Z",
"ttl_days": 90,
"review_after": "2025-12-01T00:00:00Z",
"metadata": {
"case_id": "INC-2025-10344",
"notes": "2 CB in 45 days; bonus cycling through 3 wallets,"
"hash_algorithm": "sha256+salt",
"tenant": "brand_A"
}
}
必填字段:"key"、"policy"、"reason_code"、"source"、"created_at"、"expiry_at/ttl"。
良好的做法是:保存scope(行动/管辖权/产品)和confidence(软政策)。
5)列表服务架构
专用ListService服务(所有微服务的真值状态)。
API:
`GET /v1/list/check?key=……&ctx=……'-同步验证(来自Redis的p99 <5-10毫秒)。
"POST/v1/list/upsert"是具有验证和审核的质量/单位记录。
"POST/v1/list/bulk"-dry-run的CSV/NDJSON下载。
"POST/v1/list/review/: id"-标记/大赦/延期。
存储:Redis(热缓存,TTL)+Postgres(历史/审核)+DLQ/Log总线(Kafka)用于事件源和复制。
可用性:write-仅通过RBAC+4眼敏感密钥(银行/加密)进行风险/合规/MLRO控制。
可靠性:等效的upsert、记录的转换、事件流水线中的异常值、KMS/HSM加密。
6)在哪里嵌入检查
1.付款方式注册/绑定是"烧毁"道具的早期Deny。
2.存款(启动)-快速的Deny/Stop到3DS/OTP,以免因臭名昭着的不良密钥而支付授权费用。
3.输出/付款-单独的付款详细信息(IBAN/加密地址)列表;通常比入口更严格。
4.更改道具-step-up+check;保护"提款前更改帐户"。
5.奖励操作-根据抽象方案(多机构,设备链)进行观察/停止。
7)政策(HARD/SOFT)和TTL
HARD(deny/stop)适用于:制裁,确认的鞭打,重复的冲锋,被盗的卡片,mu子。
SOFT (observe/step-up):弱信号(新IP/设备,"冷"电子邮件域,high-velocity),"可疑"BIN/ASN。
TTL/expiry:
Chargeback:180-540天(取决于计划和风险)。
奖金缺口:90-365天(有修订)。
制裁:与名单定期同步无限期。
大赦:在成功的CUS/"干净"游戏历史之后≥ N日和无事件-自动降级为观察或删除。
8)解决方桉和升级(决策矩阵)
9)伪代码在线验证
python def is_blocked(keys: list[str], ctx: dict) -> Decision:
keys: ["card:pan_token:..", "ip:..", "device:..", "iban:.."]
ctx: {"action":"withdrawal","jurisdiction":"EEA","product":"casino","amount":1000}
hits = list_service. batch_check(keys, ctx) # из Redis + fallback PG if any(h. policy in ["deny","stop"] for h in hits if h. in_scope(ctx)):
return Decision(block=True, reason=top_reason(hits))
if any(h. policy == "observe" for h in hits if h. in_scope(ctx)):
return Decision(block=False, step_up="3DS_or_KYC", reason="OBS_HIT")
return Decision(block=False)
10)与风险引擎和支付总线集成
风险引擎首先读取ListService,然后读取/ML/规则。
Pipline中的顺序是:"Pre-auth → ListService(硬件/软件)→ 3DS/OTP → Auth → Clearing"。
路由:在PSP路由级别上,如果"MID"/"BIN"击中了提供商的流程表,则可以"重置"频道/水彩画。
事件:每个解决方案("DENY/STOP/OBSERVE/ALLOW")都离开Kafka进行ML审核和培训。
11)业务和流程
大量下载:CSV/NDJSON具有验证和模拟(将影响多少操作)。
评论:每日抽样延长/撤回;SLA处理案件。
冲突:如果同时使用"ALLOW"和"DENY",则应用除显式VIP-override之外的最大限制规则。
转化:任何编辑都是录音的新版本;旧的状态被保留用于调查。
事件:reason_code模式,与tiket的通信(Jira/Case-ID)。
12)质量指标和目标
Hit Rate (HR)=任何列表中包含的操作比例。
Hard-Hit Rate (HHR)=严格锁定的比例。
Overblock Rate (OBR)="假"锁的比例。
实施后的CB-Uplift↓/Fraud- Loss↓。
存款/收据的预付款率(AR)。
时间到钱包(TTW)软度量(步进)对支付速度的影响。
用于在线支票的Time-to-Decision(p95/p99)。
13)法律和隐私
处理的依据:合法利益/法律义务(AML/制裁/批准)。
最小化:存储哈希/令牌而不是主数据(PAN/IBAN),盐,控制访问。
保留时间:TTL+一般保留政策(AML/buchet/监管)。
主体权利:DSAR/删除过程(不包括合规例外)。
跨境性:区域/特南特人之间的清晰复制边界。
14)常见错误以及如何避免错误
IP/ASN覆盖:数据中心/CGNAT →使用信号组合(IP+设备+行为)。
泄露个人数据:使电子邮件/电话正常化,考虑客房回收。
卡的再循环(PAN再发射):通过PAN令牌/加密令牌化而不是"原始"数据进行绑定。
常见的IBAN家庭:应用scope(仅付费)和observe代替全球deny。
加密地址:不要连续阻止所有内容;考虑标签/背景(交易所,手提包)。
15)与奖金流失和限制的联系
奖金模式:一个钱包/地址→多个帐户,快速无周转输出-在stop/deny payouts。
限制和TtW:"observe"可能需要在咆哮之前增加周转/延长的TtW。
16)密钥示例(规范形式)
card:pan_token:<sha256>
iban:<sha256>
wallet:skrill:<normalized_id_hash>
upi:<vpa_hash>
pix:<pix_key_hash>
crypto:eth:<address_lower>
email:<local+domain_hash>
phone:+<E164_hash>
device:<fp_hash>
ip:<ipv4/6 or /24>
asn:<asn_id>
affiliate:<id>
psp:mid:<id>
17)清单(实施支票)
1.定义策略集:deny/stop/observe/allow+reason_codes。
2.数据方桉:密钥,scope, ttl/expiry, confidence, audit。
3.体系结构:Redis+PG+Kafka,idempotency,4眼控制。
4.编织成流:预检查,步进,付费硬化。
5.度量/指标:HR/HHR/OBR/AR/TTW,跨司法管辖区/渠道的切口。
6.过程:评论/大赦,大量下载,DSAR,事件。
7.团队培训:sapport/风险/财务,解决冲突的花花公子。
18)迷你花花公子
BIN X的CB激增→ "bin:X"+reroute上的临时停止(deposit)到其他收件人,48小时后咆哮。
在取出→ stop(withdrawal)+KYC-step-up+苯甲酸酯验证之前更换道具。
财团对钱包的打击→观察到存款,在MLRO评论之前停止付款。
Y国家的制裁新闻→更新国家范围的情况,在payouts上包括deny,重新计算列表。
19)管理员面板接口示例(逻辑)
按键/掩码搜索,过滤器: policy, scope, reason, source, expiry <30d.
Кнопки: Amnesty, Extend TTL, Lower to Observe, Convert to Deny, Add Allow.
Dry-run大规模行动:显示有多少操作属于新规则。
20)摘要
流程表不仅是"禁令表",而且是平台级别的服务:具有清晰的数据模型,强大的缓存,审计,合格的TTL和清晰的咆哮过程。如果与风险引擎正确集成,他们将缩小背景漏斗而不会破坏转换,并在安全的情况下加快付款速度。