Files
tyapi-server/cmd/fadada_get_auth_url/main.go

125 lines
4.0 KiB
Go
Raw Normal View History

2026-07-26 23:14:52 +08:00
// 单独调用法大大 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)
}