← 返回目录
收款码智能路由

功能简介

系统根据客户的 IP 归属地和您配置的 权重规则,自动从候选收款码中挑选一个展示给客户。

为什么需要?

  • 📈 提升成功率:客户 IP 与收款码归属地一致,微信/支付宝风控更宽松
  • ⚖️ 分担风险:多码加权随机,避免单码被风控
  • 🔒 精准管控:哪个地区的客户走哪个码,一目了然
实测效果:地域匹配策略可提升支付成功率约 15~20%(尤其对微信商家码敏感)

工作原理

客户下单时的完整链路:

1. 客户点支付链接
        ↓
2. 系统获取客户 IP → 本地库查归属地(省/市/运营商)
        ↓
3. 匹配路由规则(按优先级从高到低)
        ↓
   命中规则 → 从规则指定的候选码池中选码
        ↓
   未命中 → 走原逻辑(本人码优先 → 下级码 BFS)
        ↓
4. 多个候选码时 → 按 weight 字段加权随机
        ↓
5. 展示收款码给客户
优先级顺序:路由规则 > 省份匹配 > 权重随机 > use_count 最少

IP 检测工具

位置:商户后台 → 收款工具 → 📍 IP 检测

用途:

  1. 查看当前访问 IP:显示你现在的 IP + 省份 + 城市 + 运营商(本地库)
  2. 验证 IP 归属地:一键跳 ip138 核对准确度
  3. 查询其他 IP:输入任意 IP,看它的归属地

页面元素

元素说明
当前 IP红色大字,含 ip138 外链
省份/城市/运营商本地库查询结果(ip2region.xdb)
查询框任意 IP → 查归属地
常用地区参考34 个省级行政区列表
本地库识别不准? 点 ip138 外链人工核对,以官方为准。

绑定 IP(上传收款码时)

上传收款码时,可以给每个码绑定一个 IP,系统自动识别归属地。

操作步骤

1
打开上传弹窗收款工具 → 收款码管理 → 新增
2
找到「绑定 IP」字段在「归属地区」下方
3
点「🔍 用我的 IP」自动填你当前 IP
或手动输入 IP
4
保存后自动入库系统把 IP 归属地写入 bind_province / bind_city

匹配逻辑

下单时,系统会对比:

  • 客户的 省份(IP 库实时查)
  • 收款码的 region_province(手动填的归属地区)
  • 收款码的 bind_province(从绑定 IP 自动识别的)

只要其中一个匹配,该码就是优先候选。

小技巧:绑定 IP 比手填省份更准,因为 IP 直接反映你手机在哪个地区收的款。

路由规则管理

位置:商户后台 → 收款工具 → 🎯 收款码路由

页面结构

  • 规则列表:所有规则,按优先级排序
  • 新增/编辑表单:选类型 + 配置匹配值 + 选候选码

规则字段

字段说明
规则名自己看的名字,如「广东优先」
优先级数字,越小越先匹配(默认 100)
匹配类型省份 / 权重 / 全部(见下方)
状态启用 / 停用(一键切换)
备注选填

可用收款码

规则里能选的码 = 你 + 全部下级的收款码。这样你可以给下级码也配路由。

规则类型 · 按省份

适用场景:把某个省的客户单独分配给指定码(本地风控更松)

配置步骤

  1. 匹配类型选「按省份」
  2. 勾选一个或多个省份(可多选)
  3. 选择该规则的候选码(可以选多个)
  4. 保存

匹配逻辑

客户省份 ∈ 规则勾选的省份  →  命中
       ↓
从规则的候选码池里随机取(按 weight 加权)
省份识别不准? 见下方「常见问题 Q2」

规则类型 · 按权重

适用场景:所有客户按比例分流到多个码(不用管 IP)

配置步骤

  1. 匹配类型选「按权重」
  2. 勾选 2 个或更多收款码
  3. 每个码的 weight 字段决定被选中的概率
  4. 保存

举例:权重分流

