您需要在发货结账流程之前验证支付卡的BIN/IIN,阻止不支持的卡片或路由交易。在本指南结束时,您将能够向Zyla API Hub上的卡片检查器API发出有效的GET请求,解析响应,并使用curl、Python或JavaScript将其连接到您的服务——准备在本周部署。
API返回的内容及其使用时机
卡片检查器API验证BIN/IIN(卡号的前6位数字),并返回有关卡片的结构化元数据,包括品牌、类型、级别、发行者、发行者联系信息和国家。典型用途包括:
- 在结账时预验证BIN,以立即显示品牌和发行者。
- 在授权之前,服务器端阻止不支持的品牌或国家。
- 路由逻辑:例如,将在TR发行的MASTERCARD CREDIT GOLD发送到特定处理器。
- 分析:按发行者或国家对转化进行细分,而无需处理完整的PAN。
所有调用都通过Zyla API Hub进行,因此您只需使用一个帐户、一个API密钥和一个跨API的单一订阅模型。
在Zyla API Hub上入门
要调用卡片检查器API,请访问其列表页面并订阅:Zyla API Hub上的卡片检查器API。点击订阅(或如果可用,点击开始免费试用)。在Zyla上,计费是订阅+配额(而不是按调用计费)。对于您的第一个API,您通常会获得7天的试用或50个请求;没有免费计划。请查看API页面以获取当前访问选项和定价。订阅后,您将收到一个API密钥。将其用作授权头,如下所示:
- Authorization: Bearer YOUR_API_KEY
如果您还没有帐户,请在此处创建一个:注册。
端点概述
卡片检查器API公开一个单一的端点,用于验证BIN并返回卡片和发行者的详细信息。
- 名称:检查卡片
- 方法:GET
- URL:https://zylalabs.com/api/2333/card-checker-api/2243/check-card
- 所需查询参数:
- bin(数字):卡片的前6位数字。示例:444444
高级行为:您提供一个6位数的BIN,并接收一个验证布尔值、消息和一个包含品牌、类型、级别、发行者、发行者联系信息和ISO国家的数据信息对象。
使用curl的首次请求
使用官方示例进行首次调用。将YOUR_API_KEY替换为您从Zyla获得的令牌。
curl -s -X GET "https://zylalabs.com/api/2333/card-checker-api/2243/check-card?bin=444444" \
-H "Authorization: Bearer YOUR_API_KEY"
官方示例JSON响应:
{
"status": 200,
"success": true,
"isValid": true,
"message": "The BIN number is valid.",
"data": {
"bin_iin": "557829",
"card_brand": "MASTERCARD",
"card_type": "CREDIT",
"card_level": "GOLD",
"issuer_name_bank": "AKBANK T.A.S.",
"issuer_bank_website": "------",
"issuer_bank_phone": "4442525",
"iso_country_name": "TURKEY",
"iso_country_code": "TR"
}
}
您将使用的关键字段:
- isValid:布尔值,指示BIN是否被识别为有效。
- card_brand、card_type、card_level:用于UI和路由逻辑的卡片分类。
- issuer_name_bank、issuer_bank_phone、issuer_bank_website:用于支持工作流程或合规检查的发行者元数据。
- iso_country_name、iso_country_code:国家(ISO alpha-2代码),用于基于地理的逻辑。
Python示例:根据品牌验证和分支
下面的代码片段调用相同的端点,并根据特定品牌和国家分支逻辑。它仅使用文档中记录的参数和头。
import os
import requests
API_KEY = os.environ.get("ZYLALABS_API_KEY", "YOUR_API_KEY")
URL = "https://zylalabs.com/api/2333/card-checker-api/2243/check-card"
params = {"bin": 444444}
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(URL, params=params, headers=headers, timeout=10)
resp.raise_for_status()
data = resp.json()
if data.get("success") and data.get("isValid") and data.get("data"):
details = data["data"]
brand = details.get("card_brand")
type = details.get("card_type")
level = details.get("card_level")
country = details.get("iso_country_code")
print(f"Brand={brand}, Type={type}, Level={level}, Country={country}")
# 示例路由条件
if brand == "MASTERCARD" and type == "CREDIT" and country == "TR":
print("Route to processor: TR-MC-CREDIT")
else:
print("Route to default processor")
else:
print("BIN not valid or lookup unsuccessful")
要在本地测试,请导出ZYLALABS_API_KEY并运行脚本。超时、重试和日志记录留给您的环境。
JavaScript示例:边缘或Node运行时
此示例使用fetch调用相同的端点,并读取结账UI的实用字段。
const API_KEY = process.env.ZYLALABS_API_KEY || "YOUR_API_KEY";
const url = "https://zylalabs.com/api/2333/card-checker-api/2243/check-card?bin=444444";
async function checkBin() {
const res = await fetch(url, {
method: "GET",
headers: { "Authorization": `Bearer ${API_KEY}` }
});
if (!res.ok) {
throw new Error(`HTTP ${res.status}`);
}
const json = await res.json();
if (json.success && json.isValid && json.data) {
const {
card_brand,
card_type,
card_level,
issuer_name_bank,
iso_country_code
} = json.data;
console.log(`Brand: ${card_brand}, Type: ${card_type}, Level: ${card_level}`);
console.log(`Issuer: ${issuer_name_bank}, Country: ${iso_country_code}`);
} else {
console.log("Invalid BIN or lookup failed");
}
}
checkBin().catch(err => {
console.error("Request failed:", err);
});
在无服务器、边缘或后台作业中使用相同的代码。将API密钥保留在服务器端,切勿将其暴露给浏览器。
您可以存储的本地测试示例响应
在构建UI流程和单元测试时,保留一些带有官方示例响应的固定文件,以便您可以在不触及配额的情况下进行迭代。以下是官方示例JSON:
{
"status": 200,
"success": true,
"isValid": true,
"message": "The BIN number is valid.",
"data": {
"bin_iin": "557829",
"card_brand": "MASTERCARD",
"card_type": "CREDIT",
"card_level": "GOLD",
"issuer_name_bank": "AKBANK T.A.S.",
"issuer_bank_website": "------",
"issuer_bank_phone": "4442525",
"iso_country_name": "TURKEY",
"iso_country_code": "TR"
}
}
您还可以将相同的JSON复制到不同的文件名(例如,sample_valid_1.json,sample_valid_2.json),以便在服务之间一致地测试解析路径。
{
"status": 200,
"success": true,
"isValid": true,
"message": "The BIN number is valid.",
"data": {
"bin_iin": "557829",
"card_brand": "MASTERCARD",
"card_type": "CREDIT",
"card_level": "GOLD",
"issuer_name_bank": "AKBANK T.A.S.",
"issuer_bank_website": "------",
"issuer_bank_phone": "4442525",
"iso_country_name": "TURKEY",
"iso_country_code": "TR"
}
}
对于端到端测试,加载相同的固定文件并断言您的应用程序将品牌/类型/级别映射到预期的用户体验或路由选择。
{
"status": 200,
"success": true,
"isValid": true,
"message": "The BIN number is valid.",
"data": {
"bin_iin": "557829",
"card_brand": "MASTERCARD",
"card_type": "CREDIT",
"card_level": "GOLD",
"issuer_name_bank": "AKBANK T.A.S.",
"issuer_bank_website": "------",
"issuer_bank_phone": "4442525",
"iso_country_name": "TURKEY",
"iso_country_code": "TR"
}
}
节省时间的实施细节
- 参数验证:服务器端严格接受6个数字的bin参数。在调用API之前拒绝其他任何内容。
- 缓存:BIN元数据不是用户特定的。通过BIN在您的数据存储或边缘缓存中缓存成功的响应,以减少往返。
- 超时和重试:在您的HTTP客户端中设置明确的超时。仅在您的环境中对安全重试类别使用保守的重试和回退。
- PCI范围:您只传输一个BIN(前6位数字),而不是完整的PAN。保持调用在服务器端,避免记录API密钥或敏感头。
- 国际化:使用iso_country_code本地化UI徽章、欺诈规则或路由策略。
- 分析:持久化{card_brand,card_type,card_level,iso_country_code}以按群体分组转化、拒绝和退款。
将响应映射到应用程序逻辑
以下是您可以根据自己的堆栈调整的简单映射模式:
- 在BIN输入(前6位数字)时,向端点发出服务器端调用,带上bin。
- 如果isValid和success都为真:
- 使用card_brand显示品牌图标(例如,MASTERCARD)。
- 使用card_type和iso_country_code选择处理路线。
- 如果适用,在您的系统中启用特定于国家的3DS或SCA规则。
- 如果验证失败(例如,不成功或不是isValid),请继续使用通用用户体验或显示非阻塞提示。
保持issuer_name_bank可用于支持日志或争议工作流程。
通过MCP从AI代理调用API
如果您使用MCP兼容的客户端(Claude Code、Cursor、Windsurf等)协调开发任务,您还可以通过MCP端点调用Zyla API。根据您的客户端指示提供您的Zyla API密钥并调用:
- MCP基础:https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY
查看MCP文档并连接您的客户端,以便您的代理可以向卡片检查器API端点发出相同的GET请求并将JSON返回到您的工作区。了解更多信息,请访问:MCP。
操作说明
- 配额和试用:Zyla使用订阅+配额。对于您的第一个API,您通常会获得7天的试用或50个请求。没有免费计划。请查看卡片检查器API页面以获取当前详细信息。
- 安全性:将Authorization头保留在服务器端。如果暴露,请轮换您的密钥。
- 可观察性:在您的系统中记录请求ID。删除API密钥,并避免在任何内部日志中存储完整的PAN。
- 优雅降级:如果在您的环境中查找暂时不可用,请允许结账继续进行通用副本(不要在瞬态元数据查找时阻止合法用户)。
再次查看官方JSON以明确合同
对于团队交接和合同优先集成,请在文档中保留官方示例,以澄清字段名称和嵌套:
{
"status": 200,
"success": true,
"isValid": true,
"message": "The BIN number is valid.",
"data": {
"bin_iin": "557829",
"card_brand": "MASTERCARD",
"card_type": "CREDIT",
"card_level": "GOLD",
"issuer_name_bank": "AKBANK T.A.S.",
"issuer_bank_website": "------",
"issuer_bank_phone": "4442525",
"iso_country_name": "TURKEY",
"iso_country_code": "TR"
}
}
在您的序列化程序、DTO或TypeScript类型中使用这些确切的键,以避免跨服务的不匹配。
故障排除检查清单
- 您环境中的401/403错误:确保Authorization头存在,并且密钥在您的Zyla帐户下处于活动状态。
- 解析器中的意外JSON形状:重新检查您是否调用了文档中记录的端点URL,并且仅传递了bin参数。
- 看似有效但在您的UI中返回not isValid的BIN:验证您是否发送了确切的6位数字,并且在数字解析过程中没有去掉前导零。
- 无服务器中的间歇性网络错误:稍微增加超时并添加一次带抖动的重试;缓存之前成功的查找。
接下来该去哪里
探索卡片检查器API列表以获取订阅选项、配额和使用指南:卡片检查器API。Zyla集中管理数千个API的身份验证、计费和监控,因此一旦上线,添加其他支付或数据增强API到同一密钥下就变得简单,您可以在Zyla上进行操作。
常见问题
BIN检查的确切URL和方法是什么?
GET https://zylalabs.com/api/2333/card-checker-api/2243/check-card,带有bin查询参数和Authorization: Bearer YOUR_API_KEY。
需要哪些参数?
bin(数字,6位)。示例:444444。此端点不需要其他参数。
我应该从响应中获取哪些字段?
首先检查success和isValid。然后读取data.card_brand、data.card_type、data.card_level、data.issuer_name_bank、data.iso_country_code(如果您显示它,则还要读取iso_country_name)。
计费是如何处理的?
Zyla使用订阅+配额(而不是按调用计费)。对于您的第一个API,您通常会获得7天的试用或50个请求。没有免费计划。请查看API页面以获取当前详细信息。
我可以从AI编码代理调用这个吗?
可以,通过Zyla的MCP端点https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY。配置您的MCP兼容客户端以发出相同的GET调用并返回JSON。
准备好发布您的集成了吗?在这里创建您的帐户,订阅卡片检查器API,并获取您的密钥:注册。然后使用上面的curl命令验证您的第一个BIN,并将响应连接到您的结账或路由逻辑。