diff --git a/internal/domains/api/services/processors/yysy/yysybe08_processor.go b/internal/domains/api/services/processors/yysy/yysybe08_processor.go index 5d82dc0..dcacab1 100644 --- a/internal/domains/api/services/processors/yysy/yysybe08_processor.go +++ b/internal/domains/api/services/processors/yysy/yysybe08_processor.go @@ -47,7 +47,7 @@ func ProcessYYSYBE08Request(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrSystem, aerr) } var aliyunData struct { - Result int `json:"result"` + Result *int `json:"result"` Desc string `json:"desc"` } if err := json.Unmarshal(dataBytes, &aliyunData); err != nil { @@ -66,21 +66,14 @@ func ProcessYYSYBE08Request(ctx context.Context, params []byte, deps *processors } var resultCode, verifyResult, resultMsg string - switch aliyunData.Result { - case 0: + switch { + case aliyunData.Result != nil && *aliyunData.Result == 0: resultCode = "0XXX" verifyResult = "一致" resultMsg = aliyunData.Desc if resultMsg == "" { resultMsg = "成功" } - case 1: - resultCode = "5XXX" - verifyResult = "不一致" - resultMsg = aliyunData.Desc - if resultMsg == "" { - resultMsg = "不一致" - } default: resultCode = "5XXX" verifyResult = "不一致" @@ -108,7 +101,7 @@ func ProcessYYSYBE08Request(ctx context.Context, params []byte, deps *processors // 解析数脉 /v4/id_card/check 的 data 内容(CallAPIForm 返回的即 data 对象) // 数卖响应: result 0-一致 1-不一致 2-无记录(预留); desc 如 "一致"/"不一致" var shumaiData struct { - Result int `json:"result"` + Result *int `json:"result"` OrderNo string `json:"order_no"` Desc string `json:"desc"` Sex string `json:"sex"` @@ -135,21 +128,14 @@ func ProcessYYSYBE08Request(ctx context.Context, params []byte, deps *processors // 按数卖 result 验证结果处理: 0-一致 1-不一致 2-无记录(预留) // resultCode: 0XXX=一致, 5XXX=不一致/无记录 var resultCode, verifyResult, resultMsg string - switch shumaiData.Result { - case 0: // 一致(收费) + switch { + case shumaiData.Result != nil && *shumaiData.Result == 0: // 一致(收费) resultCode = "0XXX" verifyResult = "一致" resultMsg = shumaiData.Desc if resultMsg == "" { resultMsg = "成功" } - case 1: // 不一致(收费) - resultCode = "5XXX" - verifyResult = "不一致" - resultMsg = shumaiData.Desc - if resultMsg == "" { - resultMsg = "不一致" - } default: resultCode = "5XXX" verifyResult = "不一致" diff --git a/internal/domains/api/services/processors/yysy/yysybe08test_processor.go b/internal/domains/api/services/processors/yysy/yysybe08test_processor.go index 3341f81..7a20ad4 100644 --- a/internal/domains/api/services/processors/yysy/yysybe08test_processor.go +++ b/internal/domains/api/services/processors/yysy/yysybe08test_processor.go @@ -9,7 +9,7 @@ import ( "tyapi-server/internal/domains/api/services/processors" ) -// ProcessYYSYBE08testRequest 与 YYSYBE08 相同入参,底层使用阿里云市场身份证二要素校验;响应为阿里云接口 data(不做字段映射) +// ProcessYYSYBE08testRequest 与 YYSYBE08 相同入参,底层使用阿里云市场身份证二要素校验;响应映射为 ctidRequest.ctidAuth 格式 func ProcessYYSYBE08testRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { var paramsDto dto.YYSYBE08Req if err := json.Unmarshal(params, ¶msDto); err != nil { @@ -20,7 +20,49 @@ func ProcessYYSYBE08testRequest(ctx context.Context, params []byte, deps *proces return nil, errors.Join(processors.ErrInvalidParam, err) } - return callAliyunIDCardCheckRaw(ctx, deps, paramsDto.Name, paramsDto.IDCard) + respBytes, err := callAliyunIDCardCheckRaw(ctx, deps, paramsDto.Name, paramsDto.IDCard) + if err != nil { + return nil, err + } + + var aliyunData struct { + Result *int `json:"result"` + Desc string `json:"desc"` + } + if err := json.Unmarshal(respBytes, &aliyunData); err != nil { + return nil, errors.Join(processors.ErrSystem, err) + } + + var resultCode, verifyResult, resultMsg string + switch { + case aliyunData.Result != nil && *aliyunData.Result == 0: + resultCode = "0XXX" + verifyResult = "一致" + resultMsg = aliyunData.Desc + if resultMsg == "" { + resultMsg = "成功" + } + default: + resultCode = "5XXX" + verifyResult = "不一致" + resultMsg = aliyunData.Desc + if resultMsg == "" { + resultMsg = "不一致" + } + } + + 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) } // callAliyunIDCardCheckRaw POST api-mall/api/id_card/check(form: name、idcard),返回响应 data,供 YYSYBE08TEST 与 YYSYBE08 数脉失败兜底共用