码 IDweight实际概率
#1196060/(60+40)=60%
#1204040/(60+40)=40%
命中规则后无条件使用(不管客户 IP)——这条规则通常放在列表最后,作为「兜底分流」。

规则类型 · 全部(兜底)

适用场景:指定一组"终极候选",其他规则都没命中时用

与权重的区别

类型选码方式
权重多个码 → 按 weight 加权随机
全部多个码 → 也按 weight(跟权重一样)
单码 → 直接用

实际上「全部」和「权重」在匹配后行为一样,区别只在语义:

  • 「全部」= 我不在乎分流比例,随便选一个可用的
  • 「权重」= 我要精确控制每个码的比例

权重(weight)设置

pay_qrcode.weight 字段,默认 100。

如何修改?

目前没做前端界面,需要手动改数据库:

-- 修改某码权重为 200
UPDATE pay_qrcode SET weight=200 WHERE id=119;

-- 批量:
UPDATE pay_qrcode SET weight=60 WHERE id=119;
UPDATE pay_qrcode SET weight=40 WHERE id=120;
后续版本会加上前端滑块,现在暂时改数据库。

权重规则

  • 权重越大,被选中概率越高
  • 权重为 0 或负数会当作 1 处理
  • 多个码的权重之比 = 选中概率之比

实战案例

案例 1:广东省客户走 A 码,其他走 B 码

规则1:广东优先(优先级 10)
  类型:按省份
  省份:广东
  候选码:#119(广东地区的码)

规则2:兜底(优先级 100)
  类型:全部
  候选码:#120(备用码)

效果:广东客户 → #119;其他省客户 → #120

案例 2:三码平均分流

规则1:均衡分流(优先级 100)
  类型:按权重
  候选码:#119 / #120 / #121
  权重:#119=100, #120=100, #121=100

概率:#119 33.3%,#120 33.3%,#121 33.3%

案例 3:多级匹配

规则1:广东省 VIP(优先级 5)
  类型:按省份,省份=广东
  候选码:#119, #120(广东地区的两个码)

规则2:江浙沪(优先级 10)
  类型:按省份,省份=江苏、浙江、上海
  候选码:#121

规则3:兜底(优先级 999)
  类型:全部
  候选码:#119, #120, #121, #122

效果:广东 → #119/#120 随机;江浙沪 → #121;其他 → 全部码随机

常见问题

Q1:规则没生效?

  • 检查规则是不是「启用」状态
  • 检查优先级是不是最小的先匹配
  • 检查候选码是不是「启用」状态
  • 检查候选码的金额/日限额是否覆盖订单

Q2:省份识别不准?

  • 本地库是 ip2region.xdb,覆盖率高但不是 100%
  • CDN/代理 IP 可能识别成其他地区
  • 手机 4G/5G 的 IP 可能跨省(运营商出口)
  • 可以点 IP 检测页的「ip138 查看」人工核对

Q3:权重怎么设置最合理?

  • 平均分流:所有码权重相等(如都是 100)
  • 主备模式:主码 200,备码 100(约 2:1)
  • 保护模式:新码权重小(如 50),老码权重大(如 200)
  • 建议:不要单个码权重超过其他总和 3 倍以上,否则等同单码

Q4:能不能给下级码配路由?

  • 可以。路由规则里能选所有下级码
  • 但只有你能配,下级不能给自己配
  • 下级也不需要配——他会告诉你他的码什么时候最活跃,你决定

Q5:绑定的 IP 变了怎么办?

  • IP 归属地是上传时一次性识别的,之后 IP 变了不会自动更新
  • 如果收款手机换地区,重新编辑该码、重新绑 IP 即可
  • 也可以在「归属地区」手动选省份(优先级相同)

Q6:一条规则都不配会怎样?

  • 系统走原逻辑:本人码优先 → 下级码(3 层 BFS)
  • 多个候选时按 weight 加权随机
  • 所以即使不配规则,也会按权重分流

Q7:绑定 IP 和手填省份冲突?

  • 优先看 region_province(手填的),再看 bind_province(IP 识别的)
  • 只要有一个匹配就算命中
  • 建议只用一个,避免混乱