回调通知(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-Delivery | event_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"
}
}