チェックアウト — 概要
ホスト型チェックアウト は、バイヤーが実際に資金を送るページです。
アセット選択、入金先アドレス、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 経由で渡した事前接続済みウォレットから支払います。TRON、Solana、TON では、バイヤーがマーチャントのトレジャリーウォレットへ直接支払います。ウォレット直接決済ネットワーク を参照してください。
- ステータス表示 — 「送金を待機中」、「Tx 検出済み(3/12 確認)」、 「支払い完了」。
- キャンセル ボタン(常に表示)→
onCancelをトリガーします。
ページのカスタマイズ
| 項目 | 方法 | 制限 |
|---|---|---|
| 注文サマリーを非表示 | SDK で hideSummary: true | バイヤーはデポジットパネルで合計を引き続き確認できます |
| InfraIO Pay ヘッダーを非表示 | 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 とクリップボード
書き込みだけで、それ以上のことはできません。iframe に HTML の sandbox
属性を付けないでください。ウォレット接続が壊れてしまいます。iframe は
クロスオリジン境界と自社の frame-src CSP によって分離されています。
モバイルでの考慮事項
モバイルブラウザ、特に Safari ではポップアップがブロックされることが
よくあります。トラフィックの大半がモバイルの場合は mode: "redirect" を
使用してください。小画面ではポップアップオーバーレイがキーボード領域も
覆うため、アセット選択が扱いにくくなります。
ホワイトラベルのブランディング
完全なホワイトラベル化には以下が必要です:
- SDK で
hideHeader: true walletAddressを事前接続(バイヤーには WalletConnect が表示されません)- マーチャントダッシュボードの branding で自社ロゴ + ブランドカラーを設定
- (任意)チェックアウトページのカスタムドメイン —
checkout.infraio.xyzの代わりにpay.your-shop.com。CNAME を検証したら、ダッシュボードで 設定します。
次に
- SDK → JavaScript — モードごとの完全な オプションリファレンス。
- コンセプト → セッション — バイヤーがページを 開いている間、サーバー側で何が起きているか。
- コンセプト → チェーン & アセット — 選択画面で 利用可能なチェーン × アセットの組み合わせ。