Skip to content

渣打 SCB

本页说明

讲什么:渣打银行的 FPS 出金通道、Book Transfer(加密资产转账)、Webhook 事件机制 适合谁:需要了解渣打对接细节的产品经理 前置阅读银行能力矩阵预计阅读:2 分钟 负责人:出金产品经理

核心要点:渣打的核心能力是 FPS 出金 API + Webhook 事件推送,是出金半自动化的代表性通道——无需运营登录网银操作。


能力总览

能力支持情况协议/通道核心服务
入金流水
出金 FPSREST API + Webhookscb_service (Go)
Book TransferREST APIscb_service (Go)
子账户子账户入金匹配
eDDA/eDDI
银证 BST

渣打是出金专用银行——不采集入金流水,主要提供 FPS 出金和 Book Transfer 两个通道。


出金:FPS

出金方法

维度说明
方法码TRANSFER_METHOD_SC = 'sc'
分类电子银行方法(allEBankMethod
中文名渣打网银出金

数据流

Webhook 事件

渣打通过 Webhook 异步回调通知交易状态变更,不需要轮询:

Webhook 类型含义触发场景
payment_status支付状态变更出金指令处理结果
credit_debit_advice借记/贷记通知资金到账/扣款确认

Webhook 处理状态:

状态码含义
0新建(待处理)
1处理中
2已处理

FPS 出金流水查询

系统可通过 API 查询流水记录:

  • 支持分页(cursor-based,默认每页 20 条)
  • 返回字段:TransactionID、BankStatementID、ValueTime、ValueDate、金额、币种
  • 包含 Payer/Payee 信息:收款卡号、付款行名、SWIFT 代码

Book Transfer(加密资产转账)

Book Transfer 是渣打的内部账户间转账能力,用于特定场景下的资金调拨:

维度说明
用途子账户间资金转移
请求参数RequestID、Amount、Debtor(付款方)、Creditor(收款方)
金额校验必须 ≥ 0
ID 生成Snowflake 算法生成 ReferenceID
队列事件QueueEventTransferCreate

子账户入金

虽然渣打没有独立的入金流水采集服务,但支持子账户入金匹配。用户通过渣打子账户转入资金,系统通过 SubAccountSDK 验证子账户归属后自动匹配。


渠道接口详情

渠道接口概览

维度说明
协议类型HTTPS REST + JSON
认证方式TLS 双向认证 + JWT Token(30 秒有效期)
加密方式AES256Signed(响应加密)
签名算法RS256(RSA)
核心服务scb_service(Go)

HTTP Headers(所有请求必需)

每个发往渣打 API 的请求都必须携带以下 Headers:

Header说明
Content-TypeApplication/JSON请求体格式
ResponseEncryptionTypeAES256Signed响应加密方式
Routing-IdentifierZZ路由标识
GroupIdGHK54005集团 ID
AuthorizationBearer [JWT_TOKEN]JWT 令牌(30 秒有效期)

注意:messageSendercountryCode 是请求体 JSON 中的字段(见下方 PaymentInitRequest),不是 HTTP Header。

证书配置

渣打使用 TLS 双向认证 + RS256 签名的 JWT Token,涉及多组密钥:

证书路径用途
客户端证书conf/keys/client.cerTLS 双向认证
客户端私钥conf/keys/clientcertsslprivatekey.pem签名 / 解密
客户端公钥conf/keys/clientpubkey.pem银行验证我方身份
JWT 签名密钥conf/keys/scbapibankingprivatekey.pemJWT RS256 签名

JWT Token 参数:

参数
Issuer"SCB"
Audience"SCB-APIBanking"
有效期30 秒

JWT 有效期极短

JWT Token 仅 30 秒有效,系统每次请求前需重新生成。如果时钟偏差超过数秒可能导致认证失败,需确保服务器 NTP 同步。


接口 1:Payment Initialization(出金发起)

POST /openapi/payments/v2/initiate

请求 PaymentInitRequest:

字段类型必填描述
header.messageSenderstring(≤246)发送方
header.messageIdstring(≤35)消息 ID,唯一标识
header.countryCodestring(2)国家代码。取值 "HK"
header.timestampint64Unix 时间戳
instruction.paymentTimestampint64支付时间戳
instruction.requiredExecutionDatestring(≤10)执行日期。格式 "YYYY-MM-DD"
instruction.amount.currencyCodestring(3)币种。取值 "HKD" / "USD"
instruction.amount.amountstring金额。如 "1000.00"
instruction.referenceIDstring(≤16)参考号
instruction.purposestring(≤10)用途
instruction.paymentTypestring(≤4)支付类型
instruction.chargerBearerstring(≤4)手续费承担方
instruction.debtor.namestring(≤140)付款方名称
instruction.debtorAccount.idstring(≤34)付款方账号
instruction.debtorAccount.identifierTypestring账号类型。取值 "BBAN" / "IBAN" / "Other"
instruction.creditor.namestring(≤140)收款方名称
instruction.creditorAccount.idstring(≤34)收款方账号
instruction.creditorAgent.financialInstitution.BICstring(≤11)收款行 BIC。如 "SCBLHKHHXXX"
instruction.remittanceInfo.multiUnstructuredarray[string]汇款附言信息

响应 PaymentInitResponse:

字段类型描述
paymentIdentifierstring渣打支付标识
internalTrackingIdstring(≤35)内部追踪 ID
clientReferenceIdstring(≤35)客户参考 ID
referenceIdstring(≤35)参考号
statusStringstring(≤10)状态
timestampISO-8601(≤24)时间戳

接口 2:Payment Status Query(出金状态查询)

POST /openapi/payments/v2/status

请求:

json
{
  "clientReferenceIds": ["ref1", "ref2", "..."]
}

支持批量查询多笔出金状态。

响应(每条记录):

字段类型描述
statusStringstring状态描述
statusCodestringISO 20022 状态码
reasonCodestring原因码
valueDateYYYY-MM-DD值日期
debitDateYYYY-MM-DD扣款日期
debitAmountstring扣款金额

调度规则:系统每 30 秒轮询一次未完成的出金状态。


接口 3:Webhook Credit/Debit Advice(入金通知)

POST /credit-debit-advice

渣打通过 Webhook 主动推送贷方/借方通知,Payload 完整字段如下:

字段类型描述
groupIdstring组 ID
accountIdentifier.accountIdstring账号
accountIdentifier.currencyCode.isoCodestring币种
eventDateYYYY-MM-DD事件日期
adviceTypestring"CRDT"=贷方(入金)/ "DBIT"=借方(扣款)
valueDateYYYY-MM-DD值日期
transactionAmount.currencyCodestring交易币种
transactionAmount.amountdecimal交易金额
transactionFreeTextarray[string]交易说明(自由文本)
payerDetails.namestring付款人姓名
payerDetails.account.idstring付款人账号
timestampISO-8601时间戳

配置的收款账户

币种账号BIC用途
HKD44700993333SCBLHKHHXXX证券
HKD91701015121SCBLHKHHXXX加密 / Hash Key
HKD91701015121SCBLHKHHXXXPantherTrade
USD44700993333SCBLHKHHXXX证券
USD91701015121SCBLHKHHXXX加密 / Hash Key
USD91701015121SCBLHKHHXXXPantherTrade

moomoo 侧适配

Webhook → BankFlow 映射:收到渣打 Webhook 后,系统将 Webhook Payload 转换为内部 BankFlow 记录:

Webhook 字段BankFlow 字段说明
transactionAmount.amountamount金额
transactionAmount.currencyCodecurrency币种
payerDetails.namepayer_name付款人姓名
payerDetails.account.idpayer_account付款人账号
adviceTypedirectionCRDT→入金, DBIT→出金
eventDatetransaction_date交易日期

状态码映射(ISO 20022 → 内部状态)

ISO 20022 状态码含义内部状态
ACCCAccepted Settlement Completed成功
RJCTRejected失败
CANCCancelled已取消
ACSPAccepted Settlement in Process处理中
ACCPAccepted Customer Profile已接受

需求变更指引

变更需求改动位置说明
新增 Webhook 事件类型scb_service → webhook handler添加新事件处理逻辑
修改 FPS 出金参数scb_service → 出金请求构建调整 API 请求字段
Book Transfer 新增校验scb_servicebook_transfer.go修改金额/账户校验规则
修改子账户匹配规则SubAccountSDK 配置调整子账户归属验证
修改出金审批模板Task.php$stepTemplates调整渣打出金审批流程

常见客诉 Top 3

#用户反馈原因客服话术
1"FPS 出金没到银行卡"Webhook 推送延迟或出金仍在处理中"FPS 出金通常几分钟内到账,如超过 30 分钟请联系客服"
2"FPS 出金被退回"收款信息有误"转账已被银行退回,请核对收款银行卡信息后重新发起"
3"出金状态一直显示处理中"渣打 Webhook 未收到"您的出金正在处理中,我们正在确认银行状态,请稍候"

监控与告警

告警项触发条件严重度处理步骤
Webhook 接收失败渣打推送通知未收到🔴 高检查 Webhook endpoint 可用性,主动调 status 接口查询
JWT Token 过期认证失败(30 秒有效期)🟡 中检查服务器 NTP 时钟同步,确保偏差 < 5 秒
FPS 支付长时间 PENDING出金超过 30 分钟未到终态🟡 中主动调用 Payment Status 接口查询,确认银行侧状态

读完之后

我想...去看
看渣打在各银行中的位置银行能力矩阵
了解渣打出金的完整审批流程出金生命周期
对比另一家 FPS 出金银行广发 CGB
查出金通道的执行细节通道执行手册
这个页面有帮助吗?

内部业务文档 · 仅限 moomoo 团队使用