ims(cardbind-middle)绑卡中台

职责:绑卡/银行卡校验,托管页 + 通道交互。Eureka 名 ims-service(pmt 侧以 plutus-ims-service 名调它)。经 Feign 编排 pmt 的通道能力,并消费 pmt 的绑卡查询回调。

出向依赖(我依赖谁)

仓库内服务

目标客户端/Publisher接口/事件边类型状态
pmtIPmtPayStackClient / IPmtMonnifyClient / IPmtFlutterwaveClient / IPmtFlutterwaveV3Client / IPmtInterSwitchClient / IPmtRemitaClient / IPmtSeerbitClient / IPmtZestpayClient / IPmtBudpayClient绑卡按通道分流(9 通道)Feign
pmtIPmtBankServiceClient银行/账户服务Feign
pmtIPmtOrderClient支付订单查询Feign
pmtIPmtInnerService内部代付/代扣(IInnerPaymentService)Feign
pmtDoBindAccountPayPublisher绑卡放款事件
pmtDoRepaySinglePublisher单笔还款事件
bnsBindCardResultNotify(HttpExecutorFactory.postJson绑卡结果通知 → bns /inner/bindCardCallBackHTTP
ims 自身(plutus-ims-service)IUserInfoClient(ims-job)ims-job 查询主服务用户信息Feign✓(自调)

ims→bns 这条边经 HTTP 回调(类在 outgoing/bussiness/notify/),按 I*Client.java 扫 Feign 会漏。IUserInfoClient 是 ims-job 模块回查 ims 主服务(同服务自调)。

外部三方

目标客户端/Publisher接口/事件边类型状态
支付通道HttpExecutor(OkHttp)绑卡托管页/通道交互直连补充HTTP活跃
大数据BigDataOutgoing(OkHttp)卡/用户信息查询HTTP活跃
mdutDoPushMdutPublisher绑卡推送触达事件
Monnify 通道流DoBindCardSendMonnifyPublisher绑卡发 Monnify事件
通道/外部DoNoticeChannelPublisher通道通知事件活跃;消费端不在仓库

主资金通道 HTTP 出口在 pmt,ims 以 Feign 调 pmt 为主,HttpExecutor 仅作直连补充。

入向被依赖(谁依赖我)

仓库内调用方

调用方客户端/Publisher接口/事件边类型状态
bnsIImsServiceClientrouteRedirect 绑卡跳转Feign
bnsIImsServiceClientbankBvnMatchFeign✗ 注释
fcsIPlutusClient(空接口)Feign
pmtIImsCustClientqueryCardTokenByUserId、cardRepayFeign
pmtDoBindCardQueryPublisher绑卡查询回调 → ims DoBindCardQueryHandler事件
middle-gatewayEureka 路由中台网关转发(脱敏加解密)路由

外部 / 缺失方入口

入口边类型疑似调用方出处
/inner/v1/paystackEnvents/flutterwaveEnvents/flutterwaveGetEnvents/paystackWebPayCallbackHTTP 端点支付通道 Paystack / Flutterwave(绑卡通道回调)IInnerService / IInnerWebService
/inner/v1/zestpayRedirectHTTP 端点Zestpay 通道(跳转页)IInnerWebService

边界洞察

  • ims 与 pmt 是双向强耦合:ims 经 Feign+事件调 pmt 做绑卡放款/还款,pmt 又经 Feign+事件回调 ims(查卡/代扣/绑卡查询回调)。绑卡-支付是一对紧耦合中台。
  • 绑卡完整回路:通道回调 ims(/inner/v1/*Envents)→ ims BindCardResultNotify 回调 bns(/inner/bindCardCallBack)。
  • 通道通知事件(DoNoticeChannelPublisher)消费端在仓库内未定位,是出向悬挂点。