diff --git a/internal/domains/api/services/processors/qygl/qygl8848_processor.go b/internal/domains/api/services/processors/qygl/qygl8848_processor.go index c333a0c..80ef12e 100644 --- a/internal/domains/api/services/processors/qygl/qygl8848_processor.go +++ b/internal/domains/api/services/processors/qygl/qygl8848_processor.go @@ -21,22 +21,22 @@ func ProcessQYGL8848Request(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - // 三选一:企业名称(entName) 与 统一社会信用代码(creditCode) 与 企业注册号(entRegNo) 必须且仅能传其一 + // 企业名称(entName)、统一社会信用代码(creditCode)、企业注册号(entRegNo) 至少传其一;多填时优先用 creditCode 传参 hasEntName := paramsDto.EntName != "" hasEntCode := paramsDto.EntCode != "" hasEntRegNo := paramsDto.EntRegNo != "" - if hasEntName == hasEntCode == hasEntRegNo { // 三个都填或三个都未填 - return nil, errors.Join(processors.ErrInvalidParam, errors.New("ent_name 与 ent_code 与 ent_reg_no 三选一,必须且仅能传其中一个")) + if !hasEntName && !hasEntCode && !hasEntRegNo { // 三个都未填才报错 + return nil, errors.Join(processors.ErrInvalidParam, errors.New("ent_name、ent_code、ent_reg_no 至少需要传其中一个")) } - // 构建数据宝入参(sign 外的业务参数可按需 AES 加密后作为 bodyData) + // 构建数据宝入参(多填时优先取 creditCode) reqParams := map[string]interface{}{ "key": "c67673dd2e92deb2d2ec91b87bb0a81c", } - if hasEntName { - reqParams["entName"] = paramsDto.EntName - } else if hasEntCode { + if hasEntCode { reqParams["creditCode"] = paramsDto.EntCode + } else if hasEntName { + reqParams["entName"] = paramsDto.EntName } else if hasEntRegNo { reqParams["regCode"] = paramsDto.EntRegNo } diff --git a/internal/domains/api/services/processors/qygl/qygldj12_processor.go b/internal/domains/api/services/processors/qygl/qygldj12_processor.go index 69d1e45..870b44c 100644 --- a/internal/domains/api/services/processors/qygl/qygldj12_processor.go +++ b/internal/domains/api/services/processors/qygl/qygldj12_processor.go @@ -21,26 +21,25 @@ func ProcessQYGLDJ12Request(ctx context.Context, params []byte, deps *processors return nil, errors.Join(processors.ErrInvalidParam, err) } - // 三选一:企业名称(entName) 与 统一社会信用代码(creditCode) 与 企业注册号(entRegNo) 必须且仅能传其一 + // 企业名称(entName)、统一社会信用代码(creditCode)、企业注册号(entRegNo) 至少传其一;多填时优先用 creditCode 传参 hasEntName := paramsDto.EntName != "" hasEntCode := paramsDto.EntCode != "" hasEntRegNo := paramsDto.EntRegNo != "" - if hasEntName == hasEntCode == hasEntRegNo { // 三个都填或三个都未填 - return nil, errors.Join(processors.ErrInvalidParam, errors.New("ent_name 与 ent_code 与 ent_reg_no 三选一,必须且仅能传其中一个")) + if !hasEntName && !hasEntCode && !hasEntRegNo { // 三个都未填才报错 + return nil, errors.Join(processors.ErrInvalidParam, errors.New("ent_name、ent_code、ent_reg_no 至少需要传其中一个")) } // 构建数据宝入参(sign 外的业务参数可按需 AES 加密后作为 bodyData) reqParams := map[string]interface{}{ "key": "112813815e2cc281ad8f552deb7a3c7f", } - if hasEntName { - reqParams["entName"] = paramsDto.EntName - } else if hasEntCode { + if hasEntCode { reqParams["creditCode"] = paramsDto.EntCode + } else if hasEntName { + reqParams["entName"] = paramsDto.EntName } else if hasEntRegNo { reqParams["regCode"] = paramsDto.EntRegNo } - // 最终请求 URL = https://api.chinadatapay.com/communication + 拼接接口地址值,如 personal/197 apiPath := "/communication/personal/10192" data, err := deps.ShujubaoService.CallAPI(ctx, apiPath, reqParams)