如何从Docusign Accounts API选择指定签名提供者传入Signers对象
解决DocuSign API指定签名提供者的问题
你拿到的providers是AccountSignatureProviders类实例,不是普通字典,所以无法直接用下标[0]访问。需要先提取实例内的signature_providers属性,这才是包含所有签名提供者的可操作列表。
步骤1:提取签名提供者列表
从返回对象中取出实际的提供者列表:
# 提取可操作的签名提供者列表 signature_providers_list = providers.signature_providers
此时signature_providers_list就是你打印输出里的字典列表,可正常用下标或遍历访问。
步骤2:选择指定签名提供者
可以通过下标直接选取,或通过ID/名称筛选(更适配动态场景):
# 方式1:已知位置时直接下标选取 selected_provider = signature_providers_list[1] # 对应GlobalSign提供者 # 方式2:通过ID精准筛选(推荐) selected_provider = next(p for p in signature_providers_list if p['signature_provider_id'] == '73')
步骤3:传入Signers对象构造信封
recipient_signature_providers需要传入的是包含指定提供者的列表结构,而非整个AccountSignatureProviders对象。直接将选中的提供者包装成列表传入即可:
# 构造签名者对象 signer = Signer( email='recipient@example.com', name='收件人姓名', recipient_id='1', tabs=Tabs(sign_here_tabs=[SignHere(document_id='1', page_number='1', x_position='100', y_position='100')]), # 传入选中的签名提供者 recipient_signature_providers=[selected_provider] ) # 组装信封定义并发送 envelope_definition = EnvelopeDefinition( email_subject='请签署文档', documents=[Document(document_base64=base64_content, name='待签文档.pdf', document_id='1')], recipients=Recipients(signers=[signer]), status='sent' )
关键注意事项
- 禁止直接将
list_signature_providers返回的完整对象传给recipient_signature_providers,必须提取单个/多个目标提供者组成列表。 - 若需提供多个可选签名方式,只需将多个选中的提供者加入
recipient_signature_providers列表即可。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

