零额验证
Quick Reference
What零金额卡片验证
Why无需扣款即可确认卡片有效
Difficulty初级
Prerequisites身份验证 → 钱包
零额验证执行一次非货币预授权,确认卡片处于活跃、有效状态,并且在未来扣款时很可能成功。不会冻结资金,也不会影响信用额度。
为什么需要零额验证
| 使用场景 | 说明 |
|---|---|
| 订阅设置 | 在第一个计费周期之前验证卡片 |
| 卡片存档 | 在结账前确认已保存的卡片仍然有效 |
| 反欺诈预检 | 在授权前检测无效或被盗卡片 |
| 注册引导 | 在创建账户时验证支付方式 |
端点
POST https://core-manager.a55.tech/api/v1/bank/wallet/zeroauth/
请求字段
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
wallet_uuid | string (UUID) | 是 | 用于路由的钱包上下文 |
holder_name | string | 是 | 持卡人姓名 |
card_number | string | 是 | 主账号 |
expiry_month | string | 是 | 两位月份(01–12) |
expiry_year | string | 是 | 四位年份 |
cvv | string | 是 | 安全码(3–4 位) |
brand | string | 是 | 卡品牌:Visa、Mastercard、AmericanExpress、Discover、DinersClub、JCB |
示例
- cURL
- Python
- JavaScript
curl -sS -X POST 'https://core-manager.a55.tech/api/v1/bank/wallet/zeroauth/' \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"wallet_uuid": "1f937eb2-cf2c-421c-aa24-3f26519f42fa",
"holder_name": "张伟",
"card_number": "4111111111111111",
"expiry_month": "12",
"expiry_year": "2030",
"cvv": "123",
"brand": "Visa"
}'
import os, requests
r = requests.post(
"https://core-manager.a55.tech/api/v1/bank/wallet/zeroauth/",
headers={"Authorization": f"Bearer {os.environ['ACCESS_TOKEN']}"},
json={
"wallet_uuid": "1f937eb2-cf2c-421c-aa24-3f26519f42fa",
"holder_name": "张伟",
"card_number": "4111111111111111",
"expiry_month": "12",
"expiry_year": "2030",
"cvv": "123",
"brand": "Visa",
},
timeout=30,
)
data = r.json()
if data["is_valid"]:
print("卡片有效——可进行令牌化或扣款")
else:
print(f"卡片被拒绝:代码 {data['code']}")
const res = await fetch('https://core-manager.a55.tech/api/v1/bank/wallet/zeroauth/', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
wallet_uuid: '1f937eb2-cf2c-421c-aa24-3f26519f42fa',
holder_name: '张伟',
card_number: '4111111111111111',
expiry_month: '12',
expiry_year: '2030',
cvv: '123',
brand: 'Visa',
}),
});
const { is_valid, code } = await res.json();
响应(有效)
{
"internal_uuid": "d96561ac-4331-4553-921c-d1b01c63521d",
"is_valid": true,
"code": "00"
}
响应(无效)
{
"internal_uuid": "d96561ac-4331-4553-921c-d1b01c63521d",
"is_valid": false,
"code": "05"
}
响应码
| 码 | 描述 | 操作建议 |
|---|---|---|
00 | 已批准 / 卡片有效 | 继续令牌化或扣款 |
05 | 拒绝交易 | 发卡行拒绝——请持卡人联系银行 |
14 | 无效卡号 | 检查卡号格式(Luhn(卢恩校验算法)) |
51 | 余额不足 | 零额验证中较少见——稍后重试 |
54 | 卡片过期 | 请使用未过期的卡片 |
57 | 交易不允许 | 检查卡片配置或使用其他卡片 |
62 | 受限卡片 | 卡片已被发卡行冻结 |
63 | 安全违规 | 可能为 CVV 不匹配 |
76 | 发送的数据无效 | 检查请求字段 |
79 | 授权错误 | 发卡行临时错误——稍后重试 |
N7 | CVV(卡片验证码)验证失败 | 重新输入 CVV;检查位数 |
91 | 发卡行不可用 | 网络问题——稍后重试 |
96 | 系统故障 | 通用错误——重试或联系支持 |
389 | 注册限制 | 卡片在注册级别受限 |
500 | 请求无效 | 请求结构错误 |
结合令牌化使用
在显式令牌化之前执行零额验证,确保只对已确认有效的卡片进行存储。