券面記載事項・顔写真の読み出し
このページでは、Verify SDK を使用して特定在留カードから券面記載事項、氏名イメージ・顔画像、署名・証明書を読み出します。
特定在留カードのデータの読み出しには SpecifiedResidenceCardAP クラスを使用します。
このクラスは、券面記載事項や顔画像などをまとめて読み出す readSpecifiedResidenceCardContent のほか、目的のデータだけを個別に読み出すメソッドを提供します。
あらかじめSDK のセットアップを完了しておいてください。
特定在留カードのデータを読み出すには、券面に記載された在留カード等番号の入力が必要です。 在留カード等番号の仕様については在留カードの暗証番号をご覧ください。
ただし、後述の「特定在留カード AP の有無確認とカード種別の読み出し」には在留カード等番号は不要です。
シーケンス
実装例
以下は、在留カード等番号を用いて券面記載事項・氏名イメージ・顔画像・署名・証明書を読み出す例です。
- iOS
- Android
- Web(PaSoRi)
- Flutter
- React Native
func run(cardNumber: String) async throws -> String {
// 特定在留カードへの接続準備を行います。
let session = ReaderSession(dispatchQueue: DispatchQueue.main)
// 特定在留カード AP を操作するクラスを初期化します。
let ap = SpecifiedResidenceCardAP(session: session)
// 特定在留カードに対して券面記載事項、氏名イメージ・顔画像、署名・証明書の読み出しを行います。
let result = try await ap.readSpecifiedResidenceCardContent(cardNumber: cardNumber)
session.close()
return "cardInfo: \(result.cardInfo.base64EncodedString())\n\n" +
"nameImageAndFaceImage: \(result.nameImageAndFaceImage.base64EncodedString())\n\n" +
"signatureAndCertificate: \(result.signatureAndCertificate.base64EncodedString())\n"
}
suspend fun run(cardNumber: String): String {
// 特定在留カードへの接続準備を行います。
val session = ReaderSession(this, this)
// 特定在留カード AP を操作するクラスを初期化します。
val ap = SpecifiedResidenceCardAP(session)
// 特定在留カードに対して券面記載事項、氏名イメージ・顔画像、署名・証明書の読み出しを行います。
val result = ap.readSpecifiedResidenceCardContent(cardNumber)
session.close()
return "cardInfo: ${Base64.encodeToString(result.cardInfo, Base64.NO_WRAP)}\n\n" +
"nameImageAndFaceImage: ${Base64.encodeToString(result.nameImageAndFaceImage, Base64.NO_WRAP)}\n\n" +
"signatureAndCertificate: ${Base64.encodeToString(result.signatureAndCertificate, Base64.NO_WRAP)}\n"
}
Web(PaSoRi)での特定在留カードからのデータ読み出し機能は現在準備中です。
Flutter での特定在留カードからのデータ読み出し機能は現在準備中です。
React Native での特定在留カードからのデータ読み出し機能は現在準備中です。
モック環境では、FeliCa カード(交通系 IC カード、Edy、WAON など)や、ISO/IEC 14443-4 Type-A カード(クレジットカードなど)をタッチすると、特定在留カードの挙動がシミュレートされます。 詳しくはAndroid SDK リファレンスやiOS SDK リファレンスをご覧ください。
特定在留カード AP の有無確認とカード種別の読み出し
SpecifiedResidenceCardAP は、在留カード等番号の入力を求める前に利用できる、次のメソッドを提供します。
hasSpecifiedResidenceCardAP(): タッチしたカードに特定在留カード AP が存在するかどうかを確認します。特定在留カードと特定特別永住者証明書以外のカードをタッチした場合はfalseが返ります。readSpecifiedResidenceCardType(): カード種別(特定在留カードか特定特別永住者証明書か)を読み出します。
これらのメソッドはセキュアメッセージングを使用しないため、拡張 APDU に対応していない端末でも実行できます。 資格外活動許可欄・在留期間等更新申請欄は特定在留カードにのみ存在するため、読み出しの前にカード種別を確認したい場合に利用できます。
個別に読み出せるデータ
readSpecifiedResidenceCardContent 以外にも、以下のメソッドで目的のデータを個別に読み出せます。
いずれのメソッドも在留カード等番号を引数に取り、読み出したバイト列を返します。
| メソッド | 読み出すデータ | 対応するカード種別 |
|---|---|---|
readSpecifiedResidenceCardNumberContent | 在留カード等番号 | 特定在留カード・特定特別永住者証明書 |
readAddressImageContent | 住居地イメージ | 特定在留カード・特定特別永住者証明書 |
readMiscellaneousContent | その他の記載事項 | 特定在留カード・特定特別永住者証明書 |
readActivityPermissionContent | 資格外活動許可欄 | 特定在留カードのみ |
readApplicationStatusForExtensionOfPeriodOfStayContent | 在留期間等更新申請欄 | 特定在留カードのみ |
特定特別永住者証明書に対して特定在留カードのみのメソッドを呼び出すと、UnsupportedCardTypeException(iOS では UnsupportedCardTypeError)が発生します。
実行結果
特定在留カードからのデータ読み出しに成功すると、以下のように Base64 エンコードされた券面記載事項、氏名イメージ・顔画像、署名・証明書が得られます。 特定在留カードのデータのパース・検証時には、これらのデータを Verify CardInfo API に送信します。
次のステップ
特定在留カードから取得したデータのパース・検証を行い、券面記載事項や顔画像を取得しましょう。
その他、SDK の詳しい使い方やエラーの詳細等については、Android SDK リファレンスやiOS SDK リファレンスをご覧ください。