WebhookHandler.handle(),自动完成验签、接收方检查、解密和事件字段校验。deliveryBizId 去重;可靠保存后返回 HTTP 2xx,再异步处理业务。重复通知直接返回 2xx,不重复执行业务。decrypt() 时,必须先对同一份请求头和原始请求体调用 verifySignature();验签失败立即停止。验签、解密或保存失败时,不返回成功。| 请求头 | 说明 |
|---|---|
Content-Type | application/json; charset=utf-8 |
X-SlaunchX-Delivery-Id | 投递 ID |
X-SlaunchX-Event-Type | 事件类型 |
X-SlaunchX-Timestamp | 毫秒时间戳 |
X-SlaunchX-Key-Id | 接收方 API Key 业务 ID |
X-SlaunchX-Signature | 平台签名 |
| 字段 | 说明 |
|---|---|
eventId | 同一业务事实的稳定 ID |
deliveryBizId | 一次投递生命周期 ID,用于去重 |
eventType | 事件类型,见下表 |
payloadSchemaVersion | 当前为 1;不支持的版本不得猜测处理 |
occurredAt | 业务发生时间,UTC RFC 3339 |
workspaceBizId | 所属工作区标识 |
resource.type / resource.bizId | 资源类型和业务 ID,用于路由及回查 |
data | 该事件类型的业务内容 |
eventType | resource.type | 用途 |
|---|---|---|
card.status | card_information | 卡片状态变化 |
card.issuance | card_information | 发卡结果 |
card.controls | card_information | 消费控制变更 |
card.transaction | card_transaction | 卡片交易结果 |
card.group.wallet.transfer | user_card_product_group_wallet_order | 卡钱包划转审批及结果 |
| 字段 | 说明 |
|---|---|
previousStatus | 变更前状态 |
currentStatus | 变更后状态 |
reasonCategory | 原因分类 |
cardVersion | 卡资料版本,用来判断先后 |
ISSUING / ISSUE_FAILED / IN_USE / FROZEN / USER_CANCELLED /
ADMIN_CANCELLED / EXPIRED / PROVIDER_CLOSEDISSUANCE_RESULT / USER_REQUESTED / ADMINISTRATIVE_ACTION / RISK_CONTROL /
NATURAL_EXPIRY / EXTERNAL_STATUS_CHANGE / PLATFORM_RECONCILIATIONUSER_REQUESTED 表示用户侧发起(例如解冻),不是风控或管理员动作。batchBizId、userCardProductGroupBizId、platformCardProductBizId、status。status=SUCCEEDED:cardBizId 必有status=FAILED:failureCategory 为 VALIDATION_FAILED / CAPABILITY_UNAVAILABLE / PROCESSING_FAILEDresource.bizId 是平台卡 ID。不暴露渠道卡号或原始拒绝文案。data 只有 cardVersion。表示平台生效的管控集合已替换;当前值请再查卡详情接口。cardBizId、cardGroupWalletBizId、transactionType、transactionStatus、fundFlowType、settlement、transactionAt。可选商户字段:merchantName、merchantCategoryCode、merchantCountryCode。fundFlowType 相对卡钱包。| transactionType | transactionStatus | 资金方向 |
|---|---|---|
AUTHORIZATION | SUCCEEDED | 通常 OUTFLOW |
DECLINED | FAILED | 通常 OUTFLOW |
CAPTURE | SUCCEEDED | 通常 OUTFLOW |
REFUND | SUCCEEDED | INFLOW |
REVERSAL | SUCCEEDED | INFLOW |
transactionType 携带 transactionStatus=FAILED,不能只用类型判断成功。失败时资金方向仍按操作类型定义,不表示资金已实际移动。declineCategory:INSUFFICIENT_FUNDS / CARD_STATUS / CARD_CONTROL / RISK_CONTROL /
CAPABILITY_UNAVAILABLE / PROCESSING_FAILED{currency, amount}:currency 大写币种名,amount 是主单位十进制字符串,不是 JSON 数字。userCardProductGroupBizId、cardGroupWalletBizId、internalWalletBizId、direction、amount、status。direction 相对卡钱包;金额结构与交易事件相同。| 阶段 | status | approvalStatus |
|---|---|---|
| 发起 | PENDING_APPROVAL | PENDING_APPROVAL |
| 审批通过 | PROCESSING | APPROVED |
| 完成 | COMPLETED | APPROVED |
| 驳回 | FAILED | REJECTED |
| 取消 | CANCELLED | CANCELLED |
| 执行失败 | FAILED | APPROVED |
executionStatus 与 outcomeCategory 是可选字段,不存在时不返回,不使用 null。executionStatus;审批通过为 PENDING_EXECUTION,完成为 SETTLED。executionStatus。取消或执行失败时按实际返回值处理,不根据 status 推导执行状态。PENDING_EXECUTION、CHANNEL_PROCESSING、CHANNEL_CONFIRMED、SETTLED、REFUNDED。BUSINESS_REJECTED、USER_CANCELLED、CAPABILITY_UNAVAILABLE、PROCESSING_FAILED、FUNDS_RESTORED。按实际返回值处理,不建立未经确认的一对一映射 。GET /card-products/wallets/transfers/{bizId}。| 项目 | 默认规则 |
|---|---|
| 成功条件 | HTTP 2xx,不检查响应体 |
| 请求超时 | 10 秒,可配置 1–60 秒 |
| 失败重试 | 上次尝试完成后等待 60 秒、5 分钟、15 分钟、60 分钟 |
| 尝试次数 | 最多 5 次,含首次 |
| 记录保留 | 90 天 |
FAILED,可在开发者中心查看记录,并在请求快照未过期时手工重放。