Commit a474415c authored by yinjiacheng's avatar yinjiacheng

update 身份证OCR接口 人脸验证成功后锁定输入状态

parent 9edd9334
...@@ -10,6 +10,8 @@ class LifeAccountPersonalAuthData { ...@@ -10,6 +10,8 @@ class LifeAccountPersonalAuthData {
var idCardNum: String = "" var idCardNum: String = ""
var idCardPortraitFaceObjectKey: String = "" var idCardPortraitFaceObjectKey: String = ""
var idCardNationalEmblemFaceObjectKey: String = "" var idCardNationalEmblemFaceObjectKey: String = ""
var idCardPortraitFaceBucket: String = ""
var idCardNationalEmblemFaceBucket: String = ""
var liveDetectBizToken: String = "" var liveDetectBizToken: String = ""
var liveDetectObjectKey: String = "" var liveDetectObjectKey: String = ""
var idCardPortraitFaceCompleteness: Int = -1 var idCardPortraitFaceCompleteness: Int = -1
......
...@@ -40,4 +40,8 @@ object Constant { ...@@ -40,4 +40,8 @@ object Constant {
const val TYPE_STILL = "still" // 静默活体 const val TYPE_STILL = "still" // 静默活体
const val TYPE_FLASH = "flash" // 炫彩活体,通过打光进行活体验证,炫彩活体相较于静默活体安全性更高,但通过率会略有降低 const val TYPE_FLASH = "flash" // 炫彩活体,通过打光进行活体验证,炫彩活体相较于静默活体安全性更高,但通过率会略有降低
const val TYPE_RAW_IMAGE = "raw_image" // 不进行活体验证,仅使用上传的图片进行后续的比对 const val TYPE_RAW_IMAGE = "raw_image" // 不进行活体验证,仅使用上传的图片进行后续的比对
// 服务端error message
const val error_message_id_card_number = "身份证号码有误"
const val error_message_real_name = "姓名缺失"
} }
\ No newline at end of file
...@@ -7,8 +7,10 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean ...@@ -7,8 +7,10 @@ package com.yidian.shenghuoquan.newscontent.http.httpbean
*/ */
class GetIDCardOCRBean(val request: Request, val response: Response) { class GetIDCardOCRBean(val request: Request, val response: Response) {
data class Request( data class Request(
val posit_image_objectid: String?, val posit_image_objectid: String,
val back_image_objectid: String? val back_image_objectid: String,
val posit_bucket: String?,
val back_bucket: String?
) )
data class Response( data class Response(
...@@ -19,7 +21,9 @@ class GetIDCardOCRBean(val request: Request, val response: Response) { ...@@ -19,7 +21,9 @@ class GetIDCardOCRBean(val request: Request, val response: Response) {
data class Back( data class Back(
val issued_by: String, val issued_by: String,
val valid_date_end: String, val valid_date_end: String,
val valid_date_start: String val valid_date_start: String,
val completeness: Int,
val legality: Legality
) )
data class Posit( data class Posit(
......
...@@ -347,6 +347,9 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth ...@@ -347,6 +347,9 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
LifeAccountAuthDataManager.personalAuthData.idCardPortraitFaceObjectKey = LifeAccountAuthDataManager.personalAuthData.idCardPortraitFaceObjectKey =
it it
} }
bucket?.let {
LifeAccountAuthDataManager.personalAuthData.idCardPortraitFaceBucket = it
}
KS3Core.INSTANCE.uploadObject( KS3Core.INSTANCE.uploadObject(
File(cachePath + Constant.FILE_PATH_ID_CARD_NATIONAL_EMBLEM_FACE), File(cachePath + Constant.FILE_PATH_ID_CARD_NATIONAL_EMBLEM_FACE),
KS3Core.ObjectType.IMAGE, object : KS3Core.OnKS3TaskListener { KS3Core.ObjectType.IMAGE, object : KS3Core.OnKS3TaskListener {
...@@ -373,6 +376,10 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth ...@@ -373,6 +376,10 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
LifeAccountAuthDataManager.personalAuthData.idCardNationalEmblemFaceObjectKey = LifeAccountAuthDataManager.personalAuthData.idCardNationalEmblemFaceObjectKey =
it it
} }
bucket?.let {
LifeAccountAuthDataManager.personalAuthData.idCardNationalEmblemFaceBucket =
it
}
startIDCardOCR() startIDCardOCR()
} }
...@@ -405,7 +412,9 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth ...@@ -405,7 +412,9 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
this, this,
GetIDCardOCRBean.Request( GetIDCardOCRBean.Request(
LifeAccountAuthDataManager.personalAuthData.idCardPortraitFaceObjectKey, LifeAccountAuthDataManager.personalAuthData.idCardPortraitFaceObjectKey,
LifeAccountAuthDataManager.personalAuthData.idCardNationalEmblemFaceObjectKey LifeAccountAuthDataManager.personalAuthData.idCardNationalEmblemFaceObjectKey,
LifeAccountAuthDataManager.personalAuthData.idCardPortraitFaceBucket,
LifeAccountAuthDataManager.personalAuthData.idCardNationalEmblemFaceBucket
) )
) )
} }
...@@ -454,6 +463,11 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth ...@@ -454,6 +463,11 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
ApiService.authLiveIdentity(this) ApiService.authLiveIdentity(this)
// 检查下一步条件 // 检查下一步条件
(activity as LifeAccountPersonalAuthActivity).checkNextCondition() (activity as LifeAccountPersonalAuthActivity).checkNextCondition()
// 锁定当前输入状态 即完成人脸验证后无法修改身份证照片、姓名、身份证号
viewBinding.ivIdCardPortraitFace.disableModify()
viewBinding.ivIdCardNationalEmblemFace.disableModify()
viewBinding.evRealName.disableModify()
viewBinding.evIdCardNumber.disableModify()
} }
} }
...@@ -577,6 +591,10 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth ...@@ -577,6 +591,10 @@ class LifeAccountIDCardAuthFragment : BaseFragment<FragmentLifeAccountIdCardAuth
override fun onImageClear(from: LifeAccountAuthImageView) { override fun onImageClear(from: LifeAccountAuthImageView) {
if (from == viewBinding.ivIdCardPortraitFace) { if (from == viewBinding.ivIdCardPortraitFace) {
LifeAccountAuthDataManager.personalAuthData.isIDCardPortraitFaceUpload = false LifeAccountAuthDataManager.personalAuthData.isIDCardPortraitFaceUpload = false
viewBinding.evRealName.clearEditContent()
viewBinding.evIdCardNumber.clearEditContent()
LifeAccountAuthDataManager.personalAuthData.realName = ""
LifeAccountAuthDataManager.personalAuthData.idCardNum = ""
} else { } else {
LifeAccountAuthDataManager.personalAuthData.isIDCardNationalEmblemFaceUpload = false LifeAccountAuthDataManager.personalAuthData.isIDCardNationalEmblemFaceUpload = false
} }
......
...@@ -39,6 +39,8 @@ class IDCardTestActivity : BaseActivity<ActivityIdcardBinding>() { ...@@ -39,6 +39,8 @@ class IDCardTestActivity : BaseActivity<ActivityIdcardBinding>() {
private var idCardBack: Bitmap? = null private var idCardBack: Bitmap? = null
private lateinit var idCardFrontObjectKey: String private lateinit var idCardFrontObjectKey: String
private lateinit var idCardBackObjectKey: String private lateinit var idCardBackObjectKey: String
private lateinit var idCardFrontBucket: String
private lateinit var idCardBackBucket: String
override fun createViewBinding(): ActivityIdcardBinding { override fun createViewBinding(): ActivityIdcardBinding {
return ActivityIdcardBinding.inflate(layoutInflater) return ActivityIdcardBinding.inflate(layoutInflater)
...@@ -97,6 +99,9 @@ class IDCardTestActivity : BaseActivity<ActivityIdcardBinding>() { ...@@ -97,6 +99,9 @@ class IDCardTestActivity : BaseActivity<ActivityIdcardBinding>() {
if (objectKey != null) { if (objectKey != null) {
idCardFrontObjectKey = objectKey idCardFrontObjectKey = objectKey
} }
if (bucket != null) {
idCardFrontBucket = bucket
}
KS3Core.INSTANCE.uploadObject(backFile, object : KS3Core.OnKS3TaskListener { KS3Core.INSTANCE.uploadObject(backFile, object : KS3Core.OnKS3TaskListener {
override fun onTaskStart() { override fun onTaskStart() {
...@@ -118,7 +123,16 @@ class IDCardTestActivity : BaseActivity<ActivityIdcardBinding>() { ...@@ -118,7 +123,16 @@ class IDCardTestActivity : BaseActivity<ActivityIdcardBinding>() {
if (objectKey != null) { if (objectKey != null) {
idCardBackObjectKey = objectKey idCardBackObjectKey = objectKey
} }
val request = GetIDCardOCRBean.Request(idCardFrontObjectKey, idCardBackObjectKey) if (bucket != null) {
idCardBackBucket = bucket
}
val request =
GetIDCardOCRBean.Request(
idCardFrontObjectKey,
idCardBackObjectKey,
idCardFrontBucket,
idCardBackBucket
)
ApiService.getIDCardOCR(object : IGetIDCardOCRCallback { ApiService.getIDCardOCR(object : IGetIDCardOCRCallback {
override fun getIDCardOCRSuccess(result: GetIDCardOCRBean.Response?) { override fun getIDCardOCRSuccess(result: GetIDCardOCRBean.Response?) {
Log.d(KS3Core.TAG, "name: ${result?.posit?.name}, id num: ${result?.posit?.idcard_number}") Log.d(KS3Core.TAG, "name: ${result?.posit?.name}, id num: ${result?.posit?.idcard_number}")
......
...@@ -6,6 +6,7 @@ import android.text.TextUtils ...@@ -6,6 +6,7 @@ import android.text.TextUtils
import android.text.TextWatcher import android.text.TextWatcher
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import androidx.core.view.isVisible
import com.yidian.nightmode.widget.YdConstraintLayout import com.yidian.nightmode.widget.YdConstraintLayout
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountAuthBusinessInfoEditBinding import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountAuthBusinessInfoEditBinding
...@@ -70,6 +71,14 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor( ...@@ -70,6 +71,14 @@ class LifeAccountAuthBusinessInfoEditView @JvmOverloads constructor(
} }
} }
/**
* 禁止修改
*/
fun disableModify() {
viewBinding.ivClear.isVisible = false
isEnabled = false
}
override fun onClick(v: View?) { override fun onClick(v: View?) {
if (v?.id == R.id.iv_clear) { if (v?.id == R.id.iv_clear) {
// 清除输入框中的内容 // 清除输入框中的内容
......
...@@ -6,6 +6,7 @@ import android.text.TextUtils ...@@ -6,6 +6,7 @@ import android.text.TextUtils
import android.text.TextWatcher import android.text.TextWatcher
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import androidx.core.view.isVisible
import com.yidian.nightmode.widget.YdConstraintLayout import com.yidian.nightmode.widget.YdConstraintLayout
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountAuthIdentityInfoEditBinding import com.yidian.shenghuoquan.newscontent.databinding.ViewLifeAccountAuthIdentityInfoEditBinding
...@@ -73,6 +74,14 @@ class LifeAccountAuthIdentityInfoEditView @JvmOverloads constructor( ...@@ -73,6 +74,14 @@ class LifeAccountAuthIdentityInfoEditView @JvmOverloads constructor(
} }
} }
/**
* 禁止修改
*/
fun disableModify() {
viewBinding.ivClear.isVisible = false
isEnabled = false
}
override fun onClick(v: View?) { override fun onClick(v: View?) {
if (v?.id == R.id.iv_clear) { if (v?.id == R.id.iv_clear) {
// 清除输入框中的内容 // 清除输入框中的内容
......
...@@ -73,6 +73,14 @@ class LifeAccountAuthImageView @JvmOverloads constructor( ...@@ -73,6 +73,14 @@ class LifeAccountAuthImageView @JvmOverloads constructor(
callback?.onImageClear(this) callback?.onImageClear(this)
} }
/**
* 禁止修改
*/
fun disableModify() {
viewBinding.ivClear.isVisible = false
isEnabled = false
}
override fun onClick(v: View?) { override fun onClick(v: View?) {
if (v?.id == R.id.iv_clear) { if (v?.id == R.id.iv_clear) {
// 清除填充的图片 // 清除填充的图片
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment