ユーザーの本人確認書類を確認する
このガイドでは、Stripe Identity を使用して、身分証明書を安全に収集し、確認する方法について説明します。
はじめに
- 本番環境利用の申請を行う。
- Stripe Identity 申請書にご記入ください。
- (オプション) ブランディング設定ページでブランド設定をカスタマイズする。
ユーザーを Stripe に移動して、本人確認書類をアップロードできるようにします。手順は以下のとおりです。
- Stripe Identity にリダイレクトする確認ボタンを Web ページに追加します。
- 身分証明書が送信されたら、確認ページを表示します。
- 本人確認の結果を処理します。
Web サイトにボタンを追加するクライアント側
確認を開始するためのボタンを Web サイトに作成します。
ボタンを追加する
まずは、ページに確認ボタンを追加します。
<html> <head> <title>Verify your identity</title> </head> <body> <button id="verify-button">Verify</button> </body> </html>
Stripe Identity にリダイレクトするクライアント側サーバー側
Stripe Identity にリダイレクトするボタンをセットアップします。このボタンをクリックすると、フロントエンドは、Stripe がオンラインで提供するページにリダイレクトされ、ここでユーザはパスポート、運転免許証、国際 ID をキャプチャしてアップロードできます。
Stripe Identity にリダイレクトすることにより、開発時間とメンテナンス時間を節約できるだけでなく、セキュリティを強化することもできます。さらに、自社のサイトで顧客の個人情報を処理する量が減り、さまざまなプラットフォームと言語のユーザをサポートすることができ、ブランディングに合わせてスタイルをカスタマイズすることも可能です。
VerificationSession を作成する
VerificationSession は、本人確認をプログラムで示したものです。確認のタイプに関する詳細 (実行するチェックの内容など) が含まれています。確認済みの出力フィールドを展開して、確認済みのデータの詳細を表示できます。
VerificationSession
を作成したら、フロントエンドにセッション URL を送信して、Stripe Identity にリダイレクトします。
VerificationSession を作成するには、サーバー側のエンドポイントが必要です。サーバー側で VerificationSession
を作成することにより、悪意のあるユーザーによる確認オプションの上書き、およびお客様のアカウントでの決済処理の偽装を防止できます。セッションのメタデータにユーザー参照を含めるか、データベースにセッション ID を保存することで、このエンドポイントに認証を追加します。
// Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys const stripe = require('stripe')(
); // In the route handler for /create-verification-session: // Authenticate your user. // Create the session. const verificationSession = await stripe.identity.verificationSessions.create({ type: 'document', metadata: { user_id: '{{USER_ID}}', }, }); // Return only the session URL to the frontend. const url = verificationSession.url;'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
注意
セッション URL を使用できるのは 1 回限りで、48 時間後に有効期限が切れます。セッション URL は、保存したり、記録したり、URL に埋め込んだり、対象のユーザー以外に公開したりしないようにしてください。フロントエンドにセッション URL のみを送信することにより、本人確認の設定や結果の漏洩を回避できます。
Web サーバー (localhost:4242
など) を起動し、curl で VerificationSession を作成する POST リクエストを送信して、エンドポイントをテストします。
curl -X POST -is "http://localhost:4242/create-verification-session" -d ""
端末に次のようなレスポンスが表示されます。
HTTP/1.1 200 OK Content-Type: application/json { url: "https://verify.stripe.com/start/QdfQQ6xfxNJR7ogV6Z6Wp..." }
確認ボタンにイベントハンドラを追加する
VerificationSession を作成するためのボタンとエンドポイントが準備できています。次にボタンを変更して、クリックするとセッション URL にリダイレクトようにします。
<html> <head> <title>Verify your identity</title> <script src="https://js.stripe.com/v3/"></script> </head> <body> <button id="verify-button">Verify</button> <script type="text/javascript"> var verifyButton = document.getElementById('verify-button'); verifyButton.addEventListener('click', function() { // Get the VerificationSession client secret using the server-side // endpoint you created in step 3. fetch('/create-verification-session', { method: 'POST', }) .then(function(response) { return response.json(); }) .then(function(session) { // When the user clicks on the button, redirect to the session URL. window.location.href = session.url; }) .catch(function(error) { console.error('Error:', error); }); }); </script> </body> </html>
リダイレクトをテストする
確認ボタンが Stripe Identity にリダイレクトするかどうかテストします。
- 確認ボタンをクリックします。
- ブラウザが Stripe Identity にリダイレクトすることを確認します。
構築したシステムが機能しない場合:
- ブラウザの開発者ツールでネットワークタブを開きます。
- 確認ボタンをクリックし、サーバ側エンドポイントに対して XHR リクエストが作成されるかどうか確認します (
POST /create-verification-session
)。 - リクエストが 200 ステータスを返すことを確認します。
- ボタンクリックリスナー内で
console.log(session)
を使用して、正しいデータが返されることを確認します。
確認イベントを処理する
本人確認書類のチェックは非同期であるため、確認結果がすぐに提供されるわけではありません。通常、完了までに 1 ~ 3 分かかります。処理が完了すると、VerificationSession のステータスが変わり、processing
から verified
になります。
セッションのステータスに変化があると、Stripe は以下のイベントを送信します。
イベント名 | 説明 | 次のステップ |
---|---|---|
identity.verification_session.verified | すべての検証チェックの処理が完了し、すべての確認が成功しました。 | アプリケーションで関連するアクションをトリガーします。 |
identity.verification_session.requires_input | すべての検証チェックの処理が完了し、少なくとも 1 つの確認が失敗しました。 | アプリケーションで関連するアクションをトリガーするとともに、ユーザーに本人確認の再試行を許可できます。 |
Webhook ハンドラーを使用してこれらのイベントを受信し、確定メールの送信、お客様のデータベース内の確認結果の更新、アカウント登録ステップの完了などのアクションを自動化します。ダッシュボードに確認イベントを表示することもできます。
イベントを受信して、ビジネスアクションを実行する
コード使用
Webhook ハンドラを構築してイベントをリッスンし、非同期型のカスタムの確認フローを作成します。Stripe CLI を使用して、ローカルで Webhook の組み込みのテストとデバッグを行います。
コードなし
ダッシュボードを使用してすべての本人確認を表示し、収集されたデータを調査して、確認の失敗について把握します。