決済フォームを作成したり、ユニットテストを書いたりしていますか? フォーマットや検証をテストするために、IBAN形式でチェックサムが有効な値が必要になることがあります。MOD-97に合格する値でも、それだけで決済事業者のテスト用認証情報になるわけではなく、本番の決済システムに安全に送信できるとは限りません。
開発環境で顧客のIBANを使うのは危険です。
- ステージング環境の設定を誤ると、実際の送金を開始する可能性があります。
- 特定の個人と結び付いたIBANは、適用されるプライバシー法上の個人データに該当する場合があります。
- 本番の銀行データを開発環境へコピーすると、組織のアクセス、保存期間、テストデータに関するポリシーに違反する可能性があります。
国別のテストIBAN例
以下は、長さとMOD-97のチェックを通過する公開形式の例です。未割り当ての口座であることや、サンドボックスで受け付けられることは保証されません。バリデーターの隔離されたテストだけに使用し、決済ネットワークでは決して使わないでください。
西ヨーロッパ
| 国 | IBAN | 長さ |
|---|---|---|
| ドイツ | DE89 3704 0044 0532 0130 00 |
22 |
| フランス | FR76 3000 6000 0112 3456 7890 189 |
27 |
| スペイン | ES91 2100 0418 4502 0005 1332 |
24 |
| イタリア | IT60 X054 2811 1010 0000 0123 456 |
27 |
| オランダ | NL91 ABNA 0417 1643 00 |
18 |
| ベルギー | BE68 5390 0754 7034 |
16 |
| オーストリア | AT61 1904 3002 3457 3201 |
20 |
| アイルランド | IE29 AIBK 9311 5212 3456 78 |
22 |
北ヨーロッパ
| 国 | IBAN | 長さ |
|---|---|---|
| 英国 | GB29 NWBK 6016 1331 9268 19 |
22 |
| スウェーデン | SE45 5000 0000 0583 9825 7466 |
24 |
| デンマーク | DK50 0040 0440 1162 43 |
18 |
| ノルウェー | NO93 8601 1117 947 |
15 |
| フィンランド | FI21 1234 5600 0007 85 |
18 |
東ヨーロッパ
| 国 | IBAN | 長さ |
|---|---|---|
| ポーランド | PL61 1090 1014 0000 0712 1981 2874 |
28 |
| チェコ共和国 | CZ65 0800 0000 1920 0014 5399 |
24 |
| ハンガリー | HU42 1177 3016 1111 1018 0000 0000 |
28 |
| ルーマニア | RO49 AAAA 1B31 0075 9384 0000 |
24 |
ここに掲載していない国の形式テスト用フィクスチャが必要ですか? ランダムIBANジェネレーターを使用してください。現在42か国に対応し、ウェブ上では1回のバッチにつき最大100個の値を作成して、CSV、JSON、TXTでエクスポートできます。銀行コードが有効か、口座が存在するか、決済事業者のサンドボックスがその値を受け付けるかは確認しません。
テストIBANの生成方法
処理は次の4段階です。
- 国を選ぶ — IBANの長さと形式が決まります。
- 銀行コードの位置を埋める — 国ごとの文字パターンに合わせます。連携をテストする場合は、決済事業者が提供する値を使ってください。
- 口座番号を生成する — その国で定められた長さに合うランダムな数字を生成します。
- チェックディジットを計算する — ISO/IEC 7064 MOD97-10アルゴリズムを使用します。
詳しい説明は、IBAN検証ガイドをご覧ください。
IBANを使ったユニットテスト
テストスイートでは、次のケースをカバーしてください。
チェックサムが有効なケース:
DE89370400440532013000✓GB29NWBK60161331926819✓FR7630006000011234567890189✓
無効なケース:
- チェックディジットが不正:
DE00370400440532013000✗ - 国コードが不正:
XX89370400440532013000✗ - 長さが不正 ✗
- 空の文字列 ✗
境界ケース:
- スペースを含むIBAN
- 小文字
- 大文字と小文字が混在する形式
決済事業者のテストIBAN
決済事業者のサンドボックスでは、成功、拒否、確認中、保留などのシナリオ向けに特定の口座値が予約されていることがあります。値と動作は事業者ごとに異なり、変更される場合もあります。利用するAPI、国、決済方法、テスト環境に対応する最新の公式ドキュメントから取得してください。RandomIBANの出力や公開されているSWIFT形式の例を、Stripe、Adyen、Mangopayなどのサンドボックス認証情報として扱ってはいけません。ただし、その事業者が現在その用途を明記している場合を除きます。
フォームテストのチェックリスト
| シナリオ | 期待する結果 |
|---|---|
| 標準のチェックサムが有効なIBAN | チェックサムの検証を通す |
| スペースを含むチェックサムが有効なIBAN | 空白を除去してから受け付ける |
| 小文字のチェックサムが有効なIBAN | 正規化してから受け付ける |
| チェックディジットが不正 | 明確なエラーを表示して拒否する |
| 国に対して長さが不正 | 拒否する |
| 国コードが不正 | 拒否する |
| 空のフィールド | 必須フィールドエラー |
| ランダムな文字列 | 形式エラー |
ベストプラクティス
行うこと:
- 形式とチェックサムが有効な合成IBAN fixtureを使う。
- ドイツのIBANだけでなく、複数の国をテストする。
- 境界ケースをテストする。このジェネレーターで対応する最短形式はノルウェー(15文字)、最長形式はマルタ(31文字)。
- テスト環境と本番環境を分離する。
- テストIBANを共有のテストデータ辞書に記録する。
避けること:
- 自分のIBANも含め、実在するIBANをテストで使う。
- テストIBANを本番コードにハードコードする。
- すべてのIBANが同じ長さだと考える(ISO 13616-1では最大34文字が許容されますが、このジェネレーターが現在対応する形式は15〜31文字です)。
- 国別のテストを省略する。
- ある決済事業者のテストIBANを別の事業者で使う。
複数通貨のテスト
| 通貨 | 国 | 公開形式の例 |
|---|---|---|
| EUR | ドイツ | DE89 3704 0044 0532 0130 00 |
| GBP | 英国 | GB29 NWBK 6016 1331 9268 19 |
| CHF | スイス | CH93 0076 2011 6238 5295 7 |
| SEK | スウェーデン | SE45 5000 0000 0583 9825 7466 |
| NOK | ノルウェー | NO93 8601 1117 947 |
| PLN | ポーランド | PL61 1090 1014 0000 0712 1981 2874 |
| CZK | チェコ共和国 | CZ65 0800 0000 1920 0014 5399 |
通貨はテストの観点の一つです。IBANそのものが取引通貨を証明したり選択したりするわけではありません。
実務上は、ローカルの形式テストにはアクセスを制限した合成fixtureを使い、サンドボックス連携テストには決済事業者が現在指定している値を使います。どちらも本番環境から隔離してください。ランダムIBANジェネレーターでは、42か国への対応、ウェブ上で1バッチ最大100個、CSV・JSON・TXTへのエクスポートという仕様上の制限の範囲で、新しい構造用fixtureを作成できます。