|
|
@@ -63,12 +63,42 @@ func (c *Client) CompanyCertificationURL(p OrgCertParams) (string, error) {
|
|
|
return resp.AuthURL, nil
|
|
|
}
|
|
|
|
|
|
-// CompanyCertificationStatus 查询法人单位认证状态;未注册时 found=false。
|
|
|
+// CompanyLocateParams 定位契约锁法人单位;与开放平台一致:id > name > registerNo > openCompanyId。
|
|
|
+type CompanyLocateParams struct {
|
|
|
+ ID string
|
|
|
+ OpenCompanyID string
|
|
|
+ Name string
|
|
|
+ RegisterNo string
|
|
|
+}
|
|
|
+
|
|
|
+func (p CompanyLocateParams) toCompanyRequest() (*common.CompanyRequest, error) {
|
|
|
+ switch {
|
|
|
+ case p.ID != "":
|
|
|
+ return &common.CompanyRequest{Id: p.ID}, nil
|
|
|
+ case p.Name != "":
|
|
|
+ return &common.CompanyRequest{Name: p.Name}, nil
|
|
|
+ case p.RegisterNo != "":
|
|
|
+ return &common.CompanyRequest{RegisterNo: p.RegisterNo}, nil
|
|
|
+ case p.OpenCompanyID != "":
|
|
|
+ return &common.CompanyRequest{OpenCompanyId: p.OpenCompanyID}, nil
|
|
|
+ default:
|
|
|
+ return nil, ErrInvalidParams
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// CompanyCertificationStatus 按 openCompanyId 查询法人单位认证状态;未注册时 found=false。
|
|
|
func (c *Client) CompanyCertificationStatus(openCompanyID string) (*CompanyAuthStatus, bool, error) {
|
|
|
+ return c.CompanyCertificationStatusFor(CompanyLocateParams{OpenCompanyID: openCompanyID})
|
|
|
+}
|
|
|
+
|
|
|
+// CompanyCertificationStatusFor 按多种键查询法人单位认证状态。
|
|
|
+func (c *Client) CompanyCertificationStatusFor(company CompanyLocateParams) (*CompanyAuthStatus, bool, error) {
|
|
|
+ fields, err := company.toStatusFields()
|
|
|
+ if err != nil {
|
|
|
+ return nil, false, err
|
|
|
+ }
|
|
|
var resp companyCertStatusResp
|
|
|
- err := c.postMultipart("/companyauth/status", map[string]string{
|
|
|
- "openCompanyId": openCompanyID,
|
|
|
- }, "", nil, &resp)
|
|
|
+ err = c.postMultipart("/companyauth/status", fields, "", nil, &resp)
|
|
|
if err != nil {
|
|
|
return nil, false, err
|
|
|
}
|
|
|
@@ -81,15 +111,42 @@ func (c *Client) CompanyCertificationStatus(openCompanyID string) (*CompanyAuthS
|
|
|
return &resp.Result, true, nil
|
|
|
}
|
|
|
|
|
|
+func (p CompanyLocateParams) toStatusFields() (map[string]string, error) {
|
|
|
+ switch {
|
|
|
+ case p.ID != "":
|
|
|
+ return map[string]string{"id": p.ID}, nil
|
|
|
+ case p.Name != "":
|
|
|
+ return map[string]string{"name": p.Name}, nil
|
|
|
+ case p.RegisterNo != "":
|
|
|
+ return map[string]string{"registerNo": p.RegisterNo}, nil
|
|
|
+ case p.OpenCompanyID != "":
|
|
|
+ return map[string]string{"openCompanyId": p.OpenCompanyID}, nil
|
|
|
+ default:
|
|
|
+ return nil, ErrInvalidParams
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// CompanySealAuthURL 获取机构印章静默授权页;authEnd 为空则默认 1 年。
|
|
|
func (c *Client) CompanySealAuthURL(openCompanyID, adminMobile string, authEnd time.Time) (string, error) {
|
|
|
+ return c.CompanySealAuthURLFor(CompanyLocateParams{OpenCompanyID: openCompanyID}, adminMobile, authEnd)
|
|
|
+}
|
|
|
+
|
|
|
+// CompanySealAuthURLFor 按法人单位定位参数获取印章静默授权页。
|
|
|
+func (c *Client) CompanySealAuthURLFor(company CompanyLocateParams, adminMobile string, authEnd time.Time) (string, error) {
|
|
|
+ if adminMobile == "" {
|
|
|
+ return "", ErrInvalidParams
|
|
|
+ }
|
|
|
+ companyReq, err := company.toCompanyRequest()
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
if authEnd.IsZero() {
|
|
|
authEnd = time.Now().Add(DefaultCompanySealAuthDuration)
|
|
|
}
|
|
|
timeEditable := false
|
|
|
req := v2auth_request.V2AuthCompanysignsilentUrlRequest{
|
|
|
SealMultipleRequest: &common.SealMultipleRequest{
|
|
|
- Company: &common.CompanyRequest{OpenCompanyId: openCompanyID},
|
|
|
+ Company: companyReq,
|
|
|
},
|
|
|
AuthUser: &common.SilentUserRequest{Mobile: adminMobile},
|
|
|
AuthInformation: []string{"AUTHORIZE_SEAL", "AUTHORIZE_COMPANY_CERTIFICATE"},
|