チェックアウト — 概要
ホスト型チェックアウト は、バイヤーが実際に資金を送るページです。
アセット選択、デポジットアドレス、QR コードは自社で描画する必要は
ありません — SDK が当方のページ(https://checkout.infraio.xyz/<session_key>)
を開き、UI は当方が処理します。
3 つのモード
中央寄せのオーバーレイポップアップ、デフォルトで約 560×780。
ストアフロントはそのまま維持されます。決済後にポップアップが
閉じると onSuccess が発火します。デフォルトモードです。
チェックアウトへのハードナビゲーションです。ポップアップが
ブロックされるブラウザや、オーバーレイが違和感を生むモバイル
Web に最適です。バイヤーはセッションの success_url /
cancel_url 経由で戻ってきます。
自社ページ内の iframe です。レイアウトをエンドツーエンドで 自社が制御し、コンテキストの切り替えをゼロにしたい場合に 最適です。postMessage 経由で自動リサイズします。
Embedモードの選び方の目安
| こういう場合… | 使うモード |
|---|---|
| デスクトップ Web、標準的な EC | Popup |
| モバイル Web | Redirect(ポップアップ + モバイルは相性が悪い) |
| 厳格な CSP でロックされた管理画面 | Redirect |
| アプリ内 webview / ネイティブなページ内チェックアウト | Embed |
| ホワイトラベルヘッダーを備えた完全カスタムのバイヤーフローが欲しい | Embed + hideHeader + 自社のウォレット接続 |
バイヤーに表示されるもの
モードに関わらず、ページには以下が表示されます:
- 注文サマリー(行明細、合計、通貨)。自社側で既にこれを表示
している場合は
hideSummaryで非表示にできます。 - アセット選択 — マーチャント設定で有効化したチェーン × アセットの 組み合わせの一覧。バイヤーがその中から 1 つを選びます。
- 選択した組み合わせに対応する デポジットアドレス + QR + 金額。 バイヤーはスキャンするか、ウォレットを接続する(WalletConnect ボタン)か、SDK 経由で渡した事前接続済みウォレットから支払います。
- ステータス表示 — 「送金を待機中」、「Tx 検出済み(3/12 確認)」、 「支払い完了」。
- キャンセル ボタン(常に表示)→
onCancelをトリガーします。
ページのカスタマイズ
| 項目 | 方法 | 制限 |
|---|---|---|
| 注文サマリーを非表示 | SDK で hideSummary: true | バイヤーはデポジットパネルで合計を引き続き確認できます |
| InfraIO ヘッダーを非表示 | SDK で hideHeader: true | 完全なホワイトラベル化には walletAddress と組み合わせます |
| ウォレットを事前接続 | walletAddress + walletChainId + onSignRequest | WalletConnect モーダルをバイパスします |
| ロケール | SDK の locale — en、vi、ja、ko、es、pt-BR、ru、tr、zh-CN、zh-TW のいずれか | チェックアウトページ と 返金ページ(およびウォレット接続モーダル)をローカライズします。不明または未指定の場合は en にフォールバックします |
| ロゴ、ブランドカラー | マーチャント ダッシュボード → Branding | セッション単位ではなく、全体に適用されます |
リターン URL の挙動
redirect モードでは、バイヤーは常に次のいずれかに戻ります:
- セッションの
success_url(決済が精算された場合) - セッションの
cancel_url(キャンセル / 離脱の場合) - どちらも設定していない場合、SDK はチェックアウトを開いたページに
フォールバックし、
?session_id=…&status=success|cancelを付加します
popup と embed モードではページ遷移がありません — 制御は
onSuccess / onCancel 経由で自社ページに戻ります。これらを使って
次に表示する UI を決定してください。
CSP と埋め込み
embed モードを使う場合、CSP の frame-src に当方のオリジンを
許可する必要があります:
Content-Security-Policy:
frame-src https://checkout.infraio.xyz https://checkout-dev.infraio.xyz;iframe にはパーミッションポリシー allow="payment; clipboard-write"
が付与されます — 呼び出せるのは Payment Request API とクリップボード
書き込みだけで、それ以上のことはできません。HTML の sandbox 属性
は 付いていません。チェックアウトページはウォレット接続を行う
フル機能のアプリであり、その postMessage セキュリティ(両側でのオリジン
チェック)とサードパーティのウォレット SDK(WalletConnect、Coinbase、
MetaMask)は実際の同一オリジンのスクリプティングコンテキストを必要と
するため、HTML sandbox 属性を付けるとわずかな分離効果と引き換えに
ウォレット接続が壊れてしまいます。分離はクロスオリジン境界、厳格な
postMessage オリジンチェック、そして自社の frame-src CSP によって
代わりに担保されています。
モバイルでの考慮事項
モバイル Safari ではポップアップが積極的にブロックされます。トラフィック
の大半がモバイルの場合は mode: "redirect" をデフォルトにしてください。
ポップアップオーバーレイは小画面ではキーボード領域も覆います — 金額入力
には問題ありませんが、アセット選択にはやや扱いにくいです。
ブランディング(ホワイトラベルを求める場合)
完全なホワイトラベル化には以下が必要です:
- SDK で
hideHeader: true walletAddressを事前接続(バイヤーには WalletConnect が表示されません)- マーチャントダッシュボードの branding で自社ロゴ + ブランドカラーを設定
- (任意)チェックアウトページのカスタムドメイン —
checkout.infraio.xyzの代わりにpay.your-shop.com。CNAME を検証すればダッシュボードから セルフサーブで設定できます。
次に
- SDK → JavaScript — モードごとの完全な オプションリファレンス。
- コンセプト → セッション — バイヤーがページを 開いている間、サーバー側で何が起きているか。
- コンセプト → チェーン & アセット — 選択画面で 利用可能なチェーン × アセットの組み合わせ。