📄 正文
公司开户、员工创建、建卡、卡状态、3DS 挑战、交易三态与入金预警,共五组出站事件。所有事件共用同一套信封——读webhookType 再解析对应的 data 即可,接收端只需一个接口。
前置条件:先登记回调地址、准备好用SK复算X-Signature。配置步骤与验签代码见 Webhook 配置。
信封
信封与平台其他产品线的 Webhook 公共结构一致,您可以用同一套代码消费各产品线的事件。所有 ID 字段均为字符串;金额为字符串且不保证尾随零。
事件总览
除
COMPANY_REJECTED(主体尚未创建)与三个交易事件(归属可由 cardId 稳定推导)外,所有事件的 data 都带 companyId,您无需回查主体归属。公司事件
COMPANY_CREATED
COMPANY_REJECTED
COMPANY_STATUS_CHANGED
镜像更新公司限制项,限制项变更落定后推送。
员工事件
CUSTOMER_CREATED
CUSTOMER_REJECTED
CUSTOMER_STATUS_CHANGED
镜像更新员工限制项。
卡事件
CARD_CREATED
CARD_REJECTED
CARD_SHIPPED
物流单号生成时推送,恰好一次。
CARD_ACTIVATED
CARD_STATUS_CHANGED
本事件不含「激活」与「过期」:激活单独发
CARD_ACTIVATED,过期当前无触发源。7 个卡状态见管理卡片。AUTHORISATION_3DS_CHALLENGE
业务流程与回传见 3DS 挑战。
以下四个字段仅
challengeFlowType=OTP_DELEGATE 且入驻方配置 otpSendMode=ENTERPRISE 时填充:
解密:
AES/GCM/NoPadding,128 位认证标签;密钥即接入方 SK(与请求签名同一把),与获取卡敏感信息同一套约定。
交易事件
三个交易事件描述的事实与账单明细同源,复用账单域的词条:panLast4 / transactionTime / transactionCategory / originalAmount+originalCurrency(交易原始金额)/ postAmount+postCurrency(入账金额)/ merchantName / mcc / merchantCountryCode。
交易事件不带
companyId:归属可由 cardId 稳定推导——卡与所属公司的关系在建卡时确定且此后不变,您在 CARD_CREATED 里已经收到该卡的 companyId。交易类事件量级远高于生命周期事件,故只带必需字段。需要按公司汇总时请用账单与交易查询。CARD_TRANSACTION
授权与 release 合一,通过与拒绝由 status 区分。
CARD_TRANSACTION_SETTLEMENT
CARD_TRANSACTION_DEBT
进入欠款态时推送。
本载荷有两个语义不同的金额(欠款额、入账额),故各自带限定语、不用裸
amount。
资金事件
LOW_BALANCE
资金池余额低于阈值时预警。阈值设置见公司维护。
BANK_TRANSFER_INFO
VA 入金到账,成功与失败均发,由 status 区分。
BALANCE_CHANGE
尚待定的三件事:通知覆盖哪些余额维度(公司资金池余额 / 自由余额 / 独立余额卡的卡余额);如何标识主体与余额类型;是否每笔账变都发。
VA_STATUS_CHANGED
收款虚拟账户(VA)的开通 / 更新结果。异步受理:open-va、update-va 与 update-va-profile 同步返回 PENDING,终态经本事件通知。
下一步
- 回调地址登记、验签与重试约定:Webhook 配置
- 3DS 挑战的接收与结果回传:3DS 挑战
- 用查询接口做兜底对账:账单与交易查询

