VM_API
    简体中文
    • 简体中文
    • English
    • 接入指南
    • 环境配置
    • 全局错误码
    • 交易类型说明
    • 卡状态说明
    • Webhook 验签接入说明
    • VM卡操作
      • 获取账号余额
        POST
      • 获取卡产品码
        POST
      • 申请卡
        POST
      • 卡详情
        POST
      • 修改卡限额(仅适用额度卡)
        POST
      • 冻结/解冻卡
        POST
      • 卡充值(仅适用储值卡)
        POST
      • 卡退款(仅适用储值卡)
        POST
      • 交易记录
        POST
      • 删卡
        POST
      • 卡列表
        POST
      • 获取卡流水
        POST
    • 通知
      • WebHook
      • 卡片3ds通知
    • 变更日志
      • 变更日志
    • FAQ
      • FAQ
    • 获取accessToken
      GET

    Webhook 验签接入说明

    1. 功能说明#

    VM 向商户回调地址发送 Webhook 时,会使用 VM 私钥对原始 HTTP 请求体进行 RSA-SHA256 签名。商户收到 Webhook 后,应使用 VM 提供的公钥验证签名,以确认:
    消息由 VM 签发;
    请求体在传输过程中未被修改。

    2. 签名规则#

    项目说明
    签名算法RSA-SHA256
    摘要算法SHA-256
    RSA 填充PKCS#1 v1.5
    RSA 密钥长度2048 bit
    签名内容实际发送的原始 HTTP Body
    签名编码Base64
    签名请求头X-VM-SIGN
    字符编码UTF-8
    签名计算规则:
    signature = Base64(
        RSA_PKCS1_V1_5_SIGN(
            SHA256(raw_http_body),
            VM_private_key
        )
    )

    3. Webhook 请求示例#

    HTTP Header 名称不区分大小写,因此以下名称等价:
    X-VM-SIGN
    X-Vm-Sign
    x-vm-sign
    HTTP/2 或部分 Web 框架可能自动将 Header 名称转换为小写,这是正常行为。

    4. 验签流程#

    1.
    获取原始 HTTP Body。
    2.
    获取 X-VM-SIGN 请求头。
    3.
    对签名值进行 Base64 解码。
    4.
    使用 VM Webhook 验签公钥执行 RSA-SHA256 验签。
    5.
    验签成功后,再解析 JSON 并处理业务。
    6.
    验签失败时拒绝处理该消息。
    必须使用原始 Body 验签,禁止先解析 JSON 再重新序列化。空格、换行、字段顺序和转义方式发生变化都会导致验签失败。

    5. PHP 验签示例#

    6. 公钥说明#

    商户验签时必须使用 VM 提供的 Webhook 验签公钥:
    -----BEGIN PUBLIC KEY-----
    ...
    -----END PUBLIC KEY-----
    注意:
    不得使用商户自己的公钥验签。
    不得使用商户调用 VM API 时配置的 API 公钥验签。
    VM 私钥不会提供给商户。
    Sandbox 与 Production 公钥应分别获取,不得默认共用。
    建议通过受控渠道获取公钥及其 SHA-256 指纹。
    修改于 2026-08-26 10:15:50
    上一页
    卡状态说明
    下一页
    获取账号余额
    Built with