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", "FileName": "test.png" } ] return upload_document_files(files, file_type='png') def upload_document_files(files, file_type='png'): _files = files file_ids = [] # 腾讯电子签接口限制 20 张图片 while len(_files) > 0: res = upload_files(_files[:20], file_type=file_type, business_type='DOCUMENT') print(res) file_ids = file_ids + res.FileIds _files = _files[20:] return file_ids def upload_files(files, file_type='png', business_type='DOCUMENT'): # https://qian.tencent.com/developers/companyApis/templatesAndFiles/UploadFiles/ try: # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 cred = credential.Credential(secret_id, secret_key) # 实例化一个http选项,可选的,没有特殊需求可以跳过 httpProfile = HttpProfile() httpProfile.endpoint = file_endpoint # 实例化一个client选项,可选的,没有特殊需求可以跳过 clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile # 实例化要请求产品的client对象,clientProfile是可选的 client = ess_client.EssClient(cred, "", clientProfile) # 实例化一个请求对象,每个接口都会对应一个request对象 req = models.UploadFilesRequest() params = { "FileType": file_type, "Caller": { "OperatorId": operator_id }, "FileInfos": files, "BusinessType": business_type } req.from_json_string(json.dumps(params)) # 返回的resp是一个DescribeFlowTemplatesResponse的实例,与请求对象对应 resp = client.UploadFiles(req) # 输出json格式的字符串回包 # print(resp.to_json_string()) except TencentCloudSDKException as err: print(err) resp = {} return resp def test_create_flow(): class lensman: phone = '18888888888' identity_card_name = '张三' identity_card_number = '460005199605144313' FlowName = lensman.identity_card_name + "的投稿合同" + tc.local_string(format='%Y%m%d') FlowType = '活动投稿授权书' Approvers = [{ "ApproverType": 1, "Required": True, "NotifyType": None, "ApproverMobile": lensman.phone, "ApproverName": lensman.identity_card_name, "ApproverIdCardType": "ID_CARD", "ApproverIdCardNumber": lensman.identity_card_number, }] return create_flow(flow_name=FlowName, flow_type=FlowType, approvers=Approvers) def create_flow(flow_name=None, flow_type=None, approvers=None): # https://qian.tencent.com/developers/companyApis/startFlows/CreateFlow try: # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 cred = credential.Credential(secret_id, secret_key) # 实例化一个http选项,可选的,没有特殊需求可以跳过 httpProfile = HttpProfile() httpProfile.endpoint = endpoint # 实例化一个client选项,可选的,没有特殊需求可以跳过 clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile # 实例化要请求产品的client对象,clientProfile是可选的 client = ess_client.EssClient(cred, "", clientProfile) # 实例化一个请求对象,每个接口都会对应一个request对象 req = models.CreateFlowRequest() params = { "Operator": { "UserId": operator_id }, "FlowName": flow_name, "FlowType": flow_type, "Approvers": approvers, } req.from_json_string(json.dumps(params)) # 返回的resp是一个DescribeFlowTemplatesResponse的实例,与请求对象对应 resp = client.CreateFlow(req) # 输出json格式的字符串回包 # print(resp.to_json_string()) except TencentCloudSDKException as err: print(err) resp = {} return resp def test_create_document(): class lensman: phone = '18888888888' identity_card_name = '张三' identity_card_number = '460005199605144313' flow_id = 'yDCHHUU08ki1zsUY6XuiSQfzpNaT4BXE' file_id = 'yDCHHUU08q2s90UGmXutvE1Vf4nBGGYu' form_fields = [ { "ComponentId": "ComponentId_0", "ComponentValue": lensman.identity_card_name }, { "ComponentId": "ComponentId_1", "ComponentValue": lensman.identity_card_number, }, { "ComponentId": "ComponentId_2", "ComponentValue": "100", }, { "ComponentId": "ComponentId_3", "ComponentValue": "壹佰", }, { "ComponentId": "ComponentId_37", "ComponentValue": file_id, } ] return create_document(flow_id=flow_id, form_fields=form_fields) def create_document(flow_id=None, form_fields=None): # https://qian.tencent.com/developers/companyApis/startFlows/CreateDocument/ try: # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 cred = credential.Credential(secret_id, secret_key) # 实例化一个http选项,可选的,没有特殊需求可以跳过 httpProfile = HttpProfile() httpProfile.endpoint = endpoint # 实例化一个client选项,可选的,没有特殊需求可以跳过 clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile # 实例化要请求产品的client对象,clientProfile是可选的 client = ess_client.EssClient(cred, "", clientProfile) # 实例化一个请求对象,每个接口都会对应一个request对象 req = models.CreateDocumentRequest() params = { "Operator": { "UserId": operator_id }, "TemplateId": template_id, "FlowId": flow_id, "FormFields": form_fields, } req.from_json_string(json.dumps(params)) # 返回的resp是一个DescribeFlowTemplatesResponse的实例,与请求对象对应 resp = client.CreateDocument(req) # 输出json格式的字符串回包 # print(resp.to_json_string()) except TencentCloudSDKException as err: print(err) resp = {} return resp def test_start_flow(): flow_id = 'yDCHHUU08ki1zsUY6XuiSQfzpNaT4BXE' return start_flow(flow_id=flow_id) def start_flow(flow_id=None): # https://qian.tencent.com/developers/companyApis/startFlows/StartFlow/ try: # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 cred = credential.Credential(secret_id, secret_key) # 实例化一个http选项,可选的,没有特殊需求可以跳过 httpProfile = HttpProfile() httpProfile.endpoint = endpoint # 实例化一个client选项,可选的,没有特殊需求可以跳过 clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile # 实例化要请求产品的client对象,clientProfile是可选的 client = ess_client.EssClient(cred, "", clientProfile) # 实例化一个请求对象,每个接口都会对应一个request对象 req = models.StartFlowRequest() params = { "Operator": { "UserId": operator_id }, "FlowId": flow_id, } req.from_json_string(json.dumps(params)) # 返回的resp是一个DescribeFlowTemplatesResponse的实例,与请求对象对应 resp = client.StartFlow(req) # 输出json格式的字符串回包 # print(resp.to_json_string()) except TencentCloudSDKException as err: print(err) resp = {} return resp def test_create_scheme_url(): class lensman: phone = '18888888888' identity_card_name = '张三' identity_card_number = '460005199605144313' flow_id = 'yDCHHUU08ki1zsUY6XuiSQfzpNaT4BXE' return create_scheme_url(flow_id=flow_id, name=lensman.identity_card_name, mobile=lensman.phone, card_type='ID_CARD', card_number=lensman.identity_card_number) def create_scheme_url(flow_id=None, name=None, mobile=None, card_type='ID_CARD', card_number=None): # https://qian.tencent.com/developers/companyApis/startFlows/CreateSchemeUrl try: # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 cred = credential.Credential(secret_id, secret_key) # 实例化一个http选项,可选的,没有特殊需求可以跳过 httpProfile = HttpProfile() httpProfile.endpoint = endpoint # 实例化一个client选项,可选的,没有特殊需求可以跳过 clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile # 实例化要请求产品的client对象,clientProfile是可选的 client = ess_client.EssClient(cred, "", clientProfile) # 实例化一个请求对象,每个接口都会对应一个request对象 req = models.CreateSchemeUrlRequest() params = { "Operator": { "UserId": operator_id }, "FlowId": flow_id, "Name": name, "Mobile": mobile, "IdCardType": card_type, "IdCardNumber": card_number, "EndPoint": "APP", "PathType": 1, # 腾讯电子签小程序流程合同的详情页 "AutoJumpBack": True, # 签署完成会自动跳转回来 } req.from_json_string(json.dumps(params)) # 返回的resp是一个DescribeFlowTemplatesResponse的实例,与请求对象对应 resp = client.CreateSchemeUrl(req) # 输出json格式的字符串回包 # print(resp.to_json_string()) except TencentCloudSDKException as err: print(err) resp = {} return resp def decode_aes256(data, encryption_key): iv = encryption_key[0:16] aes = AES.new(encryption_key, AES.MODE_CBC, iv) d = aes.decrypt(data) unpad = lambda s: s[0:-ord(d[-1:])] return unpad(d) def test_decode(): # https://qian.tencent.com/developers/company/callback_types_v2 data = "62KE4r5Wz0yHzEpMOwVRbM1KV0pPjj+cmJkT+i65MMscgfHAdNP+9K0nV/fFw1xriwi08APc/wM0mHprE43Hc91VPhRDnu2Wn0+bjzgjmy/FgZKZATR9oquy0/BCWu4C77AjkpkoU1/E7gGLr8M9u9t7zbS4AkkGK5xL5TtwI0sS+CMygmyV7bRjxebMycI52U3QJiwDRIPxFO+7yqeXYXV9AQrRskpCDBNFGW72bh+Ixw9dtX00kWcwVQ93V+mayrvdQ8oGSsL32m72kbBfahsIvIxSYSdDAEeTyokqKGfaLWD27vm55QG218IFKEsOJFDGdqCF+IBcM/+rOFeOrewvP5ehIO2KjFBecTDn0RQTlIiokXIQ4zJKvu6njePFRFoFCZjd4oiEIVn/OBw+rjXml3qwgVBQjPRtYdvDJFNENlVjlkVVmLWeS8MIdqsFWhm6Sa7O8X57mwc0cLJ22mGbyVEzNTFqeFJ/mkueW0leLcoZdjv/+IxZusqa1cpfwzkZhwi5rY6kJffNkkrxIc6OeRvpU4ECgBe/b+kxX+ObC0z9u7nzoZAOHx4akYviyIU5B1romjdfHQ/wDr5udm4Rl4NBhU/6V06Rvaadw0Ta9oBkZHGNxFWv32MnL7fVA0zVNOFDP8n+kaQiNGFAXLF4F5oIItYc5+Gp/IxfkltEki7ni7LztViE7b/ZiKSM+gzQn6fLsJ/dlUoZmh141Y0V/GPpsbxBOnWCjBZdNkLTKxdKCMScLCTysJxv7l6Swff8nAEurbzx1tvyhJAvUDnIaLyP8pRPRFq8p0xm3ZVpOo9k7A952XxVHSs40g4sr/Dihkn60aVhGtKK9DueCzn8P3cWG4TYc03M1hNlPfF+UAfnvQ1ZYAMKT/XPLqYtgRFpRkK96YfVecIrfUe9MjWl0/g4hYCAAOJurFoeGwkJiyQ8Q7DCI5EaHa3s/vI621yQyytC6D2u86RiDJxMW0PdvkUfayT7iPwC83EsfEzpQXr0yeSCQCSBgNByEuCNnZl8LAhYl05Y9+bgCzSPt6EUvmaXclYL+/EPrEmi+hzIdXUwBfhXgICT8MteJgMSgmJM2FjjGxy6uZtfHKRIzf1wk6OORPkPJtMgjlMtMs6VFC62EEeo5Xy2v1S95WT/WQ0tnGR8KjbNnmjNSRyD8VtS2mjlLXaK0xRb71YGt57O19YxQQ3R/Hq9zGqOjG+Agdl+pcvh47RlF8o3CnlU7Q==" encryption_key = 'TencentEssEncryptTestKey12345678' return callback_decode(data, encryption_key) def callback_decode(data, encryption_key=None): # 此处传入密文,如果接收到的数据是{"encrypt":"base64后的密文"} # data = 'base64后的密文' data = base64.b64decode(data) encryption_key = encryption_key or callback_secret_key # encryption_key = bytes(encryption_key or callback_secret_key, encoding="utf8") # 此处传入CallbackUrlKey e = decode_aes256(data, encryption_key) # print(type(e)) # print(e) # print(str(e, encoding="utf8")) return json.loads(e) def test_describe_file_urls(): # { # "TotalCount": 1, # "FileUrls": [ # { # "Url": "https://file.ess.tencent.cn/file/FLOW/yDCHQUU0q7lli4UxZZqK9EJQBXolGmKl/0/0.PDF?hkey=2224d95a960e5bc7e6e3686cff314349ca93867dbd0b1eca01ba63991c8bd8e9c479977410d668b7b3d5bf14af059f969ce4644cf43a7cb6395601a042cadd33a56be20d1643070aa660af450d0ee0b6e30758030e2c0cbd2276bd1d4f05c818", # "Option": "[\"595.30,841.90\",\"-1\"]" # } # ], # "RequestId": "e9381020-c673-4ea6-b051-3a64b0e8a821" # } business_id = 'yDCHQUU0q7lli4UxZZqK9EJQBXolGmKl' return describe_file_urls(business_id=business_id) def describe_file_urls(business_type='FLOW', business_id=None, business_ids=None, file_type='PDF', url_ttl=86400): # https://qian.tencent.com/developers/companyApis/templatesAndFiles/DescribeFileUrls/ try: # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 cred = credential.Credential(secret_id, secret_key) # 实例化一个http选项,可选的,没有特殊需求可以跳过 httpProfile = HttpProfile() httpProfile.endpoint = endpoint # 实例化一个client选项,可选的,没有特殊需求可以跳过 clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile # 实例化要请求产品的client对象,clientProfile是可选的 client = ess_client.EssClient(cred, "", clientProfile) # 实例化一个请求对象,每个接口都会对应一个request对象 req = models.DescribeFileUrlsRequest() business_ids = business_ids or [business_id] params = { "Operator": { "UserId": operator_id }, "BusinessType": business_type, "BusinessIds": business_ids, "FileType": file_type, "UrlTtl": url_ttl, } req.from_json_string(json.dumps(params)) # 返回的resp是一个DescribeFlowTemplatesResponse的实例,与请求对象对应 resp = client.DescribeFileUrls(req) # 输出json格式的字符串回包 # print(resp.to_json_string()) except TencentCloudSDKException as err: print(err) resp = {} return resp Pai2/pai2 - Gogs: Go Git Service

2 Commits (fabef6321156daa0ab27b540e3574fd46bb6ce58)

Author SHA1 Nachricht Datum
  Brightcells 414e2cb1b0 change some {number} to {} vor 9 Jahren
  Brightcells 88049b12db store/return more field for photo vor 9 Jahren