Skip to main content

业务概览

无论您的持卡人是在线上商户付款、在 ATM 取现,还是发起退货退款,DCS 都会把每一笔资金变动拆成两个清晰的阶段交付给您:授权阶段先冻结或解冻资金,清算阶段再完成真实的扣款或退款。本页把所有授权与清算的组合一次列全,帮助您在接入时把每种业务情况都对得上账。DCS 是持牌发卡机构、自有 BIN Sponsor,资金的冻结与扣除均由 DCS 在卡组织侧完成,授权决策由接入机构掌握。
阅读本页前,建议先理解三个实体的关系:授权(Authorisation) 记录冻结/解冻决策,Outstanding 跟踪冻结金额的累加与扣减,交易流水(Transaction) 记录实际扣款/退款结果。详见 授权交易流水

核心概念:Auth、Outstanding 与 Transaction

Auth / Outstanding / Transaction 三者关系Auth / Outstanding / Transaction 三者关系
  • 一笔授权批准后,DCS 冻结对应金额,并生成(或复用)一个 Outstandingamount 记录当前累计冻结金额。
  • 增量授权、撤销等后续授权通过 originalAuthId 找到首笔授权的 outsId,在同一个 Outstanding 上累加或扣减。
  • 清算到账时,DCS 扣减 Outstanding 直至归零,并生成交易流水。清算金额与冻结金额不一致时,DCS 会自动补建一笔 FORCE_AUTH 授权来补足或释放差额。
关键字段authId(授权 ID)、outsId(账单/Outstanding ID,串联授权与清算)、originalAuthId(关联原始授权)、directionOUTGOING 冻结 / INCOMING 解冻)、authType(授权类型)。完整字段见 授权数据结构

授权类型(authType)


场景总览

下表 13 个场景覆盖了授权与清算的全部组合。「Outstanding 最终」一列均为 0,表示资金生命周期闭合。
阅读约定:每条「动作时序」用 direction / authType / outsId(amount变化) 标注。A = 批准(approveFlag=A),D = 拒绝。

场景详情

场景一:普通授权 → 普通清算

最基本的场景:一笔授权冻结,一笔清算扣款,金额完全匹配。
  1. 授权 — OUTGOING 冻结 100 USD — authId1(NORMAL, A)— outsId1(amount=100)
  2. 清算 — OUTGOING 扣款 100 USD — transactionId1outsId1(amount=100→0)

场景二:普通授权 → 增量授权 → 普通清算

商户追加冻结(如酒店加收小费),多笔授权共享同一个 Outstanding。
  1. 授权 — OUTGOING 冻结 100 USD — authId1(NORMAL)— outsId1(amount=100)
  2. 授权 — OUTGOING 冻结 20 USD — authId2(NORMAL)— outsId1(amount=100→120)
  3. 清算 — OUTGOING 扣款 120 USD — transactionId1outsId1(amount=120→0)
增量授权通过 originalAuthId 找到首笔授权的 outsId,在同一个 Outstanding 上累加。

场景三:普通授权 → 部分撤销 → 普通清算

持卡人部分退货,商户发起部分撤销后按剩余金额清算。
  1. 授权 — OUTGOING 冻结 100 USD — authId1(NORMAL)— outsId1(amount=100)
  2. 授权 — INCOMING 解冻 30 USD — authId2(NORMAL)— outsId1(amount=100→70)
  3. 清算 — OUTGOING 扣款 70 USD — transactionId1outsId1(amount=70→0)

场景四:普通授权 → 全额撤销

持卡人取消交易,商户发起全额撤销,无后续清算。
  1. 授权 — OUTGOING 冻结 100 USD — authId1(NORMAL)— outsId1(amount=100)
  2. 授权 — INCOMING 解冻 100 USD — authId2(NORMAL)— outsId1(amount=100→0)
Outstanding 归零后无需清算。

场景五:普通授权 → 超额清算

清算金额大于冻结金额(如汇率波动、附加费用),DCS 在同一事务内自动补建 OUTGOING FORCE_AUTH 补足差额。
  1. 授权 — OUTGOING 冻结 100 USD — authId1(NORMAL)— outsId1(amount=100)
  2. 清算处理(同一事务内):
    1. 授权 — OUTGOING 冻结 50 USD — authId2(FORCE_AUTH)— outsId1(amount=100→150)
    2. 清算 — OUTGOING 扣款 150 USD — transactionId1outsId1(amount=150→0)

场景六:普通授权 → 少额清算

清算金额小于冻结金额,DCS 在同一事务内自动补建 INCOMING FORCE_AUTH 解冻多余资金。
  1. 授权 — OUTGOING 冻结 100 USD — authId1(NORMAL)— outsId1(amount=100)
  2. 清算处理(同一事务内):
    1. 授权 — INCOMING 解冻 20 USD — authId2(FORCE_AUTH)— outsId1(amount=100→80)
    2. 清算 — OUTGOING 扣款 80 USD — transactionId1outsId1(amount=80→0)

场景七:普通授权 → 部分清算 → 最终清算

多笔清算场景,由交易流水的 multiClearInd 字段标识:非最后一笔只扣减 Outstanding,最后一笔才检查差额。
  1. 授权 — OUTGOING 冻结 100 USD — authId1(NORMAL)— outsId1(amount=100)
  2. 清算 — OUTGOING 扣款 60 USD — transactionId1(multiClearInd=P)— outsId1(amount=100→40)
  3. 清算 — OUTGOING 扣款 40 USD — transactionId2(multiClearInd=F)— outsId1(amount=40→0)
如果最后一笔清算后仍有差额,则按场景五/六的逻辑补建 FORCE_AUTH。
multiClearInd 取值:O 普通单笔清算 / P 多笔清算非最后一笔 / F 多笔清算完成。详见 清算场景

