add ivyz9k2l

This commit is contained in:
2025-11-20 18:02:18 +08:00
parent 15d0759cfb
commit 90d0324a1a
5 changed files with 135 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
package ivyz
import (
"context"
"encoding/json"
"errors"
"strconv"
"time"
"tyapi-server/internal/domains/api/dto"
"tyapi-server/internal/domains/api/services/processors"
"tyapi-server/internal/infrastructure/external/westdex"
)
// ProcessIVYZ9K2LRequest IVYZ9K2L API处理方法 - 身份认证三要素(人脸图像版)
func ProcessIVYZ9K2LRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) {
var paramsDto dto.IVYZ9K2LReq
if err := json.Unmarshal(params, &paramsDto); err != nil {
return nil, errors.Join(processors.ErrSystem, err)
}
if err := deps.Validator.ValidateStruct(paramsDto); err != nil {
return nil, errors.Join(processors.ErrInvalidParam, err)
}
// 加密姓名
encryptedName, err := deps.WestDexService.Encrypt(paramsDto.Name)
if err != nil {
return nil, errors.Join(processors.ErrSystem, err)
}
// 加密身份证号
encryptedIDCard, err := deps.WestDexService.Encrypt(paramsDto.IDCard)
if err != nil {
return nil, errors.Join(processors.ErrSystem, err)
}
// 生成时间戳(毫秒)
timestamp := strconv.FormatInt(time.Now().UnixNano()/int64(time.Millisecond), 10)
// 获取自定义编号(从 WestDexService 配置中获取 secret_id
config := deps.WestDexService.GetConfig()
customNumber := config.SecretID
// 构建请求数据
reqData := map[string]interface{}{
"timeStamp": timestamp,
"customNumber": customNumber,
"xM": encryptedName,
"gMSFZHM": encryptedIDCard,
}
// 如果提供了人脸图片,添加到请求数据中
if paramsDto.PhotoData != "" {
reqData["photoData"] = paramsDto.PhotoData
}
respBytes, err := deps.WestDexService.CallAPI(ctx, "idCardThreeElements", reqData)
if err != nil {
switch {
case errors.Is(err, westdex.ErrDatasource):
return nil, errors.Join(processors.ErrDatasource, err)
case errors.Is(err, westdex.ErrSystem):
return nil, errors.Join(processors.ErrSystem, err)
default:
return nil, errors.Join(processors.ErrSystem, err)
}
}
return respBytes, nil
}