125 lines
4.0 KiB
Go
125 lines
4.0 KiB
Go
// 单独调用法大大 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)
|
||
}
|