跳到主要内容

付款人资讯通知

系统在首次取得存款人资讯时,会额外推送一个独立通知到商户的 payment_cl_name_notify_url,内含付款人的姓名、银行账号、银行代码

此通知与收款交易结果通知各自独立

  • 收款交易结果通知 → 订单进入成功态时触发,推送到 notify_url
  • 付款人资讯通知 → 首次取得付款人资讯时触发,推送到 payment_cl_name_notify_url

一笔订单可能两种通知都收到(独立推送、独立签名、独立回覆)。

使用场景

本通知专为对帐与风控场景设计:

  • 商户需要在订单成功前或成功后尽快拿到付款人身份(姓名、银行账号、开户银行)用于自家对帐系统
  • 风控系统需要比对付款人资讯与会员绑定帐户

如何启用

创建收款单时,额外传入 payment_cl_name_notify_url 参数(可选):

{
"platform_id": "PF0002",
"service_id": "SVC0015",
"payment_cl_id": "DEVPM00014581",
"amount": "50000000",
"notify_url": "https://merchant.example.com/webhook/deposit",
"payment_cl_name_notify_url": "https://merchant.example.com/webhook/payer-info",
"request_time": "1595504136",
"sign_type": "HMAC-SHA256",
"sign": "..."
}

未传入则不启用本通知。

请求资讯

  • 请求 URL: 商户于申请收款时填入的 payment_cl_name_notify_url
  • 请求方式: POST
  • Content-Type: application/json;charset=utf-8

请求参数

参数名必选类型说明
payment_idString系统订单号
payment_cl_idString商户订单号
payment_cl_nameString付款人姓名
payment_cl_numberString付款人银行账号
payment_cl_bank_nameString付款人开户银行代码(参考越南银行列表
sign_typeString签名算法标识(仅 HMAC-SHA256 订单才带入,详见下方「签名算法」)
signString订单签名

字段规则

  • payment_cl_name:付款人姓名原始值,不做格式化。
  • payment_cl_number:付款人银行账号完整号码。若未提供,此参数会从 body 省略
  • payment_cl_bank_name:付款人开户银行代码,取值请参考 越南银行列表bank_name 代码(如 VCBMBTCB)。若无法判定,此参数会从 body 省略

签名算法

MD5 即将全面弃用

未来 MD5 的签名方式将会全面弃用,建议串接的商户改用 HMAC-SHA256

签名方式与收款交易结果通知一致,依订单建立时的 sign_type 决定
  • 建单时 sign_type 未传 / 传 "MD5"本通知用 MD5 签名,body 不带 sign_type 字段
  • 建单时 sign_type = "HMAC-SHA256"本通知用 HMAC-SHA256 签名,body 带 sign_type: "HMAC-SHA256" 字段

商户验签时请依 sign_type 字段是否存在分流:

  • sign_type 字段不存在 → 以 MD5 验签
  • sign_type = "HMAC-SHA256" → 以 HMAC-SHA256 验签

MD5 签名规则(MD5 订单):

  1. 取 body 中所有非空值字段,排除 signsign_type
  2. 按参数名 ASCII 码由小到大排序
  3. key=value 形式用 & 连接(不做 URL encoding
  4. 在末尾追加 &{platform_service_sign_key}
  5. 对完整字符串做 MD5 哈希
  6. 转为 32 位小写十六进制字符串

HMAC-SHA256 签名规则(HMAC-SHA256 订单):

签名说明统一——body 额外包含 sign_type: "HMAC-SHA256",并以 HMAC-SHA256(param_str, platform_service_sign_key) 产生 64 位小写十六进制签名。

请求示例

MD5 订单(body 不含 sign_type

{
"payment_id": "PM00000102",
"payment_cl_id": "97a968b4a9db497c8c03198e395a38c6",
"payment_cl_name": "TRAN TRUNG HIEU",
"payment_cl_number": "10066777777",
"payment_cl_bank_name": "MB",
"sign": "d2e4534fce8c1d1053bbf59fd8ae4464"
}

仅姓名(银行资讯不可得):

{
"payment_id": "PM00000103",
"payment_cl_id": "a1c2d3e4f5g6h7i8",
"payment_cl_name": "NGUYEN VAN A",
"sign": "8a7b6c5d4e3f2g1h"
}

HMAC-SHA256 订单(body 带 sign_type

{
"payment_id": "PM00000102",
"payment_cl_id": "97a968b4a9db497c8c03198e395a38c6",
"payment_cl_name": "TRAN TRUNG HIEU",
"payment_cl_number": "10066777777",
"payment_cl_bank_name": "MB",
"sign_type": "HMAC-SHA256",
"sign": "e8a5c3f2d1b4a6e9c7f0d2b5a8e1c4f7d0b3a6e9c2f5d8b1a4e7c0f3d6b9a2e5"
}

商户返回

{ "error_code": "0000" }
参数名类型说明
error_codeString返回 "0000" 即表示商户已处理完成

备注

  • 此接口由商户实现,本系统将于首次取得付款人资讯时消费此接口。
  • notify_url 完全独立:两者的触发时机、推送 body、签名都各自独立,商户需分别实作处理端点。
  • 本通知仅通知一次(不重试),商户需确保端点稳定。若端点返回非 2xx,资讯不会重送。
  • 所有非空字段sign_typesign 除外)皆需进入签名。请遍历所有 request body 内的参数动态生成签名字串,不可将字段写死
  • 请使用非空值参与签名,且动态取得有返回值的字段,未来可能新增字段(如付款时间、银行分行)。