场景八:强制清算(无授权)

线下或离线交易,清算时找不到对应授权,DCS 在同一事务内自动补建完整的 Auth + Outstanding。
  1. 清算处理(同一事务内):
    1. 授权 — OUTGOING 冻结 100 USD — authId1(FORCE_AUTH, A)— outsId1(amount=0)
    2. 清算 — OUTGOING 扣款 100 USD — transactionId1outsId1(amount=0)
Outstanding amount 直接设为 0,FORCE_AUTH 自动批准,三者在同一事务内创建。

场景九:强制退款(无授权)

退款清算时找不到对应授权,DCS 新建 Outstanding 做数据关联。
  1. 清算处理(同一事务内):
    1. 清算 — INCOMING 退款 50 USD — transactionId1outsId1(amount=0)
与强制清算不同,INCOMING 方向不补建 Auth,只建 Outstanding 做数据关联。

场景十:查询授权

金额为 0 的问询式授权,仅验证卡是否有效,不冻结资金。
  1. 授权 — OUTGOING 冻结 0 USD — authId1(NORMAL)— outsId1(amount=0)
仍会创建 Outstanding(amount=0),但不冻结任何资金。接入机构仍会收到授权 Webhook(transactionType=Q)。

场景十一:授权过期释放

授权超过有效期未清算,卡组织通过结算文件通知释放冻结资金。
  1. 授权 — OUTGOING 冻结 100 USD — authId1(NORMAL)— outsId1(amount=100)
  2. (超过有效期,未收到清算)
  3. 授权 — INCOMING 解冻 100 USD — authId2(EXPIRED_RELEASE)— outsId1(amount=100→0)
释放金额必须与 Outstanding 金额完全匹配且币种一致才会释放;不匹配则触发 DCS 内部告警、不做处理。

场景十二:授权超时差异

卡组织因超时拒绝了授权,但 DCS 侧可能已批准,需要对账修正。
  1. 授权 — OUTGOING 冻结 100 USD — authId1(NORMAL)— outsId1(amount=100)
  2. (卡组织超时拒绝,DCS 侧已批准,状态不一致)
  3. 授权 — INCOMING 回滚 100 USD — authId2(STATUS_DIFF_RELEASE)— outsId1(amount→回滚)
处理逻辑:
  • DCS 侧已批准(approveFlag=A),卡组织超时拒绝 → 创建反向授权(STATUS_DIFF_RELEASE, INCOMING),Outstanding 回滚。
  • DCS 侧已拒绝(approveFlag=D)→ 状态一致,不处理。
  • 未找到关联授权 → 创建记录(STATUS_DIFF_RELEASE, approveFlag=D),仅做记录,不影响资金。

场景十三:提现(普通清算 + 提现手续费)

授权阶段冻结总金额(本金 + 手续费),清算时先解冻手续费部分(少额清算逻辑),再扣款本金;手续费通过独立的 FORCE_AUTH + 清算流程扣款。
  1. 授权 — OUTGOING 冻结 110 USD — authId1(NORMAL)— outsId1(amount=110)
  2. 本金清算处理(同一事务内):
    1. 授权 — INCOMING 解冻 10 USD — authId2(FORCE_AUTH)— outsId1(amount=110→100)
    2. 清算 — OUTGOING 扣款 100 USD — transactionId1(category=CASH)— outsId1(amount=100→0)
  3. 手续费强制记账清算处理(同一事务内):
    1. 授权 — OUTGOING 冻结 10 USD — authId3(FORCE_AUTH)— outsId2(amount=10)
    2. 清算 — OUTGOING 扣款 10 USD — transactionId2(category=CASH_FEES)— outsId2(amount=10→0)
处理逻辑:
  • 授权冻结 110 USD(本金 100 + 手续费 10),outsId1 记录总冻结金额。
  • 清算本金时,DCS 发现清算金额(100)< Outstanding 金额(110),按少额清算逻辑先补建 INCOMING FORCE_AUTH 解冻差额 10,再扣款 100。
  • 手续费独立走强制记账流程:新建 outsId2,FORCE_AUTH 冻结 10 后立即清算扣款 10。
如何区分提现本金与手续费? 通过交易流水的 category 字段判断。 交易流水的 category 取值以交易分类数据字典为准:提现本金为 CASH(取现),提现手续费为 CASH_FEES(取现手续费)。

跟一个 case 走一遍:酒店预授权到入账

把场景三(部分撤销)放进真实时间线,看您在每个触点收到什么、做什么、账上如何勾稽。案例:持卡人预订三晚酒店,预授权 100 USD;入住后取消一晚,酒店撤销 30 USD;离店后酒店按 70 USD 请款。 三条对账要点:
  • outsId1 是这条时间线的主键:两笔授权与一笔清算都挂在同一个 Outstanding 上,对账时按 outsId 分组即可把授权与清算对上,不需要自己猜关联。
  • 撤销也要您决策INCOMING 解冻同样经 authUrl 转发,建议直接返回 00 放行;仅当解冻金额大于当前已冻结金额等异常场景时才有拒绝的业务理由。
  • 清算只出现在对账文件里:请款(Day 4)不产生实时回调,您对清算结果的感知统一来自每日交易报告——这正是把日终对账作为资金真相源的原因。
若 Day 4 酒店请款不是 70 而是 75 或 60,DCS 会按上文场景五/六自动补建 FORCE_AUTH 补足或释放差额,您会在授权报告中看到这笔系统补建记录,无需实时介入。

接入机构如何参与

授权 Webhook 的请求/响应数据结构、RSA 双向加签与 responseCode00 同意 / 01 资金不足 / 11 交易不允许 / 21 无响应)见 Webhook 事件与结构

下一步