BIN-Nummern verstehen: ein Leitfaden für Entwickler
Was ist eine BIN/IIN-Nummer?
Bank Identification Numbers (BIN) oder Issuer Identification Numbers (IIN) sind die ersten 6-8 Ziffern einer Zahlungskartennummer, die das kartenausgebende Institut identifizieren. Diese Nummern sind entscheidend für die Zahlungsabwicklung, die Betrugserkennung und das Routing von Transaktionen.
Aufbau einer BIN-Nummer
Aufschlüsselung des Standardformats
| Position | Länge | Zweck | Beispiel |
|---|---|---|---|
| 1 | 1 Ziffer | Major Industry Identifier (MII) | 4 (Bankwesen) |
| 2-6 | 5 Ziffern | Ausgebendes Institut | 12345 |
| 7-8 | 2 Ziffern | Erweiterte BIN (optional) | 67 |
Werte des Major Industry Identifier (MII)
| MII-Ziffer | Branche |
|---|---|
| 0 | ISO/TC 68-Zuweisung |
| 1 | Fluggesellschaften |
| 2 | Fluggesellschaften/Finanzwesen |
| 3 | Reisen/Unterhaltung |
| 4 | Bankwesen/Finanzwesen |
| 5 | Bankwesen/Finanzwesen |
| 6 | Einzelhandel |
| 7 | Erdöl/Sonstiges |
| 8 | Gesundheitswesen/Telekommunikation |
| 9 | Nationale Zuweisung |
Häufige BIN-Bereiche nach Kartennetzwerk
Primäre BIN-Bereiche
bin_ranges = {
'Visa': ['4'],
'Mastercard': ['51-55', '2221-2720'],
'American Express': ['34', '37'],
'Discover': ['6011', '644-649', '65'],
'JCB': ['3528-3589'],
'UnionPay': ['62']
}
Implementierung einer BIN-Abfrage
def validate_bin(card_number):
bin_number = card_number[:6]
# Einfache Validierung
if not bin_number.isdigit():
return False
# Ermittlung des Kartennetzwerks
if card_number.startswith('4'):
network = 'Visa'
elif any(card_number.startswith(str(i)) for i in range(51, 56)):
network = 'Mastercard'
elif card_number.startswith(('34', '37')):
network = 'American Express'
else:
network = 'Unknown'
return {
'bin': bin_number,
'network': network,
'length': len(card_number),
'valid': len(card_number) in [13, 15, 16, 19]
}
Eigenschaften von BIN-Daten
Standardfelder einer BIN-Antwort
| Feld | Beschreibung | Beispiel |
|---|---|---|
| scheme | Kartennetzwerk | "visa" |
| country | Ausgabeland | "US" |
| type | Kartentyp | "credit" |
| category | Kartenkategorie | "platinum" |
| issuer | Ausgebende Bank | "CHASE" |
| length | Länge der Kartennummer | 16 |
Validierungsregeln auf Basis der BIN
Kartennummernlänge nach Kartennetzwerk
| Kartennetzwerk | Gültige Längen |
|---|---|
| Visa | 13, 16, 19 |
| Mastercard | 16 |
| American Express | 15 |
| Discover | 16, 19 |
| UnionPay | 16-19 |
Integrationsbeispiel
const binValidator = {
checkBIN: function(cardNumber) {
const bin = cardNumber.substring(0, 6);
const length = cardNumber.length;
// Einfache Formatprüfung
if (!/^\d{6}/.test(bin)) {
return {
valid: false,
error: 'Invalid BIN format'
};
}
// Erkennung des Kartennetzwerks
const network = this.detectNetwork(bin);
// Längenvalidierung
const isValidLength = this.validateLength(length, network);
return {
valid: isValidLength,
network: network,
bin: bin,
cardLength: length
};
},
detectNetwork: function(bin) {
// Logik zur Erkennung des Kartennetzwerks
if (/^4/.test(bin)) return 'visa';
if (/^5[1-5]/.test(bin)) return 'mastercard';
if (/^3[47]/.test(bin)) return 'amex';
return 'unknown';
}
};
Sicherheitsaspekte
-
Datenschutz
- Speichern Sie niemals vollständige Kartennummern
- Verschlüsseln Sie BIN-Daten bei der Übertragung
- Beschränken Sie den Zugriff auf BIN-Daten
-
Compliance-Anforderungen
- PCI-DSS-Konformität für die BIN-Speicherung
- Richtlinien zur Datenaufbewahrung
- Umsetzung von Zugriffskontrollen
-
Leistungsoptimierung
- Cachen Sie Ergebnisse von BIN-Abfragen
- Implementieren Sie Rate Limiting
- Nutzen Sie BIN-Abfragen in Batches
Best Practices für die BIN-Verarbeitung
| Vorgehen | Zweck | Umsetzung |
|---|---|---|
| Caching | API-Aufrufe reduzieren | BIN-Daten im Speicher halten |
| Validierung | Fehler vermeiden | Format vor der Verarbeitung prüfen |
| Monitoring | Probleme erkennen | Muster von BIN-Abfragen protokollieren |
Dieser Leitfaden bietet die wesentlichen Informationen für die Arbeit mit BIN-Nummern in Zahlungsabwicklungssystemen. Nutzen Sie ihn, um Zahlungsvalidierung, Betrugserkennung und Transaktions-Routing in Ihren Anwendungen zu verbessern.