|
|
@@ -96,7 +96,7 @@ import (
|
|
|
// // 要执行的Python脚本命令
|
|
|
// pythonScriptPath := "./py/sign.py"
|
|
|
// // 创建一个命令对象
|
|
|
-// cmd := exec.Command("python", pythonScriptPath)
|
|
|
+// cmd := exec.Command(global.M2A_CONFIG.Asign.Py, pythonScriptPath)
|
|
|
// // 设置标准输入为JSON字符串
|
|
|
// cmd.Stdin = strings.NewReader(string(reqJSON))
|
|
|
// // 获取标准输出
|
|
|
@@ -112,7 +112,7 @@ import (
|
|
|
// }
|
|
|
|
|
|
type AsignData interface {
|
|
|
- AddPersonalUserData | CreateContractData | AddSignerData | DownloadContractData | ContractStatusData
|
|
|
+ AddPersonalUserData | CreateContractData | AddSignerData | DownloadContractData | ContractStatusData | WillFaceData
|
|
|
}
|
|
|
|
|
|
// AsignRsp 爱签响应参数
|
|
|
@@ -246,7 +246,7 @@ func AddPersonalUserBy(account, name, idCard, mobile string, idCardType *int) (r
|
|
|
// 要执行的Python脚本命令
|
|
|
pythonScriptPath := "./py/Enter.py"
|
|
|
// 创建一个命令对象
|
|
|
- cmd := exec.Command("python", pythonScriptPath)
|
|
|
+ cmd := exec.Command(global.M2A_CONFIG.Asign.Py, pythonScriptPath)
|
|
|
// 设置标准输入为JSON字符串
|
|
|
cmd.Stdin = strings.NewReader(string(reqJSON))
|
|
|
// 创建一个字节缓冲区来捕获命令的输出
|
|
|
@@ -317,7 +317,7 @@ func CreateContract(contractNo, contractName, templateNo string) (rspData AsignR
|
|
|
// 要执行的Python脚本命令
|
|
|
pythonScriptPath := "./py/Enter.py"
|
|
|
// 创建一个命令对象
|
|
|
- cmd := exec.Command("python", pythonScriptPath)
|
|
|
+ cmd := exec.Command(global.M2A_CONFIG.Asign.Py, pythonScriptPath)
|
|
|
// 设置标准输入为JSON字符串
|
|
|
cmd.Stdin = strings.NewReader(string(reqJSON))
|
|
|
// 创建一个字节缓冲区来捕获命令的输出
|
|
|
@@ -380,6 +380,16 @@ func AddSigner(contractNo, account string) (rspData AsignRsp[AddSignerData], err
|
|
|
reqData["contractNo"] = contractNo
|
|
|
reqData["account"] = account
|
|
|
reqData["signType"] = 3
|
|
|
+ // 签署方式指定:(从以下分类中指定一种)
|
|
|
+ // 1:短信验证码签约(支持企业和个人)
|
|
|
+ // 2:签约密码签约(支持企业和个人)
|
|
|
+ // 3:人脸识别签约(支持企业和个人)
|
|
|
+ // 4:手写签名(不推荐,仅限个人)
|
|
|
+ // 6:手写识别签名+短信签约(仅限个人)
|
|
|
+ // 7:手写签名+短信签约(仅限个人)
|
|
|
+ // 8:手写签名+人脸识别签约(仅限个人)
|
|
|
+ // 9:手写识别签名+人脸识别签约(仅限个人)
|
|
|
+ reqData["validateType"] = 4
|
|
|
reqData["signStrategyList"] = []map[string]interface{}{
|
|
|
{"attachNo": 1, "locationMode": 4, "signKey": "key_sign_name"},
|
|
|
{"attachNo": 1, "locationMode": 4, "signKey": "key_sign_date"},
|
|
|
@@ -399,7 +409,7 @@ func AddSigner(contractNo, account string) (rspData AsignRsp[AddSignerData], err
|
|
|
// 要执行的Python脚本命令
|
|
|
pythonScriptPath := "./py/Enter.py"
|
|
|
// 创建一个命令对象
|
|
|
- cmd := exec.Command("python", pythonScriptPath)
|
|
|
+ cmd := exec.Command(global.M2A_CONFIG.Asign.Py, pythonScriptPath)
|
|
|
// 设置标准输入为JSON字符串
|
|
|
cmd.Stdin = strings.NewReader(string(reqJSON))
|
|
|
// 创建一个字节缓冲区来捕获命令的输出
|
|
|
@@ -462,7 +472,7 @@ func DownloadContract(contractNo string) (rspData AsignRsp[DownloadContractData]
|
|
|
// 要执行的Python脚本命令
|
|
|
pythonScriptPath := "./py/Enter.py"
|
|
|
// 创建一个命令对象
|
|
|
- cmd := exec.Command("python", pythonScriptPath)
|
|
|
+ cmd := exec.Command(global.M2A_CONFIG.Asign.Py, pythonScriptPath)
|
|
|
// 设置标准输入为JSON字符串
|
|
|
cmd.Stdin = strings.NewReader(string(reqJSON))
|
|
|
// 创建一个字节缓冲区来捕获命令的输出
|
|
|
@@ -521,7 +531,7 @@ func ContractStatus(contractNo string) (rspData AsignRsp[ContractStatusData], er
|
|
|
// 要执行的Python脚本命令
|
|
|
pythonScriptPath := "./py/Enter.py"
|
|
|
// 创建一个命令对象
|
|
|
- cmd := exec.Command("python", pythonScriptPath)
|
|
|
+ cmd := exec.Command(global.M2A_CONFIG.Asign.Py, pythonScriptPath)
|
|
|
// 设置标准输入为JSON字符串
|
|
|
cmd.Stdin = strings.NewReader(string(reqJSON))
|
|
|
// 创建一个字节缓冲区来捕获命令的输出
|
|
|
@@ -546,3 +556,65 @@ func ContractStatus(contractNo string) (rspData AsignRsp[ContractStatusData], er
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// 个人意愿核身认证响应数据
|
|
|
+type WillFaceData struct {
|
|
|
+ Result int `json:"result"` // 认证结果:0.暂无结果/认证中
|
|
|
+ SerialNo string `json:"serialNo"` // 认证流水号
|
|
|
+ Type string `json:"type"` // 认证类型
|
|
|
+ FaceUrl string `json:"faceUrl"` // 意愿核身链接
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+WillFace 个人意愿核身认证
|
|
|
+*/
|
|
|
+func WillFace(realName, idCardNo, question, answer, recordId string) (rspData AsignRsp[WillFaceData], err error) {
|
|
|
+ apiUrl := global.M2A_CONFIG.Asign.URL + "auth/person/willFace"
|
|
|
+
|
|
|
+ // 构建请求数据结构
|
|
|
+ reqData := make(map[string]interface{})
|
|
|
+ reqData["realName"] = realName
|
|
|
+ reqData["idCardNo"] = idCardNo
|
|
|
+ reqData["question"] = question
|
|
|
+ reqData["answer"] = answer
|
|
|
+ reqData["redirectUrl"] = global.M2A_CONFIG.Asign.WillFaceRedirectUrl + "?recordId=" + recordId
|
|
|
+
|
|
|
+ reqData["api"] = "willFace"
|
|
|
+ reqData["appId"] = global.M2A_CONFIG.Asign.AppId
|
|
|
+ reqData["appKey"] = global.M2A_CONFIG.Asign.PrivateKey
|
|
|
+ reqData["apiUrl"] = apiUrl
|
|
|
+
|
|
|
+ // 将请求数据转换为JSON字符串
|
|
|
+ reqJSON, err := json.Marshal(reqData)
|
|
|
+ if err != nil {
|
|
|
+ global.M2A_LOG.Error("[WillFace] 构建请求参数失败", zap.Error(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 要执行的Python脚本命令
|
|
|
+ pythonScriptPath := "./py/Enter.py"
|
|
|
+ // 创建一个命令对象
|
|
|
+ cmd := exec.Command(global.M2A_CONFIG.Asign.Py, pythonScriptPath)
|
|
|
+ // 设置标准输入为JSON字符串
|
|
|
+ cmd.Stdin = strings.NewReader(string(reqJSON))
|
|
|
+ // 创建一个字节缓冲区来捕获命令的输出
|
|
|
+ var stdoutBuf, stderrBuf bytes.Buffer
|
|
|
+ cmd.Stdout = &stdoutBuf
|
|
|
+ cmd.Stderr = &stderrBuf
|
|
|
+ // 执行命令
|
|
|
+ err = cmd.Run()
|
|
|
+ // 输出标准输出和标准错误
|
|
|
+ fmt.Println("ContractStatus 标准输出:", stdoutBuf.String())
|
|
|
+ fmt.Println("ContractStatus 标准错误:", stderrBuf.String())
|
|
|
+ if err != nil {
|
|
|
+ global.M2A_LOG.Error("[ContractStatus] 请求失败", zap.Error(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 结果
|
|
|
+ rspBody := stdoutBuf.String()
|
|
|
+ if err = json.Unmarshal([]byte(rspBody), &rspData); err != nil {
|
|
|
+ global.M2A_LOG.Error("[WillFace] 反序列化body失败", zap.Error(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|