回调通知(Webhook)

CoinVertus API 回调:转账与任务事件、签名、重新投递及服务器端校验。

API 地址: https://api.coinvertus.net/v1

回调通知(Webhook)

Webhook 地址在个人中心的“Webhook”中设置:https 地址,必要时可填写 IP 和 Host。whsec_… 密钥只显示一次;检查按钮会发送 ping。Webhook 仅在包含该功能的套餐中可用。

通知为带 JSON 正文的 POST 请求。10 秒内任何 2xx 响应即为成功。否则分别在 1 分钟、5 分钟、30 分钟、2 小时、6 小时和 24 小时后重试。不跟随重定向,响应最多读取 64 KB。

通知来自不同地址,请勿按 IP 限制,务必校验签名。
请求头说明
X-CVC-Event事件名称,与正文中的 event 相同。
X-CVC-Deliveryevent_id 和尝试次数。
X-CVC-Signature签名:t=<Unix 时间>,v1=<签名>。

v1 为字符串“t.请求体”的十六进制 HMAC-SHA256,密钥为 Webhook 密钥(whsec_…)。请使用收到的原始字节(在解析 JSON 之前),如果 t 与您的时钟相差超过 5 分钟则拒绝该通知。

同一通知可能到达两次,每个 event_id 只处理一次。不保证送达顺序:不要因较早的通知回退已付款订单。

事件发送时机
tx.new您地址的新交易。在不监控 mempool 的网络中,会在第一次确认时到达。
tx.confirmed交易已被网络确认或拒绝——请查看 status。
tx.dropped已通过 tx.new 通知的交易未获确认即从网络中掉落。
task.done发送任务到达最终状态:confirmed、failed、dropped 或 cancelled。
paybalance.low支付余额低于自动充值阈值:自动充值已关闭(reason 为 no_autotopup)或执行失败(autotopup_failed)。
ping来自账户的测试通知。

开启 Webhook 之前发生的交易不会推送。tx.* 主体为 transaction 对象(与 txinfo 相同);task.done 为 task 对象;paybalance.low 为 reason 和 paybalance 对象。

{
    "event": "tx.new",
    "event_id": "evt_0123456789abcdef01234567",
    "created_at": "2026-09-17T12:10:00Z",
    "transaction": {
        "txid": "c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0",
        "coin": "DOGE",
        "network": "dogecoin-mainnet",
        "direction": "in",
        "status": "confirmed",
        "confirmations": 6,
        "block": 5912340,
        "time": "2026-09-17T12:04:00Z",
        "transfers": [
            {
                "address": "DLp4hPWtqM8sQZoyk2vRj3TfGcX5nA7bUe",
                "direction": "in",
                "amount": "250",
                "tag": null
            }
        ],
        "fee": null,
        "fee_coin": "DOGE"
    }
}
{
    "event": "task.done",
    "event_id": "evt_89abcdef0123456789abcdef",
    "created_at": "2026-09-17T12:20:12Z",
    "task": {
        "task_id": "task_6f1c2a9b0d4e8f7a3c5b1d20",
        "task_info": "confirmed",
        "task_start": "2026-09-17T12:10:00Z",
        "task_sent": "2026-09-17T12:10:04Z",
        "task_done": "2026-09-17T12:20:12Z",
        "prepare_id": "prep_9a3f0c7d21b84e65f0a1c2d3",
        "coin": "DOGE",
        "network": "dogecoin-mainnet",
        "txid": "b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7",
        "gas_txid": null,
        "confirmations": 6,
        "error_code": null,
        "tx": {
            "sources": [
                {
                    "address": "DLp4hPWtqM8sQZoyk2vRj3TfGcX5nA7bUe",
                    "amount": "150.5"
                }
            ],
            "recipients": [
                {
                    "address": "D8vFz4p1L37jdg47HXKtSHA5uYLYxbGgPD",
                    "amount": "100"
                }
            ],
            "change": {
                "address": "DLp4hPWtqM8sQZoyk2vRj3TfGcX5nA7bUe",
                "amount": "50.47774"
            },
            "network_fee": "0.02226",
            "fee_coin": "DOGE",
            "fee_rate": "100",
            "fee_rate_unit": "koinu/vB",
            "size": 226,
            "replaceable": false
        },
        "service_fee_usd": "0.1"
    }
}
{
    "event": "paybalance.low",
    "event_id": "evt_456789abcdef0123456789ab",
    "created_at": "2026-09-17T12:10:00Z",
    "reason": "no_autotopup",
    "paybalance": {
        "usd": "3.2",
        "reserved": "0.1",
        "auto_topup": false,
        "threshold": "5",
        "topup_amount": "20"
    }
}