Skip to main content

概要

ZAFA PAYの決済ページをiframeで埋め込むことで、ユーザーをリダイレクトせずに自社サイト内で決済を完結させることができます。

結果通知方式

決済結果の通知方式は2種類あります。
利用する方式は加盟店ごとに事前に設定されます。変更が必要な場合はサポートにお問い合わせください。

実装手順

1. 決済リクエストを作成

通常通りPOST /v1/paymentsで決済リクエストを作成します。レスポンスのpayment_urlを取得します。

2. iframeに埋め込む

payment_url?mode=embeddedパラメータを追加してiframeに設定します。
mode=embeddedパラメータは必須です。これがないと、決済完了時にリダイレクトが発生します。

postMessage方式

postMessage方式が設定されている場合、決済の結果はJavaScriptのpostMessageで親ウィンドウに通知されます。

イベントを受信

イベントタイプ

payment_success

決済が正常に完了した場合に送信されます。

payment_failed

決済が失敗した場合に送信されます。

payment_cancel

ユーザーが「キャンセルしてサイトに戻る」をクリックした場合に送信されます。

redirect_required

3Dセキュア認証などでリダイレクトが必要な場合に送信されます。
このイベントは特定の決済方法でのみ発生します。決済方法によっては、認証処理が自動的に行われるため、このイベントが発生しない場合があります。
リダイレクトが必要な場合、新しいタブ/ウィンドウで開くか、親ウィンドウでナビゲートしてください。iframe内でのリダイレクトはセキュリティ上の制限により機能しない場合があります。

完全な実装例

セキュリティ考慮事項

1

オリジン検証

postMessageを受信する際は、必ずevent.originを検証してください。
2

HTTPS必須

iframe埋め込みはHTTPSサイトでのみ動作します。
3

Webhookとの併用

決済結果の確定にはpostMessageだけでなく、必ずサーバーサイドでWebhookを受信して検証してください。

リダイレクト方式

リダイレクト方式が設定されている場合、決済結果は親ウィンドウへのリダイレクトで通知されます。

リダイレクト先URL

決済作成時に指定したsuccess_redirect_urlfailure_redirect_urlcancel_redirect_urlにリダイレクトされます。

URLパラメータ

  • キャンセル時は決済実行前のためtransaction_idは含まれません。
  • cancel_redirect_urlが設定されていない場合、キャンセル時はfailure_redirect_urlにリダイレクトされます。

パラメータ詳細

実装例

決済結果の確定には、URLパラメータだけでなく必ずサーバーサイドでWebhookを受信して検証してください。URLパラメータは改ざんされる可能性があります。

テスト

Sandbox環境でテストする場合は、以下のテストカードを使用できます。 有効期限は将来の日付、CVCは任意の3桁を使用してください。