銀行・支店選択フォームを組み込むWidget
Bank Branch Selector Widget は、振込先口座登録フォームや返金先口座登録フォームに、銀行・支店選択UIを組み込むためのWeb Componentです。銀行コード、銀行名、支店コード、支店名を hidden input と event で取得できます。API Key をブラウザに埋め込まず、Public Key と短期 access token で利用します。
概要
銀行・支店選択ウィジェットは、銀行名・支店名の検索と選択UIを提供するWeb Componentです。
UIはShadow DOM内に描画されます。name-prefixを指定した場合は、フォーム送信用のhidden inputをcustom elementのLight DOM直下に生成します。
フォーム送信、確認画面、最終確定ボタン、入力値の保存処理は、呼び出し元サイト側で実装します。
- 銀行・支店選択UIを自前実装せずに組み込める
- API Keyをブラウザに埋め込まない
- Public ClientのPublic Keyを利用する
- 選択結果はhidden inputまたはイベントで取得できる
- inline表示とdialog表示に対応する
Search API / Resolve API β との違い
| 種類 | 用途 | 向いているケース |
|---|---|---|
| Search API | REST APIとして銀行・支店情報を取得する | 銀行・支店検索UIを自前で実装する場合 |
| 銀行・支店選択ウィジェット | Web Componentとして銀行・支店選択UIを組み込む | フォームに銀行・支店選択UIをそのまま追加したい場合 |
| Resolve API β | 自由入力された銀行名・支店名から候補推定と自動確定可否を返す | CSV/OCR取込、自由入力、名寄せ、振込・支払処理で誤確定リスクを抑えたい場合 |
配信URL
scriptタグでウィジェット本体を読み込みます。
<script src="https://js.bankcode-jp.com/widgets/bank-branch-selector/v1/bank-branch-selector.js"></script>
v1はメジャーバージョン固定のURLです。- 互換性を重視する場合は、固定バージョンURLの利用も検討できます。
現在公開中のバージョン
| バージョン | 配信URL | 用途 | リリースノート |
|---|---|---|---|
v1 |
https://js.bankcode-jp.com/widgets/bank-branch-selector/v1/bank-branch-selector.js |
v1系の後方互換最新版。通常はこちらを利用します。 | 2026-06-13 |
v1.0.0 |
https://js.bankcode-jp.com/widgets/bank-branch-selector/v1.0.0/bank-branch-selector.js |
1.0.0固定版。特定バージョンに固定したい場合に利用します。 | 2026-06-13 |
通常は v1 のメジャー alias を利用してください。
v1.0.0 のような固定バージョンURLは、特定バージョンに固定したい場合に利用します。
現在、v1 は v1.0.0 と同一内容です。
Quick Start
public-keyには、ダッシュボードで作成したPublic ClientのPublic Keyを指定します。API Keyはブラウザに埋め込まないでください。
<script src="https://js.bankcode-jp.com/widgets/bank-branch-selector/v1/bank-branch-selector.js"></script>
<bankcodejp-bank-branch-selector
public-key="YOUR_PUBLIC_KEY"
name-prefix="bank_account"
display-mode="dialog"
search-mode-switch="fallback">
</bankcodejp-bank-branch-selector>
<script>
document
.querySelector("bankcodejp-bank-branch-selector")
.addEventListener("bcjp:select", (event) => {
console.log(event.detail);
});
</script>
public-keyにはPublic ClientのPublic Keyを指定します。- API Keyをブラウザに埋め込まないでください。
name-prefixを指定するとhidden inputが生成されます。- 推奨設定では、フォーム上には選択ボタンと選択結果だけを表示し、検索UIはダイアログ内に表示します。
- 銀行名・銀行コードでの検索を主導線にし、頭文字検索は補助導線として利用できます。
表示方式
inline
display-mode未指定時の初期表示です。フォーム内に銀行・支店選択UIをそのまま表示します。
<bankcodejp-bank-branch-selector
public-key="YOUR_PUBLIC_KEY"
name-prefix="bank_account">
</bankcodejp-bank-branch-selector>
dialog
display-mode="dialog" を指定すると、選択UIをdialogで表示できます。長いフォームやスマートフォン画面でフォームの高さを抑えたい場合に向いています。
<bankcodejp-bank-branch-selector
public-key="YOUR_PUBLIC_KEY"
name-prefix="bank_account"
display-mode="dialog"
search-mode-switch="fallback">
</bankcodejp-bank-branch-selector>
manual trigger
trigger-mode="manual" を指定すると、ウィジェット側の自動triggerを使わず、任意のボタンからopen()でdialogを開けます。
<button type="button" id="open-bank-selector">
金融機関・支店を選択
</button>
<bankcodejp-bank-branch-selector
id="bank-selector"
public-key="YOUR_PUBLIC_KEY"
name-prefix="bank_account"
display-mode="dialog"
trigger-mode="manual">
</bankcodejp-bank-branch-selector>
<script>
const selector = document.getElementById("bank-selector");
document.getElementById("open-bank-selector").addEventListener("click", () => {
selector.open();
});
</script>
検索UIの表示方式
search-mode-switch で、検索方式切替UIの見せ方を変更できます。
| 値 | 説明 |
|---|---|
tabs | 「入力して探す」「頭文字から探す」の2ボタンを表示します。既存互換のデフォルトです。 |
fallback | 入力検索を主導線にし、「見つからない場合は 頭文字から探す」を補助導線として表示します。フォーム組み込みではこの設定を推奨します。 |
hidden | 検索モード切替UIを表示しません。default-search-mode で指定されたモードだけを表示します。 |
<bankcodejp-bank-branch-selector
public-key="YOUR_PUBLIC_KEY"
name-prefix="bank_account"
display-mode="dialog"
search-mode-switch="fallback">
</bankcodejp-bank-branch-selector>
属性一覧
| 属性 | 必須 | 初期値 | 説明 |
|---|---|---|---|
public-key | Yes | なし | Public ClientのPublic Key |
name-prefix | No | なし | hidden input の name prefix |
display-mode | No | inline | inline または dialog |
search-mode-switch | No | tabs | 検索モード切替UI。tabs / fallback / hidden |
default-search-mode | No | text | 初期表示の検索モード。text または browse |
placeholder-bank | No | 銀行名または銀行コードで検索 | 銀行検索inputのplaceholder |
placeholder-branch | No | 支店名または支店コードで検索 | 支店検索inputのplaceholder |
trigger-mode | No | auto | dialog mode のtrigger表示方式。auto または manual |
trigger-label | No | 金融機関・支店を選択 | 未選択時のtriggerボタン文言 |
dialog-title | No | 金融機関・支店を選択 | dialogタイトル |
dialog-description | No | 金融機関と支店を選択してください | dialog補助説明 |
close-on-select | No | true | 支店選択後にdialogを閉じるか |
allowed-business-type-codes | No | なし | 許可する金融機関種別コード。カンマ区切り |
api-base-url | No | https://apis.bankcode-jp.com | API base URL |
data-api-base-url | No | /public/v1/bank-branch-selector | Widget data API base path |
session-endpoint | No | /public/v1/sessions | session 発行 endpoint |
disabled | No | なし | Widgetを無効化 |
allowed-business-type-codes には、5桁の金融機関種別コードをカンマ区切りで指定します。
Methods
| メソッド | 説明 |
|---|---|
open() | dialogを開く |
close() | dialogを閉じる |
reset() | 選択状態とhidden inputを初期化 |
getValue() | 選択済みの銀行・支店を返す。未選択時はnull |
const selector = document.querySelector("bankcodejp-bank-branch-selector");
selector.open();
selector.close();
selector.reset();
const value = selector.getValue();
getValue() は銀行・支店が選択済みの場合に選択内容を返します。未選択の場合は null を返します。
Events
すべてのイベントは bubbles: true / composed: true でdispatchされます。外部出力は snake_case です。
| event | 説明 |
|---|---|
bcjp:bank-select | 金融機関が選択されたとき |
bcjp:select | 支店まで選択されたとき |
bcjp:error | 認証・API取得・解析エラー発生時 |
bcjp:open | dialog が開いたとき |
bcjp:close | dialog が閉じたとき |
bcjp:bank-select
銀行選択時に発火します。
{
"bank_code": "0001",
"bank_name": "みずほ銀行",
"bank_hiragana": "みずほぎんこう"
}
bcjp:select
支店まで選択されたときに発火します。
{
"bank_code": "0001",
"bank_name": "みずほ銀行",
"bank_hiragana": "みずほぎんこう",
"branch_code": "001",
"branch_name": "本店",
"branch_hiragana": "ほんてん"
}
bcjp:open / bcjp:close
dialogが開いたとき、閉じたときに発火します。
bcjp:error
エラー発生時に発火します。
{
"code": "rate_limited",
"message": "銀行・支店候補を取得できませんでした。しばらくしてから再度お試しください。",
"status": 429
}
HTTPレスポンス由来のエラーでは detail.status にHTTP status codeが含まれます。ローカル設定エラーなどHTTPレスポンス由来でない場合は、status が含まれない場合があります。
const selector = document.querySelector("bankcodejp-bank-branch-selector");
selector.addEventListener("bcjp:select", (event) => {
console.log(event.detail.bank_code);
console.log(event.detail.branch_code);
});
selector.addEventListener("bcjp:error", (event) => {
console.warn(event.detail.code, event.detail.status);
});
エラー表示と bcjp:error
銀行・支店選択ウィジェットでは、フォーム利用者向けには分かりやすいメッセージを表示し、導入先サイト向けには bcjp:error イベントで詳細を通知します。
| code | 画面表示 | 主な意味 |
|---|---|---|
missing_public_key | 設定エラー: public-key が指定されていません。 | public-key属性未指定 |
session_failed | 現在この入力補助機能を利用できません。サイト管理者へお問い合わせください。 | session発行失敗 |
invalid_public_key | 現在この入力補助機能を利用できません。サイト管理者へお問い合わせください。 | Public Keyが無効 |
client_disabled | 現在この入力補助機能を利用できません。サイト管理者へお問い合わせください。 | Public Clientが無効 |
origin_not_allowed | 現在この入力補助機能を利用できません。サイト管理者へお問い合わせください。 | Originが許可されていない |
feature_not_allowed | 現在この入力補助機能を利用できません。サイト管理者へお問い合わせください。 | Widget機能が許可されていない |
rate_limited | 銀行・支店候補を取得できませんでした。しばらくしてから再度お試しください。 | 利用上限またはレート制限超過 |
api_failed | データ取得に失敗しました。時間をおいて再度お試しください。 | API呼び出し失敗 |
parse_failed | データ取得に失敗しました。時間をおいて再度お試しください。 | APIレスポンス解析失敗 |
エンドユーザー向け画面表示では、Public Client、Origin、HTTP 429などの技術用語を直接表示しません。導入先サイト側では bcjp:error の detail.code / detail.status を使ってログ記録や独自表示を行えます。
認証
Bank Branch Selector Widget は、API Key ではなく Public Client の Public Key を使います。
Public Key は、ダッシュボードの Public Client 画面から作成・取得できます。取得した Public Key を public-key 属性に設定すると、Widget が短期 access token の取得と銀行・支店候補の取得を自動で行います。
<bankcodejp-bank-branch-selector
public-key="YOUR_PUBLIC_KEY"
name-prefix="bank_account"
display-mode="dialog"
search-mode-switch="fallback">
</bankcodejp-bank-branch-selector>
内部的な動作
Widget は内部的に短期 access token を取得し、Widget 用の public route から銀行・支店候補を取得します。通常の導入では、これらのrouteを直接呼び出す必要はありません。
POST /public/v1/sessions
GET /public/v1/bank-branch-selector/banks
GET /public/v1/bank-branch-selector/banks/{bankCode}/branches
GET /public/v1/bank-branch-selector/freeword/banks
GET /public/v1/bank-branch-selector/freeword/banks/{bankCode}/branches
利用上限
銀行・支店選択ウィジェットは、Search APIとは独立して利用プランを有効化できるサービスです。
利用プランごとにリクエスト上限・レート制限があります。利用上限やレート制限を超えた場合、銀行・支店候補の取得が一時的にできなくなる場合があります。
その場合、画面上は候補取得に失敗した旨のメッセージを表示し、bcjp:error で code: "rate_limited" を通知します。HTTPレスポンス由来であれば detail.status に 429 が含まれます。
よくある実装パターン
- 通常フォームにinlineで埋め込む
- 長いフォームやスマホ向けフォームではdialog modeを使う
- 自前ボタンで開きたい場合は
trigger-mode="manual"とopen()を使う - フォーム送信時は hidden input を利用する
- SPA / React / Vue / Angular では DOM element を取得して
addEventListenerでイベント購読する - エラー監視や独自表示は
bcjp:errorを購読して実装する