Files
tyapi-server/cmd/fadada_get_auth_url/main.go
2026-07-26 23:14:52 +08:00

125 lines
4.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 单独调用法大大 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-idclientCorpId")
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)
}