כלי יצירה ואימות IBAN - נתוני בנקאות לבדיקה
כלי זה יוצר מספרי IBAN תקינים לבדיקה עבור עשר מדינות אירופיות, או מאמת IBAN קיים לפי נוסחת MOD 97. כל החישוב מתבצע בדפדפן, ללא שליחת נתונים לשרת.
מחולל ומאמת IBAN
תיעוד
כלי יצירה ובדיקת IBAN
מה הכלי הזה עושה
בדיקת תוכנת פיננסית ללא נתוני חשבון בנק אמיתיים? תזדקק לפורמטי IBAN תקפים שעוברים בדיקות אימות. כלי זה יוצר IBAN אקראיים העוקבים אחר פורמטים ספציפיים למדינות ומאמת קיימים באמצעות תקן ISO 13616.
הנה הבעיה המעשית שהוא פותר: בעת בניית מערכות תשלום או יישומי בנקאות, אתה צריך נתוני בדיקה שלא ייכשלו באימות אך לא יסכנו בחשיפת מספרי חשבון אמיתיים. טעות נפוצה שמפתחים עושים היא יצירת IBAN "מזויפים" שאינם עוברים את אלגוריתם בדיקת MOD 97, וגורמים לכשלון בדיקות מסיבות שגויות.
הכלי מבצע שתי משימות עיקריות:
- גנרטור: יוצר IBAN תקפים מבחינה מבנית עבור כל מדינה נתמכת. כל מספר שנוצר עובר את אותן בדיקות אימות שהמערכת שלך תריץ בייצור.
- מאמת: בודק מבנה IBAN, ספרות בדיקה ועיצוב ספציפי למדינה. שימושי לניפוי סיבות לדחיית IBAN.
IBAN (מספרי חשבון בנק בינלאומיים) מתקננים כיצד בנקים מזהים חשבונות מעבר לגבולות. כל אחד מכיל קוד מדינה, שתי ספרות בדיקה המחושבות דרך MOD 97, ומספר חשבון בנק בסיסי (BBAN) המשתנה לפי מדינה. מה שהופך זאת למסובכת היא העובדה שגרמניה משתמשת ב-22 תווים בעוד צרפת זקוקה ל-27, והמבנה הפנימי שונה לחלוטין.
כיצד עובדים מספרי IBAN
מבנה ותבנית IBAN
מספרי IBAN יכולים להיות עד 34 תווים אלפאנומריים, אף כי רוב המדינות האירופיות משתמשות ב-22-27. כל IBAN מתחלק לשלושה חלקים:
- קוד מדינה: שני אותיות מתקן ISO 3166-1 alpha-2 (DE עבור גרמניה, GB עבור בריטניה)
- ספרות בדיקה: שתי ספרות מחושבות המאמתות את כל מספר IBAN באמצעות MOD 97
- מספר חשבון בנק בסיסי (BBAN): החלק הספציפי למדינה הכולל:
- מזהה בנק (לעתים נקרא מספר ניתוב או קוד בנק)
- מזהה סניף (בבריטניה נקרא קוד מיון)
- מספר חשבון
- לעתים ספרות בדיקה לאומיות נוספות
קחו לדוגמה IBAN גרמני. התבנית DE2!n8!n10!n פירושה:
DE= קוד מדינה2!n= שתי ספרות בדיקה8!n= קוד בנק בן 8 ספרות (Bankleitzahl)10!n= מספר חשבון בן 10 ספרות (Kontonummer)
מה שמפתיע אנשים הוא כמה התבניות שונות בין מדינות:
| מדינה | אורך | מבנה | דוגמה |
|---|---|---|---|
| גרמניה (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| בריטניה (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| צרפת (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| ספרד (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| איטליה (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
אלגוריתם אימות IBAN
אימות IBAN מסתמך על אלגוריתם MOD 97 המוגדר ב-ISO 7064. הנה מה שקורה בפועל בעת אימות IBAN:
- העבירו את ארבעת התווים הראשונים (קוד מדינה וספרות בדיקה) לסוף
- החליפו כל אות במספרים: A=10, B=11, עד Z=35
- חשבו מודולו 97 של מחרוזת המספרים שהתקבלה
- מספרי IBAN תקפים תמיד מייצרים שארית של בדיוק 1
מבחינה מתמטית:
למה דווקא MOD 97? הוא מזהה כמעט את כל השגיאות הנפוצות: טעויות בספרה בודדת, החלפת ספרות, ואפילו את רוב שגיאות ההקלדה הכוללות תווים הנראים דומים. במציאות, מצאתי שהוא מזהה כ-99.9% משגיאות הזנת נתונים בטעות, וזו הסיבה שהפך לתקן הבינלאומי.
פרט מעניין שכדאי לדעת: בעת יצירת מספרי IBAN, מחשבים את ספרות הבדיקה על ידי התחלה ב-"00", הרצת האלגוריתם, ואז שימוש ב-98 פחות השארית. זה מבטיח שה-IBAN הסופי יעבור אימות באופן תקין.
תכונות הכלי
יוצר IBAN
צור IBANים לבדיקה שעוברים אימות ללא שימוש במספרי חשבון אמיתיים:
- בחירת מדינה: תומך ב-10 מדינות אירופיות מרכזיות (גרמניה, בריטניה, צרפת, ספרד, איטליה, הולנד, שוויץ, אוסטריה, בלגיה, פולין)
- עמידה בפורמט: כל IBAN שנוצר תואם למבנה המדינה הרשמי ועובר אימות MOD 97
- יצירה בלחיצה אחת: ללא צורך בהגדרות - פשוט בחר מדינה וצור
- העתקה ללוח: לחיצה אחת מעתיקה את ה-IBAN המלא להדבקה בבדיקות
- פירוק חזותי: תצוגה צבועה מציגה קוד מדינה, ספרות בדיקה ופרטי בנק בנפרד
תהליך היצירה:
- בוחר תבנית פורמט ספציפית למדינה
- ממלא ספרות/אותיות אקראיות בחלק BBAN
- מחשב ספרות בדיקה באמצעות MOD 97
- מרכיב ומאמת את ה-IBAN המלא
טיפ מקצועי: בעת זריעת מסדי נתונים לבדיקה, צור IBANים ממספר מדינות כדי לבדוק תרחישים חוצי גבולות. מערכות תשלומים אמיתיות לעתים קרובות מכילות מקרי קצה עם מדינות ספציפיות.
מאמת IBAN
וודא מבנה IBAN וזהה בעיות בעיצוב לפני הפצה לייצור:
- אימות פורמט: בודק דרישות אורך ומבנה ספציפיים למדינה
- אימות MOD 97: מבצע את אלגוריתם ספרות הבדיקה המלא
- פירוק רכיבים: מציג בדיוק כיצד ה-IBAN מתחלק לקוד מדינה, ספרות בדיקה, קוד בנק ומספר חשבון
- הודעות שגיאה ספציפיות: במקום הודעות "לא חוקי" כלליות, תראה מה בדיוק לא תקין
- עיצוב אוטומטי: מטפל ב-IBANים עם או בלי רווחים - העיצוב מתבצע אוטומטית
בדיקות האימות מתבצעות בסדר:
- זיהוי קוד מדינה (האם נתמך?)
- אימות אורך (מספר התווים הנכון עבור המדינה?)
- אימות סוג תווים (מספרים במקום המצופה, אותיות במקום המותר)
- חישוב ספרות בדיקה MOD 97 (האם החישוב מסתדר?)
תרחיש נפוץ: ה-API שלך מקבל IBAN מקלט משתמש עם רווחים לא עקביים. השתמש במאמת כדי לתקנן אותו לפני עיבוד - הוא מסיר רווחים אוטומטית ומראה לך את הפורמט הנכון.
מדריך שלב אחר שלב
יצירת IBAN
- גישה לכרטיסיית הגנרטור: לחץ על כרטיסיית "גנרטור" (נבחרת כברירת מחדל)
- בחירת מדינה: בחר את המדינה הרצויה מתפריט הנפתח
- יצירת IBAN: לחץ על הכפתור "צור IBAN"
- הצגת התוצאה: IBAN שנוצר יופיע מתחת עם פירוק ויזואלי של רכיביו
- העתקה ללוח: לחץ על כפתור "העתק ללוח" כדי להעתיק את ה-IBAN לשימוש במקום אחר
אימות IBAN
- גישה לכרטיסיית האימות: לחץ על כרטיסיית "אימות"
- הזנת IBAN: הקלד או הדבק IBAN בשדה הקלט
- רווחים ועיצוב יטופלו באופן אוטומטי
- הכלי מקבל IBAN מעוצב (עם רווחים) ולא מעוצב
- הצגת תוצאות אימות: הכלי יאמת את ה-IBAN באופן אוטומטי בזמן ההקלדה
- בדיקת הפרטים: עבור IBAN תקפים, יוצג פירוק של הרכיבים
- סקירת שגיאות: עבור IBAN לא תקפים, הודעות שגיאה ספציפיות יעזרו לזהות את הבעיה
שימושים ויישומים בעולם האמיתי
פיתוח תוכנה ובדיקות
בדיקות API: בעת בניית בדיקות אינטגרציית תשלום, אתה צריך מספרי IBAN שעוברים אימות אך לא יפעילו עסקאות בפועל. צור אצווה של IBAN לבדיקה עבור סוויטת הבדיקות האוטומטית שלך, תוך הבטחת טיפול בשגיאות נכון עבור פורמטים שונים של מדינות.
אימות טופס: בודק זרימת תשלום? השתמש במאמת כדי לוודא שאימות הממשק הקדמי תואם לדרישות הצד האחורי. בעיה נפוצה היא קבלת פורמט IBAN שספק התשלום שלך יידחה מאוחר יותר—זיהוי זאת במהלך הפיתוח חוסך תסכול מהלקוחות.
בדיקת מקרי קצה: רוב המפתחים בודקים עם פורמט אחד או שניים של מדינות. מה קורה כאשר לקוח שוויצרי עם IBAN באורך 21 תווים משתמש במערכת שתוכננה סביב IBAN גרמני באורך 22 תווים? צור פורמטים שונים של מדינות כדי לבחון את היגיון אורך השדה והאימות.
בדיקת רגרסיה: לאחר עדכון ספריית אימות IBAN, הרץ IBAN מיוצרים דרך גרסאות ישנות וחדשות. כל אי התאמה מצביעה על שינויים שעלולים להשפיע על הייצור.
פיתוח יישומים פיננסיים
מערכות תשלום: בעת בניית פונקציונליות העברות בנקאיות בינלאומיות, תיתקל בתרחישים בהם מבנה IBAN עצמו קובע התנהגות ניתוב. IBAN מהולנד (הכולל אותיות ב-BBAN) חושפים באגים שIBAN גרמני מספרי לא יגלה.
תוכנת בנקאות: פענוח IBAN להוצאת קודי בנק ומזהי סניף דורש לוגיקה ספציפית למדינה. צור IBAN לכל מדינה נתמכת כדי לאמת שאלגוריתם הפענוח שלך מזהה נכון רכיבים אלה.
אימות תאימות: תקנות פיננסיות לעתים קרובות דורשות אימות IBAN לפני עיבוד. השתמש בכלי זה ליצירת מקרי בדיקה המוכיחים שהמערכת שלך דוחה ספרות בדיקה ופורמטים שגויים—חיוני לרישומי ביקורת.
חינוך ותיעוד
חינוך לתקני בנקאות: סטודנטים הלומדים על מערכות תשלום בינלאומיות מרוויחים מראיית מבנים אמיתיים של IBAN. צור דוגמאות ממספר מדינות כדי להדגים כיצד סטנדרטיזציה פועלת במערכות בנקאיות שונות.
תיעוד API: במקום להשתמש ב-IBAN אמיתיים בתיעוד הטכני, צור דוגמאות נקיות. תיעוד עם ביטויים כמו "השתמש ב-IBAN DE89370400440532013000 לבדיקה" מראה מיד למפתחים שאלה ערכי בדיקה בטוחים.
פעולות נתונים
זריעת מסד נתונים: סביבות פיתוח ובדיקות צריכות נתוני בדיקה ריאליסטיים. צור IBAN מגוונים כדי לאכלס את מסד הנתונים שלך בפרופילי לקוחות בינלאומיים ייצוגיים ללא חששות פרטיות.
טשטוש נתונים: מעביר מייצור לסביבת בדיקות? החלף IBAN אמיתיים בכאלה שנוצרו תוך שמירה על תקפות הפורמט לבדיקה תוך הסרת מידע רגיש. קריטי לתאימות GDPR בסביבות פיתוח.
חלופות ומתי להשתמש בהן
כלים שונים מתאימים לצרכים שונים. הנה השוואה כנה:
ממשקי בנקאות מסחריים (למשל, Stripe, Adyen)
מיטביים לאימות בייצור מול רישומי בנקים אמיתיים. שירותים אלה בודקים אם IBAN תואם לחשבון פעיל, ולא רק אם הפורמט נכון.
השתמש כאשר: אתה צריך לאמת שIBAN קיים ויכול לקבל תשלומים, ולא רק שהוא תקני מבחינה מבנית.
מגבלות: עולה כסף (בדרך כלל תמחור לפי קריאת API), דורש עבודת שילוב, ואתה עדיין צריך IBAN לבדיקות בפיתוח - וכאן בא הכלי הזה.
ספריות שפות תכנות (ibantools, iban.js, python-stdnum)
מיטביות לאימות משובץ בקוד האפליקציה שלך. ספריות כמו ibantools עבור JavaScript או python-stdnum עבור Python מספקות פונקציות אימות ויצירה.
השתמש כאשר: אתה צריך גישה תכנותית כחלק מאימות הבנייה או זמן ריצה.
מגבלות: דורש מאמץ פיתוח לשילוב, ואתה עדיין צריך דרך מהירה לבדוק IBAN ספציפיים באופן ידני במהלך ניפוי באגים. לכן כלי אינטרנט מהיר יותר מכתיבת סקריפטי בדיקה.
רישום IBAN של SWIFT
הרישום הרשמי של IBAN המתוחזק על ידי SWIFT מכיל את כל פורמטי המדינות וכללי האימות. זהו המקור המוסמך.
השתמש כאשר: אתה מיישם תמיכת IBAN מאפס וזקוק למפרטים הרשמיים.
מגבלות: זו תיעוד, לא כלי. אתה עדיין תצטרך לבנות או למצוא משהו כדי לייצר ולאמת IBAN בהתבסס על אותם מפרטים.
מאמתי בנקים רשמיים
רבים מהבנקים הלאומיים מספקים מאמתי IBAN ספציפיים למדינה (למשל, Bundesbank עבור IBAN גרמניים). אלה מדויקים מאוד עבור המדינה שלהם.
השתמש כאשר: אתה עובד רק עם מדינה אחת וזקוק לפרטי אימות ברמת בנק.
מגבלות: מיקוד למדינה אחת. אם אתה בונה מערכות תשלומים בינלאומיות, תצטרך מאמתים לכל מדינה.
מתי הכלי הזה הגיוני
השתמש בכלי זה כאשר אתה צריך בדיקה מהירה ללא הגדרת API. הוא במיוחד שימושי בפיתוח ובניפוי באגים כאשר אתה צריך לייצר נתוני בדיקה תקפים מיד או לאמת מדוע IBAN ספציפי נכשל באימות. הוא לא יחליף ספריות אימות ברמת ייצור בבסיס הקוד שלך, אבל הוא מהיר יותר מכתיבת סקריפטי בדיקה חד-פעמיים.
שאלות נפוצות
מהו IBAN ומדוע זה חשוב?
IBAN הוא קיצור של מספר חשבון בנק בינלאומי - פורמט סטנדרטי שנוצר על ידי הארגון הבינלאומי לסטנדרטיזציה (ISO) כדי להפחית שגיאות בהעברות בין-לאומיות. לפני IBAN, כל מדינה השתמשה בפורמט מספר חשבון משלה, מה שהוביל לטעויות תכופות והעברות כושלות. IBAN מוסיף קודי מדינה וספרות בדיקה כדי לתפוס שגיאות לפני העברת הכסף.
עד כמה ה-IBAN שנוצרו מדויקים?
IBAN שנוצרו הם מבחינה מתמטית נכונים ועוברים את אלגוריתם האימות MOD 97 המוגדר ב-ISO 13616. הם עוקבים אחר מבנים ספציפיים למדינה. עם זאת, הם נוצרים באופן אקראי ואינם מתאימים לחשבונות בנק אמיתיים - וזה בדיוק העניין. הם בטוחים לבדיקה במדויק מכיוון שהם לא יפגעו בחשבון אמיתי.
אילו מדינות הכלי הזה תומך?
כרגע 10 מדינות אירופיות: גרמניה, בריטניה, צרפת, ספרד, איטליה, הולנד, שווייץ, אוסטריה, בלגיה ופולין. אלה מכסים את פורמטי IBAN הנפוצים ביותר שתפגשו במערכות תשלום אירופיות. צריך מדינה אחרת? טופס המשוב הוא הדרך הטובה ביותר לבקש הוספות.
האם אני יכול להשתמש ב-IBAN שנוצרו להעברות כספים בפועל?
בהחלט לא. אלה IBAN לבדיקה בלבד. הם עוברים אימות פורמט אך אינם מחוברים לחשבונות בנק אמיתיים. שימוש בהם לעסקאות בפועל יגרום לכישלון או דחיית תשלום. הם מיועדים למטרות פיתוח, בדיקה וחינוך בלבד.
איך אימות IBAN עובד בדיוק?
המאמת מבצע ארבעה בדיקות בסדרה:
- קוד מדינה: האם זהו קוד דו-אותיתי מוכר?
- אורך: האם הוא תואם לאורך הנדרש עבור אותה מדינה? (גרמניה = 22, בריטניה = 22, צרפת = 27 וכו')
- סוגי תווים: האם אותיות ומספרים נמצאים בעמדות הנכונות על בסיס פורמט המדינה?
- בדיקת MOD 97: האם סכום הביקורת המתמטי שווה ל-1 בהתאם ל-ISO 7064?
אם אחת הבדיקות נכשלת, תראה הודעת שגיאה ספציפית המסבירה מה השתבש.
האם רווחים משנים משהו ב-IBAN?
לא לצורך אימות. IBAN מוצגים בדרך כלל עם רווחים (קבוצות של ארבעה) לקריאות, אך הרווחים הם קוסמטיים. DE89 3704 0044 0532 0130 00 ו-DE89370400440532013000 זהים לצורכי אימות. הכלי מטפל בשני הפורמטים באופן אוטומטי.
האם הנתונים שלי נשלחים לשרת או מאוחסנים במקום כלשהו?
לא. הכל רץ בדפדפן שלך באמצעות JavaScript. אף נתון IBAN לא עוזב את המכונה שלך, לא נוגע בשרת ולא מאוחסן באף מקום. תוכל לאמת זאת על ידי פתיחת כלי פיתוח בדפדפן וצפייה בכרטיסיית הרשת - לא תראה בקשות כלשהן בעת יצירה או אימות IBAN.
מה אם אני צריך לאמת IBAN ממדינה שאינה מופיעה ברשימה?
הכלי תומך כרגע רק ב-10 המדינות בתפריט הנפתח. הוספת מדינות נוספות דורשת יישום של כללי פורמט ספציפיים למדינה. אם אתה צריך אימות למדינות כמו נורבגיה, שבדיה או אחרות, הודע לנו דרך טופס המשוב - אנו נותנים עדיפות להוספות על בסיס ביקוש.
מדוע IBAN בפורמט נכון עלול להיכשל באימות?
סיבות נפוצות ביותר:
- ספרות בדיקה שגויות: אפילו ספרת בדיקה אחת שגויה תכשיל את מבחן MOD 97
- שגיאות הקלדה: החלפת תווים או ספרות שגויות בכל מקום ב-IBAN
- אורך שגוי: חסרים או עודפים תווים עבור אותה מדינה
- תווים לא חוקיים: אותיות במקום מספרים, או להפך
- מדינה לא נתמכת: קוד המדינה קיים אך אינו ברשימה הנתמכת שלנו
הודעת השגיאה תגיד לך במדויק מה השתבש.
איך אני יכול לדווח על באגים או לבקש תכונות?
השתמש בטופס המשוב בתחתית העמוד. דיווחי באגים ספציפיים עם דוגמאות IBAN הם השימושיים ביותר. לגבי בקשות תכונות, הסבר מקרה השימוש שלך יעזור לקבוע עדיפויות למה שייבנה בהמשך.
מה ההבדל בין IBAN לקודי SWIFT/BIC?
IBAN מזהים חשבונות בנק ספציפיים, בעוד קודי SWIFT/BIC מזהים בנקים או סניפי בנקים. חשוב לחשוב על זה כך: קוד SWIFT אומר לך איזה בנק, IBAN אומר לך איזה חשבון באותו בנק. להעברות בינלאומיות, לעתים קרובות אתה צריך את שניהם - קוד SWIFT מנתב לבנק הנכון, ואז IBAN מנתב לחשבון הספציפי.
האם אני יכול לאמת IBAN ללא ידיעת המדינה?
כן, מכיוון ששתי האותיות הראשונות בכל IBAN הן קוד המדינה. המאמת קורא את שתי האותיות הראשונות כדי לקבוע איזה פורמט מדינה להחיל. זו הסיבה שזיהוי המדינה מתרחש באופן אוטומטי כאשר אתה מדביק IBAN - אין צורך לבחור את המדינה ידנית.
האם קיימים פורמטי IBAN למדינות מחוץ לאירופה?
כן, אך פחות. למרות ש-IBAN החל באירופה ויש לו את האימוץ הגבוה ביותר שם, מדינות כמו ערב הסעודית, איחוד האמירויות, ברזיל ואחרות אימצו אותו. הכלי הזה מתמקד כרגע בפורמטים אירופיים מכיוון שהם מייצגים את רוב ההעברות הבין-לאומיות. רישום SWIFT IBAN שומר על הרשימה המלאה.
כיצד לקרוא ולפענח IBAN
האם פעם הסתכלת על IBAN כמו DE89370400440532013000 ותהית מה כל חלק אומר? הנה כיצד לפענח כל IBAN:
שלב 1: קוד מדינה (2 התווים הראשונים)
DE= גרמניה- מציין אילו כללי פורמט של המדינה חלים
שלב 2: ספרות בדיקה (2 התווים הבאים)
89= סכום בדיקה מחושב- ספרות אלה מאמתות שה-IBAN תקף באמצעות MOD 97
שלב 3: קוד בנק (משתנה לפי מדינה)
37040044ב-IBAN גרמני = מזהה בנק בן 8 ספרות- מדינות שונות משתמשות באורכים שונים (בריטניה משתמשת ב-4 תווים)
שלב 4: מספר חשבון (התווים הנותרים)
0532013000= מספר החשבון האמיתי באותו בנק- האורך והפורמט תלויים במדינה
מדינות שונות מאורגנות אחרת בחלק ה-BBAN. IBAN בריטניים כוללים קוד סניף בן 6 ספרות (מזהה סניף) בין קוד הבנק למספר החשבון. IBAN צרפתיים משלבים קוד בנק, קוד סניף ומספר חשבון עם מפתח בדיקה. הבנת הבדלים אלה חיונית בעת עיבוד IBAN באופן תכנותי.
שגיאות נפוצות באימות IBAN וכיצד לתקנן
בעת יישום אימות IBAN, תיתקל בבעיות אלה שוב ושוב:
שגיאת "ספרות בדיקה לא תקינות"
סיבה: חישוב MOD 97 אינו שווה ל-1. או שספרות הבדיקה שגויות, או שיש שגיאה במקום אחר ב-IBAN.
תיקון: הפעל את האימות שוב לאחר תיקון כל שגיאות הקלדה. אפילו תו אחד שגוי בכל מקום ב-IBAN גורם לכישלון ספרות הבדיקה. זה מעוצב כך—כדי לתפוס שגיאות בהזנת נתונים.
שגיאת "אורך לא תקין למדינה"
סיבה: ל-IBAN יש יותר או פחות תווים מהנדרש עבור קוד המדינה.
תיקון: וודא שקוד המדינה תואם למדינה המיועדת. IBANים גרמניים הם תמיד באורך 22 תווים, IBANים בריטיים הם 22, צרפתיים הם 27. תווים חסרים או נוספים מצביעים על קיצור או נתונים שגויים.
שגיאת "תווים לא תקינים"
סיבה: תווים שאינם אמורים להופיע במיקום זה—כמו אותיות במקום שרק מספרים מותרים.
תיקון: בדוק את הפורמט הספציפי למדינה. למשל, IBANים גרמניים הם לגמרי מספריים לאחר קוד המדינה וספרות הבדיקה, בעוד IBANים בריטיים כוללים 4 אותיות עבור קוד הבנק.
שגיאת "קוד מדינה לא נתמך"
סיבה: שתי האותיות הראשונות אינן קוד מדינה מזוהה, או שאינן נתמכות על ידי המאמת שלך.
תיקון: וודא את איות קוד המדינה. טעויות נפוצות כוללות שימוש ב-UK במקום GB, או EN במקום קודי מדינות. כלי זה תומך ב-10 מדינות אירופיות; מאמתים לייצור צריכים לתמוך בכל מדינות רישום SWIFT.
פורמט מול קיום חשבון
הבחנה חשובה: אימות מאשר שה-IBAN תקין מבחינה מבנית, לא שהחשבון קיים. IBAN יכול לעבור את כל בדיקות האימות אך עדיין לא להתאים לחשבון בנק אמיתי. עבור מערכות תשלומים בייצור, אתה צריך אימות נוסף מעבר לאימות הפורמט.
יישום טכני למפתחים
אם אתה בונה תמיכת IBAN ביישום שלך, הנה דוגמאות קוד מנוסות בשפות מרובות. יישומים אלה מטפלים במקרי קצה שתיתקל בהם בסביבת ייצור:
אימות IBAN
1function validateIban(iban) {
2 // הסר רווחים והמר לאותיות גדולות
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // בדוק תבנית בסיסית
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // סדר מחדש והמר אותיות למספרים
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 const converted = rearranged.split('').map(char => {
13 if (/[A-Z]/.test(char)) {
14 return (char.charCodeAt(0) - 55).toString();
15 }
16 return char;
17 }).join('');
18
19 // חשב mod 97
20 let remainder = 0;
21 for (let i = 0; i < converted.length; i++) {
22 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
23 }
24
25 return remainder === 1;
26}
27
28// שימוש לדוגמה
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (ספרות בדיקה לא תקינות)
321def validate_iban(iban):
2 # הסר רווחים והמר לאותיות גדולות
3 iban = iban.replace(' ', '').upper()
4
5 # בדיקת תבנית בסיסית
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # העבר 4 תווים ראשונים לסוף
10 rearranged = iban[4:] + iban[:4]
11
12 # המר אותיות למספרים (A=10, B=11, ..., Z=35)
13 converted = ''
14 for char in rearranged:
15 if char.isalpha():
16 converted += str(ord(char) - 55)
17 else:
18 converted += char
19
20 # בדוק אם mod 97 שווה ל-1
21 return int(converted) % 97 == 1
22
23# שימוש לדוגמה
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # True
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # True
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # False (ספרות בדיקה לא תקינות)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // הסר רווחים והמר לאותיות גדולות
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // בדיקת תבנית בסיסית
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // העבר 4 תווים ראשונים לסוף
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // המר אותיות למספרים
15 StringBuilder converted = new StringBuilder();
16 for (char c : rearranged.toCharArray()) {
17 if (Character.isLetter(c)) {
18 converted.append(c - 'A' + 10);
19 } else {
20 converted.append(c);
21 }
22 }
23
24 // חשב mod 97
25 BigInteger numeric = new BigInteger(converted.toString());
26 return numeric.mod(BigInteger.valueOf(97)).intValue() == 1;
27 }
28
29 public static void main(String[] args) {
30 System.out.println(validateIban("DE89 3704 0044 0532 0130 00")); // true
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // true
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // false
33 }
34}
35יצירת IBAN
1function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // הוסף עוד מדינות לפי הצורך
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`קוד מדינה ${countryCode} אינו נתמך`);
11 }
12
13 // צור BBAN אקראי על פי תבנית המדינה
14 let bban = '';
15 const pattern = countryFormats[countryCode].bbanPattern;
16 let i = 0;
17
18 while (i < pattern.length) {
19 const count = parseInt(pattern.substring(i + 1), 10);
20 const type = pattern[i];
21
22 if (type === 'n') {
23 // צור תווים נומריים
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // צור תווים אלפביתיים
29 for (let j = 0; j < count; j++) {
30 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
31 }
32 } else if (type === 'c') {
33 // צור תווים אלפאנומריים
34 for (let j = 0; j < count; j++) {
35 const isLetter = Math.random() > 0.5;
36 if (isLetter) {
37 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
38 } else {
39 bban += Math.floor(Math.random() * 10);
40 }
41 }
42 }
43
44 i += 2;
45 }
46
47 // חשב ספרות בדיקה
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // צור IBAN ראשוני עם '00' כספרות בדיקה
55 const initialIban = countryCode + '00' + bban;
56
57 // סדר מחדש והמר אותיות למספרים
58 const rearranged = bban + countryCode + '00';
59 const converted = rearranged.split('').map(char => {
60 if (/[A-Z]/.test(char)) {
61 return (char.charCodeAt(0) - 55).toString();
62 }
63 return char;
64 }).join('');
65
66 // חשב 98 פחות mod 97
67 let remainder = 0;
68 for (let i = 0; i < converted.length; i++) {
69 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
70 }
71
72 const checkDigits = (98 - remainder).toString().padStart(2, '0');
73 return checkDigits;
74}
75
76// שימוש לדוגמה
77console.log(generateIban('DE')); // יוצר IBAN גרמני תקף
78console.log(generateIban('GB')); // יוצר IBAN בריטי תקף
791import random
2import string
3
4def generate_iban(country_code):
5 country_formats = {
6 'DE': {'length': 22, 'bban_format': '8n10n'},
7 'GB': {'length': 22, 'bban_format': '4a6n8n'},
8 'FR': {'length': 27, 'bban_format': '5n5n11c2n'}
9 # הוסף עוד מדינות לפי הצורך
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"קוד מדינה {country_code} אינו נתמך")
14
15 # צור BBAN אקראי על פי תבנית המדינה
16 bban = ''
17 format_str = country_formats[country_code]['bban_format']
18 i = 0
19
20 while i < len(format_str):
21 count = int(''.join(c for c in format_str[i+1:] if c.isdigit()))
22 type_char = format_str[i]
23
24 if type_char == 'n': # נומרי
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # אלפביתי
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # אלפאנומרי
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # חשב ספרות בדיקה
34 check_digits = calculate_check_digits(country_code, bban)
35
36 return country_code + check_digits + bban
37
38def calculate_check_digits(country_code, bban):
39 # צור מחרוזת לחישוב ספרות בדיקה
40 check_string = bban + country_code + '00'
41
42 # המר אותיות למספרים (A=10, B=11, ..., Z=35)
43 numeric = ''
44 for char in check_string:
45 if char.isalpha():
46 numeric += str(ord(char.upper()) - 55)
47 else:
48 numeric += char
49
50 # חשב 98 פחות mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# שימוש לדוגמה
57print(generate_iban('DE')) # יוצר IBAN גרמני תקף
58print(generate_iban('GB')) # יוצר IBAN בריטי תקף
59מקורות וקריאה נוספת
- ISO 13616-1:2007 - מפרט רשמי של מבנה IBAN
- מרשם SWIFT IBAN - מקור סמכותי לפורמטי IBAN ספציפיים למדינות
- ISO 7064:2003 - מפרט אלגוריתם ספרת בדיקה MOD 97
- מועצת התשלומים האירופית - SEPA - תיעוד אזור תשלומים אירופי אחיד
- הבנק המרכזי האירופי - מערכות תשלום - תקני שילוב בנקאות אירופיים
- בנק ההסדרים הבינלאומיים - מערכות תשלום - תקני מערכות תשלום בינלאומיים
התחל בדיקת מספרי IBAN
צריך נתוני בדיקה עבור מערכת התשלומים שלך? צור IBAN תקף עבור כל מדינה נתמכת למעלה, או הדבק IBAN קיים כדי לאמת את המבנה שלו. הכלי פועל לחלוטין בדפדפן שלך - ללא הרשמה, ללא מפתחות API, ללא שליחת נתונים לשרתים.
טיפ מהיר: צור IBAN ממספר מדינות כדי לבדוק מקרי קצה. מערכות תשלומים אמיתיות מטפלות בפורמטים מגוונים, ובדיקה עם פורמט של מדינה אחת בלבד היא מקור נפוץ לבאגים בייצור.