| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- import requests
- import json
- from common.esigntool.esign_config import Config
- from common.esigntool.esign_algorithm import buildSignJsonHeader
- import time
- from datetime import datetime
- config = Config()
- def get_auth_flow_id(org_name, org_id, legal_rep_name, legal_rep_id):
- """获取机构认证&授权页面链接"""
- api_path = "/v3/org-auth-url"
- method = "POST"
- body = {
- "clientType": "ALL",
- "redirectConfig": {
- "redirectUrl": "https://www.baidu.com"
- },
- "orgAuthConfig": {
- # "orgName": "爱丽恩严(大连)商务科技有限公司深圳分公司",
- "orgName": org_name,
- "orgInfo": {
- # "orgIDCardNum": "91440300MADDW7XC4C",
- "orgIDCardNum": org_id,
- "orgIDCardType": "CRED_ORG_USCC",
- # "legalRepName": "彭少荣",
- "legalRepName": legal_rep_name,
- # "legalRepIDCardNum": "362204198807182420",
- "legalRepIDCardNum": legal_rep_id,
- "legalRepIDCardType": "CRED_PSN_CH_IDCARD"
- },
- "transactorInfo": {
- "psnAccount": "17337039317",
- "psnInfo": {
- "psnName": "孟骞康",
- "psnIDCardNum": "411426200308121212",
- "psnIDCardType": "CRED_PSN_CH_IDCARD",
- "psnMobile": "17337039317"
- }
- }
- },
- # "authorizeConfig": {
- # "authorizedScopes": [
- # "get_org_identity_info",
- # "get_psn_identity_info",
- # "org_initiate_sign",
- # "manage_org_resource"
- # ]
- # },
- "notifyUrl": "http://120.26.186.130:33333/api/store/esign/callback_auth",
- "transactorUseSeal": True
- }
- 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
- # get_auth_flow_id()
- def get_template_detail():
- """查询合同模板中控件详情"""
- api_path = f"/v3/doc-templates/{config.templates_id}"
- method = "GET"
- json_headers = buildSignJsonHeader(config.appId, config.scert, method, api_path)
- resp = requests.request(method, config.host + api_path, headers=json_headers)
- print(resp.text)
- def fill_in_template(name):
- """填写模板生成文件"""
- api_path = "/v3/files/create-by-doc-template"
- method = "POST"
- body = {
- "docTemplateId": config.templates_id,
- "fileName": "U店在这-商户入驻协议",
- "components": [
- {
- "componentKey": "alien_name",
- "componentValue": "爱丽恩严(大连)商务科技有限公司"
- },
- {
- "componentKey": "store_name",
- "componentValue": name
- },
- {
- "componentKey": "date",
- "componentValue": datetime.now().strftime("%Y年%m月%d日")
- },
- {
- "componentKey": "one_name",
- "componentValue": name
- },
- ]
- }
- 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 get_contract_detail(file_id):
- """查询PDF模板填写后文件"""
- api_path = f"/v3/files/{file_id}"
- method = "GET"
- json_headers = buildSignJsonHeader(config.appId, config.scert, method, api_path)
- resp = requests.request(method, config.host + api_path, headers=json_headers)
- print(resp.text)
- return resp.text
- # get_contract_detail("f0371b4ae7c64c8ca16be3bf031d1d6e")
- # 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:/api/store/esign/callback", # 接收相关回调通知的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": 294, # 获取需要盖章的位置: https://open.esign.cn/tools/seal-position
- # "positionY": 668
- # }
- # }
- # }
- # ]
- # },
- # {
- # "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": 114, # 获取需要盖章的位置: https://open.esign.cn/tools/seal-position
- # "positionY": 666
- # }
- # }
- # }
- # ]
- # }
- # ]
- # }
- # 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 create_by_file(file_id, file_name, contact_phone, store_name, merchant_name, ord_id):
- """基于文件发起签署"""
- 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"
- },
- "notifyUrl": "http://120.26.186.130:33333:/api/store/esign/callback",
- "redirectConfig": {
- "redirectUrl": "https://www.esign.cn/"
- }
- },
- "signers": [
- {
- "signConfig": {
- "signOrder": 1
- },
- "signerType": 1,
- "signFields": [
- {
- "customBizNum": "9527",
- "fileId": file_id,
- "normalSignFieldConfig": {
- "autoSign": True,
- "signFieldStyle": 1,
- "signFieldPosition": {
- "positionPage": "7",
- "positionX": 294,
- "positionY": 668
- }
- }
- }
- ]
- },
- {
- "orgSignerInfo": {
- "orgName": store_name,
- "orgInfo": {
- "orgIDCardNum": ord_id, # "91440300MADDW7XC4C"
- "orgIDCardType": "CRED_ORG_USCC"
- },
- "transactorInfo": {
- "psnAccount": contact_phone,
- "psnInfo": {
- "psnName": merchant_name
- }
- }
- },
- "signConfig": {
- "forcedReadingTime": 10,
- "signOrder": 2
- },
- "signerType": 1,
- "signFields": [
- {
- "customBizNum": "自定义编码001",
- "fileId": file_id,
- "normalSignFieldConfig": {
- "signFieldStyle": 1,
- "signFieldPosition": {
- "positionPage": "7",
- "positionX": 114,
- "positionY": 666
- }
- }
- }
- ]
- }
- ]
- }
- 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 sign_url(sign_flow_id, contact_phone):
- """获取签署页面链接"""
- api_path = f"/v3/sign-flow/{sign_flow_id}/sign-url"
- method = "POST"
- body = {
- "signFlowId": sign_flow_id,
- "clientType": "ALL",
- "needLogin": False,
- "operator": {
- "psnAccount": contact_phone
- },
- "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
- # fill_in_template("我勒个去")
- # sing_data = create_by_file("41bd938c47394e6b9bf4a491949c161e", "U店在这-商户入驻协议", "13503301290", "孟骞康")
- # sign_json = json.loads(sing_data)
- # sing_id = sign_json["data"]["signFlowId"]
- # sign_url("", "13503301290")
- # file_download_url("15156afb603e4145b112ad6eab0815d5")
|