// 单独调用法大大 POST /corp/get-auth-url,打印 authUrl。 // // 示例: // // go run ./cmd/fadada_get_auth_url -corp-id=HY-SEAL -name=海南海宇大数据有限公司 -phone=13876051080 -free-sign package main import ( "flag" "fmt" "os" "strings" "tyapi-server/internal/config" "tyapi-server/internal/shared/fadada" ) func main() { corpID := flag.String("corp-id", "", "clientCorpId(必填,业务侧企业唯一标识)") name := flag.String("name", "", "企业名称 corpName") uscc := flag.String("uscc", "", "统一社会信用代码") legal := flag.String("legal", "", "法人姓名") phone := flag.String("phone", "", "经办人手机号") user := flag.String("user", "", "经办人姓名(默认用法人)") idNo := flag.String("id", "", "经办人身份证号") freeSign := flag.Bool("free-sign", false, "是否附带免验证签场景码(读配置 no_auth_scene_code)") redirect := flag.String("redirect", "", "回跳地址(默认读配置 auth.redirect_url)") flag.Parse() if strings.TrimSpace(*corpID) == "" { fmt.Fprintln(os.Stderr, "缺少 -corp-id(clientCorpId)") flag.Usage() os.Exit(2) } cfg, err := config.LoadConfig() if err != nil { fmt.Fprintf(os.Stderr, "加载配置失败: %v\n", err) os.Exit(1) } f := cfg.Fadada if f.AppID == "" || f.AppSecret == "" || f.ServerURL == "" { fmt.Fprintln(os.Stderr, "config 中 fadada.app_id / app_secret / server_url 不完整") os.Exit(1) } authRedirect := strings.TrimSpace(*redirect) if authRedirect == "" { authRedirect = f.Auth.RedirectURL } fdCfg, err := fadada.NewConfig( f.AppID, f.AppSecret, f.ServerURL, f.OpenCorpID, f.NoAuthSceneCode, f.TemplateID, f.PartyAActorID, f.PartyBActorID, f.TemplateDocID, &fadada.TemplateFields{ AgreementNo: f.TemplateFields.AgreementNo, ContractDate: f.TemplateFields.ContractDate, PartyAName: f.TemplateFields.PartyAName, PartyAUSCC: f.TemplateFields.PartyAUSCC, PartyAAddress: f.TemplateFields.PartyAAddress, PartyARep: f.TemplateFields.PartyARep, PartyASignDate: f.TemplateFields.PartyASignDate, PartyBSignDate: f.TemplateFields.PartyBSignDate, }, &fadada.ContractConfig{Name: f.Contract.Name, ExpireDays: f.Contract.ExpireDays, RetryCount: f.Contract.RetryCount}, &fadada.AuthConfig{RedirectURL: authRedirect}, &fadada.SignConfig{RedirectURL: f.Sign.RedirectURL}, &fadada.CallbackConfig{Enabled: f.Callback.Enabled}, ) if err != nil { fmt.Fprintf(os.Stderr, "构造法大大配置失败: %v\n", err) os.Exit(1) } transactorName := strings.TrimSpace(*user) if transactorName == "" { transactorName = strings.TrimSpace(*legal) } if transactorName == "" { transactorName = "经办人" } req := &fadada.EnterpriseAuthRequest{ ClientCorpID: strings.TrimSpace(*corpID), CompanyName: strings.TrimSpace(*name), UnifiedSocialCode: strings.TrimSpace(*uscc), LegalPersonName: strings.TrimSpace(*legal), TransactorName: transactorName, TransactorMobile: strings.TrimSpace(*phone), TransactorID: strings.TrimSpace(*idNo), } if *freeSign { req.FreeSignBusinessID = strings.TrimSpace(f.NoAuthSceneCode) } // 官方多数字段可选;本地校验要求较严时,用占位补齐以便联调拿链接 if req.CompanyName == "" { req.CompanyName = "待授权企业" } if req.UnifiedSocialCode == "" { req.UnifiedSocialCode = req.ClientCorpID } if req.LegalPersonName == "" { req.LegalPersonName = transactorName } if req.TransactorMobile == "" { req.TransactorMobile = "13800000000" } if req.TransactorID == "" { req.TransactorID = "110101199001011234" } client := fadada.NewClient(fdCfg) fmt.Printf("调用 get-auth-url\n server=%s\n app_id=%s\n clientCorpId=%s\n corpName=%s\n freeSign=%v businessId=%s\n\n", f.ServerURL, f.AppID, req.ClientCorpID, req.CompanyName, *freeSign, req.FreeSignBusinessID) res, err := client.GenerateEnterpriseAuth(req) if err != nil { fmt.Fprintf(os.Stderr, "调用失败: %v\n", err) os.Exit(1) } fmt.Println("authUrl:") fmt.Println(res.AuthURL) }