ユーザーの本人確認書類を確認する
セッションを作成して、本人確認書類を収集します。
このガイドでは、Stripe Identity を使用して、身分証明書を安全に収集し、確認する方法について説明します。
はじめに
- 本番環境利用の申請を行う。
- Stripe Identity 申請書にご記入ください。
- (オプション) ブランディング設定ページでブランド設定をカスタマイズする。
注
Identity Android SDK を利用するには、Identity 設定ページにアクセスして、有効にするをクリックします。
Android でユーザーの本人確認を行うには、自社のアプリケーションに確認画面を表示します。このガイドでは、以下の手順を説明します。
- Stripe を設定します。
- サーバーエンドポイントを追加します。
- 確認画面を表示します。
- 確認イベントを処理します。
このガイドの手順は、サンプルアプリ と サンプルバックエンドサーバー で完全に実装されています。
設定サーバー側クライアント側
注
この SDK を Stripe Identity サービスで使用する場合、この SDK を改変してはいけません。Stripe の書面による承認を得ずに、改変された SDK を Stripe Identity サービスで使用することは Stripe との契約に違反することになり、Stripe アカウントが閉鎖される場合があります。
SDK をインストールする クライアント側
Stripe Android SDK はオープンソースであり、詳細なドキュメントが提供されています。
SDK をインストールするには、app/build.gradle ファイルの dependencies
ブロックに identity
を追加します。
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases ページをご覧ください。新しいリリースの公開時に通知を受け取るには、リポジトリのリリースを確認してください。
Google Play にある TFLite を利用してバイナリサイズを縮小する クライアント側
Identity Android SDK は、ポータブルな TFLite ランタイムを使用して AI モデルを実行します。アプリケーションが Google Play を通じてリリースされている場合は、Google Play ランタイムを使用して SDK サイズを約 1.2 MB 削減できます。
マテリアルのテーマを設定する クライアント側
Stripe Identity Android SDK には、マテリアルのテーマを使用するためのホスティングアクティビティーが必要です。Material のテーマを有効にするには、以下のようにします。
- プロジェクトの
app/src/main/AndroidManifest.
を開きます。xml application
に適用されるandroid:theme
がいずれかのマテリアルのテーマの子であることを確認してください (たとえば、Theme.
)。MaterialComponents. DayNight
マテリアルのテーマの詳細については、こちらをご覧ください。
サーバーに Stripe をインストールする サーバー側
まず、Stripe アカウントを登録します。
次に、アプリケーションから Stripe API へアクセスするためにライブラリをインストールします。
サーバーエンドポイントを追加するサーバー側
VerificationSession を作成する
VerificationSession は、本人確認をプログラムで示したものです。確認のタイプに関する詳細 (実行するチェックの内容など) が含まれています。確認済みの出力フィールドを拡張して、確認済みのデータの詳細を表示できます。
VerificationSession を作成するには、サーバー側のエンドポイントが必要です。サーバー側で VerificationSession
を作成することにより、悪意のあるユーザーによる確認オプションの上書き、およびお客様のアカウントでの支払いの処理の偽装を防止できます。セッションのメタデータにユーザー参照を含めるか、データベースにセッション ID を保存することで、このエンドポイントに認証を追加します。
セキュリティ上の理由から、モバイルクライアントから直接アクセス可能な VerificationSession
を作成しないでください。代わりにお客様のサーバーが SDK に一時キーを提供します。このキーは、VerificationSession への制限付きアクセス権が付与された一時的な API キーです。一時キーは、セッションとして考えることができ、そのセッションの間は SDK が特定の VerificationSession
オブジェクトを取得して更新することが許可されます。
VerificationSession
と一時キーを作成したら、その VerificationSession
の ID と一時キーシークレットをクライアントに送信し、書類のアップロード画面を表示します。
注
このエンドポイントの実行中の実装を こちら で迅速なテスト用に見つけることができます。
注意
一時キーシークレットは VerificationSession
にバインドされており、これによりアプリは機密データである本人確認情報 (書類や顔写真のファイルなど) を収集できるようになります。使用できるのは 1 回限りで、1 時間後に有効期限が切れます。一時キーシークレットは、記録したり、URL に埋め込んだり、対象のユーザー以外に公開したりしないでください。一時キーシークレットを返すエンドポイントで必ず TLS を有効化します。本人確認の設定や結果の漏洩を防止するため、一時キーシークレットのみをアプリに送信してください。
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 { id: "vs_QdfQQ6xfGNJR7ogV6", ephemeral_key_secret: "ek_YWNjdF8xRm..." }
確認画面を表示するクライアント側
確認画面を表示するボタンをセットアップします。このボタンをタップすると、ユーザーはパスポート、運転免許証、または国民 ID をキャプチャーしてアップロードできます。
開始する前に、確認ページで以下を行う必要があります。
- 本人確認が必要な理由をユーザーに説明します。
- Stripe の UI を表示する本人確認ボタンを含めます。
ボタンを追加する
まず、タップアクションと読み込みインジケータを持つ、ボタン付きの Activity
を作成します。MyHostingActivity
が AppCompatActivity
を継承し、Theme.
を継承したテーマを使用するようにします。
Stripe Identity SDK をインポートする
Identity SDK をアクティビティーにインポートし、onCreate
メソッドでそれを初期化します (これにより、この AppCompatActivity
または Fragment
に ActivityResultLauncher が登録されます)。
確認ボタンにアクションを追加する
VerificationSession
を作成するためのボタンとエンドポイントが準備できたため、次にボタンを変更して、ボタンがタップされたら、書類のアップロード画面が表示されるようにします。
次のためのコールを追加します。
- エンドポイントから、
VerificationSession
ID と一時キーシークレットを取得します。 - ブランドロゴで
IdentityVerificationSheet
をインスタンス化し、ユーザーに提示します。 VerificationFlowResult
を処理し、ユーザーが確認フローを完了したかを知ることができるようにします。
確認画面をテストする
確認ボタンで書類のアップロード画面が表示されるかどうかテストします。
- 本人確認ボタンをタップします。
- エラーメッセージが表示されないことを確認します。
構築したシステムが機能しない場合:
VerificationSession
ID と一時キーシークレットを取得する場所にブレークポイントを配置します。- ネットワークエラーがないこと、およびエンドポイントが
VerificationSession
ID と一時キーシークレットを返すことを確認します。
確認イベントを処理する
書類確認は通常、ユーザーがサイトにリダイレクトするとすぐに完了し、API からすぐに結果を取得できます。まれに、ドキュメント検証の準備ができておらず、非同期的に続行する必要があります。このような場合、検証結果の準備ができたときに Webhook を通じて通知されます。処理が完了すると、VerificationSession のステータスが processing
から verified
に変わります。
セッションのステータスに変化があると、Stripe は以下のイベントを送信します。
イベント名 | 説明 | 次のステップ |
---|---|---|
identity.verification_session.verified | すべての本人確認チェックの処理が完了し、確認のすべてが成功しました。 | アプリケーションで関連するアクションをトリガーします。 |
identity.verification_session.requires_input | すべての本人確認チェックの処理が完了し、少なくとも 1 つの確認が失敗しました。 | アプリケーションで関連するアクションをトリガーするとともに、ユーザーに本人確認の再試行を許可できます。 |
Webhook ハンドラを使用してこれらのイベントを受信し、確定メールの送信、自社データベース内の確認結果の更新、アカウント登録ステップの完了などのアクションを自動化します。ダッシュボードに確認イベントを表示することもできます。
イベントを受信して、ビジネスアクションを実行する
コード使用
Webhook ハンドラを構築してイベントをリッスンし、非同期型のカスタムの確認フローを作成します。Stripe CLI を使用して、ローカルで Webhook の組み込みのテストとデバッグを行います。
コードなし
ダッシュボードを使用してすべての本人確認を表示し、収集されたデータを調査して、確認の失敗について把握します。