|
@@ -66,4 +66,145 @@ def fill_in_template(name):
|
|
|
print(resp.text)
|
|
print(resp.text)
|
|
|
return resp.text
|
|
return resp.text
|
|
|
|
|
|
|
|
-fill_in_template("哈哈")
|
|
|
|
|
|
|
+def create_by_file(file_id, file_name, contact_phone, merchant_name):
|
|
|
|
|
+ """基于文件发起签署"""
|
|
|
|
|
+ api_path = "/v3/sign-flow/create-by-file"
|
|
|
|
|
+ method = "POST"
|
|
|
|
|
+ body = {
|
|
|
|
|
+ "docs": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "fileId": file_id,
|
|
|
|
|
+ "fileName": f"{file_name}.pdf"
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ "signFlowConfig": {
|
|
|
|
|
+ "signFlowTitle": "商家入驻U店的签署协议", # 请设置当前签署任务的主题
|
|
|
|
|
+ "autoFinish": True,
|
|
|
|
|
+ "noticeConfig": {
|
|
|
|
|
+ "noticeTypes": "" #
|
|
|
|
|
+ # """通知类型,通知发起方、签署方、抄送方,默认不通知(值为""空字符串),允许多种通知方式,请使用英文逗号分隔
|
|
|
|
|
+ #
|
|
|
|
|
+ # "" - 不通知(默认值)
|
|
|
|
|
+ #
|
|
|
|
|
+ # 1 - 短信通知(如果套餐内带“分项”字样,请确保开通【电子签名流量费(分项)认证】中的子项:【短信服务】,否则短信通知收不到)
|
|
|
|
|
+ #
|
|
|
|
|
+ # 2 - 邮件通知
|
|
|
|
|
+ #
|
|
|
|
|
+ # 3 - 钉钉工作通知(需使用e签宝钉签产品)
|
|
|
|
|
+ #
|
|
|
|
|
+ # 5 - 微信通知(用户需关注“e签宝电子签名”微信公众号且使用过e签宝微信小程序)
|
|
|
|
|
+ #
|
|
|
|
|
+ # 6 - 企业微信通知(需要使用e签宝企微版产品)
|
|
|
|
|
+ #
|
|
|
|
|
+ # 7 - 飞书通知(需要使用e签宝飞书版产品)
|
|
|
|
|
+ #
|
|
|
|
|
+ # 补充说明:
|
|
|
|
|
+ #
|
|
|
|
|
+ # 1、2:个人账号中需要绑定短信/邮件才有对应的通知方式;
|
|
|
|
|
+ # 3、5、6、7:仅限e签宝正式环境调用才会有。"""
|
|
|
|
|
+ },
|
|
|
|
|
+ "notifyUrl": "http://120.26.186.130:33333", # 接收相关回调通知的Web地址,
|
|
|
|
|
+ "redirectConfig": {
|
|
|
|
|
+ "redirectUrl": "https://www.esign.cn/"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "signers": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "signConfig": {
|
|
|
|
|
+ "signOrder": 1
|
|
|
|
|
+ },
|
|
|
|
|
+ "signerType": 1,
|
|
|
|
|
+ "signFields": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "customBizNum": "9527", # 开发者自定义业务编号
|
|
|
|
|
+ "fileId": file_id, #签署区所在待签署文件ID 【注】这里的fileId需先添加在docs数组中,否则会报错“参数错误: 文件id不在签署流程中”。
|
|
|
|
|
+ "normalSignFieldConfig": {
|
|
|
|
|
+ "autoSign": True,
|
|
|
|
|
+ "signFieldStyle": 1,
|
|
|
|
|
+ "signFieldPosition": {
|
|
|
|
|
+ "positionPage": "7",
|
|
|
|
|
+ "positionX": 114, # 获取需要盖章的位置: https://open.esign.cn/tools/seal-position
|
|
|
|
|
+ "positionY": 666
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "psnSignerInfo": {
|
|
|
|
|
+ "psnAccount": contact_phone,
|
|
|
|
|
+ "psnInfo": {
|
|
|
|
|
+ "psnName": merchant_name
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "signConfig": {
|
|
|
|
|
+ "forcedReadingTime": 10,
|
|
|
|
|
+ "signOrder": 2
|
|
|
|
|
+ },
|
|
|
|
|
+ "signerType": 0,
|
|
|
|
|
+ "signFields": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "customBizNum": "9527",
|
|
|
|
|
+ "fileId": file_id,
|
|
|
|
|
+ "normalSignFieldConfig": {
|
|
|
|
|
+ "signFieldStyle": 1,
|
|
|
|
|
+ "signFieldPosition": {
|
|
|
|
|
+ "positionPage": "7",
|
|
|
|
|
+ "positionX": 294,
|
|
|
|
|
+ "positionY": 668
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ json_headers = buildSignJsonHeader(config.appId, config.scert, method, api_path, body=body)
|
|
|
|
|
+ body_json = json.dumps(body, separators=(",", ":"), ensure_ascii=False)
|
|
|
|
|
+ resp = requests.request(method, config.host + api_path, data=body_json, headers=json_headers)
|
|
|
|
|
+ print(resp.text)
|
|
|
|
|
+ return resp.text
|
|
|
|
|
+
|
|
|
|
|
+# create_by_file(file_id, file_name, store_name, ord_id)
|
|
|
|
|
+
|
|
|
|
|
+def sign_url(sign_flow_id):
|
|
|
|
|
+ api_path = f"/v3/sign-flow/{sign_flow_id}/sign-url"
|
|
|
|
|
+ method = "POST"
|
|
|
|
|
+ body = {
|
|
|
|
|
+ "signFlowId": sign_flow_id,
|
|
|
|
|
+ "clientType": "ALL",
|
|
|
|
|
+ "needLogin": False,
|
|
|
|
|
+ "operator": {
|
|
|
|
|
+ "psnAccount": "13923864580"
|
|
|
|
|
+ },
|
|
|
|
|
+ "urlType": 2
|
|
|
|
|
+}
|
|
|
|
|
+ json_headers = buildSignJsonHeader(config.appId, config.scert, method, api_path, body=body)
|
|
|
|
|
+ body_json = json.dumps(body, separators=(",", ":"), ensure_ascii=False)
|
|
|
|
|
+ resp = requests.request(method, config.host + api_path, data=body_json, headers=json_headers)
|
|
|
|
|
+ print(resp.text)
|
|
|
|
|
+ return resp.text
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def file_download_url(sign_flow_id):
|
|
|
|
|
+ """下载已签署文件及附属材料"""
|
|
|
|
|
+ api_path = f"/v3/sign-flow/{sign_flow_id}/file-download-url"
|
|
|
|
|
+ method = "POST"
|
|
|
|
|
+ body = {
|
|
|
|
|
+ "urlAvailableDate": "3600"
|
|
|
|
|
+}
|
|
|
|
|
+ json_headers = buildSignJsonHeader(config.appId, config.scert, method, api_path, body=body)
|
|
|
|
|
+ body_json = json.dumps(body, separators=(",", ":"), ensure_ascii=False)
|
|
|
|
|
+ resp = requests.request(method, config.host + api_path, data=body_json, headers=json_headers)
|
|
|
|
|
+ print(resp.text)
|
|
|
|
|
+ return resp.text
|
|
|
|
|
+
|
|
|
|
|
+sing_data = create_by_file("fd3d1247ed2a40ef8d47d8c56b14791d", "U店在这-商户入驻协议", "13503301290", "孟骞康")
|
|
|
|
|
+sign_json = json.loads(sing_data)
|
|
|
|
|
+sing_id = sign_json["data"]["signFlowId"]
|
|
|
|
|
+sign_url(sing_id)
|
|
|
|
|
+file_download_url(sing_id)
|