This commit is contained in:
Mrx
2026-03-21 19:08:11 +08:00
parent 895b38ab88
commit 9a1cf0d1d1
2 changed files with 20 additions and 60 deletions

View File

@@ -9,7 +9,6 @@ import (
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/alicloud"
) )
// ProcessYYSYBE08Request YYSYBE08 API处理方法 - 使用数脉二要素验证 // ProcessYYSYBE08Request YYSYBE08 API处理方法 - 使用数脉二要素验证
@@ -36,51 +35,9 @@ func ProcessYYSYBE08Request(ctx context.Context, params []byte, deps *processors
if err != nil { if err != nil {
// 使用实时接口app_id 和 app_secret重试 // 使用实时接口app_id 和 app_secret重试
respBytes, err = deps.ShumaiService.CallAPIForm(ctx, apiPath, reqFormData, false) respBytes, err = deps.ShumaiService.CallAPIForm(ctx, apiPath, reqFormData, false)
// 重试仍失败:阿里云身份证二要素兜底,返回 data兜底仍失败则按阿里云错误类型返回与 YYSY3M8S 对数脉的分流一致) // 重试仍失败:阿里云身份证二要素兜底,并直接返回统一映射响应
if err != nil { if err != nil {
dataBytes, aerr := callAliyunIDCardCheckRaw(ctx, deps, paramsDto.Name, paramsDto.IDCard) return callAliyunIDCardCheckRaw(ctx, deps, paramsDto.Name, paramsDto.IDCard)
if aerr != nil {
if errors.Is(aerr, alicloud.ErrDatasource) {
return nil, errors.Join(processors.ErrDatasource, aerr)
}
if errors.Is(aerr, alicloud.ErrSystem) {
return nil, errors.Join(processors.ErrSystem, aerr)
}
return nil, errors.Join(processors.ErrSystem, aerr)
}
var aliyunData struct {
Result interface{} `json:"result"`
Desc string `json:"desc"`
}
if err := json.Unmarshal(dataBytes, &aliyunData); err != nil {
errorResponse := map[string]interface{}{
"ctidRequest": map[string]interface{}{
"ctidAuth": map[string]interface{}{
"idCard": paramsDto.IDCard,
"name": paramsDto.Name,
"resultCode": "500",
"resultMsg": "响应解析失败",
"verifyResult": "",
},
},
}
return json.Marshal(errorResponse)
}
resultCode, verifyResult, resultMsg := mapIDCardCheckResult(aliyunData.Result, aliyunData.Desc)
response := map[string]interface{}{
"ctidRequest": map[string]interface{}{
"ctidAuth": map[string]interface{}{
"idCard": paramsDto.IDCard,
"name": paramsDto.Name,
"resultCode": resultCode,
"resultMsg": resultMsg,
"verifyResult": verifyResult,
},
},
}
return json.Marshal(response)
} }
} }

View File

@@ -7,6 +7,7 @@ import (
"tyapi-server/internal/domains/api/dto" "tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors" "tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/alicloud"
) )
// ProcessYYSYBE08testRequest 与 YYSYBE08 相同入参,底层使用阿里云市场身份证二要素校验;响应映射为 ctidRequest.ctidAuth 格式 // ProcessYYSYBE08testRequest 与 YYSYBE08 相同入参,底层使用阿里云市场身份证二要素校验;响应映射为 ctidRequest.ctidAuth 格式
@@ -20,9 +21,22 @@ func ProcessYYSYBE08testRequest(ctx context.Context, params []byte, deps *proces
return nil, errors.Join(processors.ErrInvalidParam, err) return nil, errors.Join(processors.ErrInvalidParam, err)
} }
respBytes, err := callAliyunIDCardCheckRaw(ctx, deps, paramsDto.Name, paramsDto.IDCard) return callAliyunIDCardCheckRaw(ctx, deps, paramsDto.Name, paramsDto.IDCard)
}
// callAliyunIDCardCheckRaw POST api-mall/api/id_card/checkform: name、idcard并映射为 ctidRequest.ctidAuth 响应
func callAliyunIDCardCheckRaw(ctx context.Context, deps *processors.ProcessorDependencies, name, idCard string) ([]byte, error) {
_ = ctx
reqData := map[string]interface{}{
"name": name,
"idcard": idCard,
}
respBytes, err := deps.AlicloudService.CallAPI("api-mall/api/id_card/check", reqData)
if err != nil { if err != nil {
return nil, err if errors.Is(err, alicloud.ErrDatasource) {
return nil, errors.Join(processors.ErrDatasource, err)
}
return nil, errors.Join(processors.ErrSystem, err)
} }
var aliyunData struct { var aliyunData struct {
@@ -34,12 +48,11 @@ func ProcessYYSYBE08testRequest(ctx context.Context, params []byte, deps *proces
} }
resultCode, verifyResult, resultMsg := mapIDCardCheckResult(aliyunData.Result, aliyunData.Desc) resultCode, verifyResult, resultMsg := mapIDCardCheckResult(aliyunData.Result, aliyunData.Desc)
response := map[string]interface{}{ response := map[string]interface{}{
"ctidRequest": map[string]interface{}{ "ctidRequest": map[string]interface{}{
"ctidAuth": map[string]interface{}{ "ctidAuth": map[string]interface{}{
"idCard": paramsDto.IDCard, "idCard": idCard,
"name": paramsDto.Name, "name": name,
"resultCode": resultCode, "resultCode": resultCode,
"resultMsg": resultMsg, "resultMsg": resultMsg,
"verifyResult": verifyResult, "verifyResult": verifyResult,
@@ -48,13 +61,3 @@ func ProcessYYSYBE08testRequest(ctx context.Context, params []byte, deps *proces
} }
return json.Marshal(response) return json.Marshal(response)
} }
// callAliyunIDCardCheckRaw POST api-mall/api/id_card/checkform: name、idcard返回响应 data供 YYSYBE08TEST 与 YYSYBE08 数脉失败兜底共用
func callAliyunIDCardCheckRaw(ctx context.Context, deps *processors.ProcessorDependencies, name, idCard string) ([]byte, error) {
_ = ctx
reqData := map[string]interface{}{
"name": name,
"idcard": idCard,
}
return deps.AlicloudService.CallAPI("api-mall/api/id_card/check", reqData)
}