| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package qiyuesuosdk
- import (
- "strconv"
- "strings"
- v2seal_request "git.sxidc.com/student-physical-examination/contract_lock_sdk/model/v2seal/request"
- v2seal_response "git.sxidc.com/student-physical-examination/contract_lock_sdk/model/v2seal/response"
- "git.sxidc.com/student-physical-examination/contract_lock_sdk/model/common"
- )
- // CompanySignQualifications 法人单位签章资质(是否已有可用电子章等)。
- type CompanySignQualifications struct {
- ElectronicSeal bool `json:"electronicSeal"`
- SM2Cert bool `json:"sm2Cert"`
- RSACert bool `json:"rsaCert"`
- }
- type companySignQualificationsResp struct {
- apiResponse
- Result CompanySignQualifications `json:"result"`
- }
- type sealCreateResp struct {
- apiResponse
- Result v2seal_response.V2SealCreateResponse `json:"result"`
- }
- // UserPortalURL 由开放平台 API 地址推导用户前台地址(制章/登录)。
- func UserPortalURL(apiAddress string) string {
- addr := strings.TrimRight(apiAddress, "/")
- if strings.Contains(addr, ":9182") {
- return strings.Replace(addr, ":9182", ":9180", 1)
- }
- return addr
- }
- // CompanySignQualificationsFor 查询法人单位是否具备电子印章等签章资质。
- func (c *Client) CompanySignQualificationsFor(company CompanyLocateParams) (*CompanySignQualifications, error) {
- companyReq, err := company.toCompanyRequest()
- if err != nil {
- return nil, err
- }
- var resp companySignQualificationsResp
- if err := c.postJSON("/company/sign/qualifications", map[string]any{
- "companyRequest": companyReq,
- }, &resp); err != nil {
- return nil, err
- }
- if err := resp.err(); err != nil {
- return nil, err
- }
- return &resp.Result, nil
- }
- // CompanySealCreatePageURL 获取制作电子公章的页面链接(method=page)。
- func (c *Client) CompanySealCreatePageURL(company CompanyLocateParams, companyDisplayName, sealName, operatorMobile string) (string, error) {
- if sealName == "" || operatorMobile == "" {
- return "", ErrInvalidParams
- }
- displayName := companyDisplayName
- if displayName == "" {
- displayName = company.Name
- }
- comp := &common.Company{Name: displayName}
- if company.RegisterNo != "" {
- comp.RegisterNo = company.RegisterNo
- }
- if company.ID != "" {
- if id, err := strconv.ParseInt(company.ID, 10, 64); err == nil {
- comp.Id = &id
- }
- }
- modify := true
- req := v2seal_request.V2SealCreateRequest{
- BusinessType: "ELECTRONIC",
- SealType: "COMPANY",
- Method: "page",
- Name: sealName,
- SealCategoryName: "公章",
- Company: comp,
- OperatorInfo: &common.UserInfoRequest{
- Mobile: operatorMobile,
- },
- Modify: &modify,
- }
- var resp sealCreateResp
- if err := c.postJSON("/v2/seal/create", req, &resp); err != nil {
- return "", err
- }
- if err := resp.err(); err != nil {
- return "", err
- }
- url := resp.Result.PageUrl
- if url == "" {
- url = resp.Result.LocalPageUrl
- }
- if url == "" {
- return "", ErrSealCreatePageUnavailable
- }
- return url, nil
- }
- // IsSealNotFoundError 静默授权时「查询的印章不存在」。
- func IsSealNotFoundError(err error) bool {
- if err == nil {
- return false
- }
- msg := err.Error()
- return strings.Contains(msg, "查询的印章不存在") || strings.Contains(msg, "无可授权的印章")
- }
|