Base URL 与身份验证
基础地址
https://non-voip-api.0246864.xyz/api/v1在所有商户 API 请求中使用此主机。
身份验证
所有端点均需要 API 密钥。请将密钥保存在服务器上,并在每个请求头中传递。
X-Api-Key: YOUR_MERCHANT_API_KEY快速开始
- 在 API Dashboard 中创建商户 API 密钥,并仅保存在服务器上。创建、轮换和使用密钥均需要有效的 merchant 套餐。
- 每个请求都发送 X-Api-Key。
- 读取目录,然后使用其中的 productServiceId 和唯一 Idempotency-Key 创建验证。
- 轮询验证,直到 data.messages 包含验证码。单条短信服务通常进入 completed,而不是 otp_received。
export NV_API_KEY='nvr_live_...'
API='https://non-voip-api.0246864.xyz/api/v1'
PRODUCT_SERVICE_ID=$(curl --fail-with-body --silent --show-error "$API/catalog?test=true" -H "X-Api-Key: $NV_API_KEY" | jq -r '.data[0].productServiceId')
VERIFICATION_ID=$(curl --fail-with-body --silent --show-error -X POST "$API/verifications?test=true" -H "X-Api-Key: $NV_API_KEY" -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" -d "{"productServiceId":"$PRODUCT_SERVICE_ID"}" | jq -r '.data.verificationId')
for _ in $(seq 20); do
curl --fail-with-body --silent --show-error --max-time 15 "$API/verifications/$VERIFICATION_ID?test=true" -H "X-Api-Key: $NV_API_KEY" | jq -e '.data.messages[0].code' && break
sleep 5
done生产集成要点
仅限服务器端
请将 API 密钥保存在后端或 serverless 函数中,切勿暴露在浏览器 JavaScript 或移动应用内。
版本化响应
所有路由均以 /api/v1 开头。成功数据位于 data;错误处理应同时检查 HTTP 状态和应用 code。
重试与限流
写操作请发送 Idempotency-Key,并在重试时复用同一值。请遵循 X-RateLimit-* 与 Retry-After 响应头。
测试模式(不会真实扣费)
添加 ?test=true 可获得与生产一致的确定性数据,且不会调用供应商或扣除余额。身份验证、请求日志和限流仍然生效。
Webhook 通知
在 API Dashboard 中配置 HTTPS 地址和所需事件。事件包括 verification.created、verification.otp_received、verification.completed、verification.expired、verification.cancelled 和 verification.failed。
单条短信验证码通过 verification.completed 到达。多条短信服务可能在完成前发送 verification.otp_received。这一点最容易出错:若只订阅 verification.otp_received,单条短信集成可能什么都收不到,因此请务必同时订阅 verification.completed。
使用原始请求体的 HMAC-SHA256 小写摘要验证 X-Webhook-Signature,并在 10 秒内返回 2xx。每次投递最多尝试 5 次,采用指数退避,即一次首发加四次重试。每次尝试都会重新构建请求体,因此 timestamp 与 X-Webhook-Signature 每次都不同;切勿跨尝试缓存或复用签名。而 X-Webhook-Delivery 在各次尝试之间保持不变,这正是应当按它去重的原因。
请保持接收端可用。连续 5 次投递用尽全部尝试后,non-voip 会自动停用该 webhook,并清除地址、签名密钥和已订阅事件。系统会通知你,但在你于 API Dashboard 重新登记地址并生成新密钥之前不会再有任何投递——长时间故障失去的是配置本身,而不仅仅是错过的事件。
Payload 示例
{
"event": "verification.completed",
"timestamp": "2026-08-27T10:00:00.000Z",
"balance": 124.5,
"data": {
"subscriptionId": "550e8400-e29b-41d4-a716-446655440000",
"phoneNumber": "+15550001234",
"otpCode": "483920",
"messages": [
{
"code": "483920",
"message": "Your verification code is 483920",
"receivedAt": "2026-08-27T09:59:58.000Z"
}
],
"status": "completed",
"productServiceId": "0f1a5a6c-1c2d-4f2b-9a1e-3c9d4b7e2f10"
}
}商户 - 余额
商户 - 目录
商户 - 验证
资源
创建 API 密钥并管理 webhook 设置。
仅用于公开 Merchant API v1 的交互式参考;不包含内部 client 与 admin API。
需要集成帮助?请通过 support@non-voip.com 联系我们的支持团队。

