DocuSign SOAP API多文档多收件人签名流程配置异常问题
DocuSign SOAP API 收件人文档分配问题排查与修正
我来帮你搞定这个问题~你遇到的核心问题是DocuSign SOAP API默认会让所有收件人可见并签署所有文档,再加上可能没正确配置路由顺序,才导致两位收件人都被要求处理两份文档。下面是具体的排查点和修正后的结构示例:
关键问题点
- 未给每个收件人显式指定可访问/签署的文档范围:DocuSign默认收件人能看到所有上传的文档,必须通过
DocumentVisibilityList元素限制每个收件人的文档权限。 - 路由顺序(
RoutingOrder)未正确配置:需要设置收件人1的路由顺序为1,收件人2为2,确保收件人1完成签署后,才会将请求发送给收件人2。
修正后的SOAP结构片段
下面是符合你需求的核心部分示例,重点关注Recipients下的配置:
<ns0:EnvelopeDefinition> <!-- 文档部分:给每个文档分配唯一的DocumentId --> <ns0:Documents> <ns0:Document> <ns0:DocumentId>1</ns0:DocumentId> <ns0:Name>文档1.pdf</ns0:Name> <ns0:DocumentBase64>[Base64编码内容]</ns0:DocumentBase64> </ns0:Document> <ns0:Document> <ns0:DocumentId>2</ns0:DocumentId> <ns0:Name>文档2.pdf</ns0:Name> <ns0:DocumentBase64>[Base64编码内容]</ns0:DocumentBase64> </ns0:Document> </ns0:Documents> <!-- 收件人部分:配置路由顺序和文档可见性 --> <ns0:Recipients> <ns0:Signers> <!-- 第1位收件人:仅处理文档1,路由顺序1 --> <ns0:Signer> <ns0:RecipientId>1</ns0:RecipientId> <ns0:RoutingOrder>1</ns0:RoutingOrder> <ns0:Email>recipient1@example.com</ns0:Email> <ns0:Name>收件人1</ns0:Name> <!-- 指定仅可见文档1 --> <ns0:DocumentVisibilityList> <ns0:DocumentVisibility> <ns0:DocumentId>1</ns0:DocumentId> <ns0:Visible>true</ns0:Visible> </ns0:DocumentVisibility> <!-- 显式设置文档2不可见(可选,但更严谨) --> <ns0:DocumentVisibility> <ns0:DocumentId>2</ns0:DocumentId> <ns0:Visible>false</ns0:Visible> </ns0:DocumentVisibility> </ns0:DocumentVisibilityList> <!-- 文档1的签署标签 --> <ns0:Tabs> <ns0:SignHereTabs> <ns0:SignHere> <ns0:DocumentId>1</ns0:DocumentId> <ns0:PageNumber>1</ns0:PageNumber> <ns0:XPosition>100</ns0:XPosition> <ns0:YPosition>100</ns0:YPosition> </ns0:SignHere> </ns0:SignHereTabs> </ns0:Tabs> </ns0:Signer> <!-- 第2位收件人:仅处理文档2,路由顺序2 --> <ns0:Signer> <ns0:RecipientId>2</ns0:RecipientId> <ns0:RoutingOrder>2</ns0:RoutingOrder> <ns0:Email>recipient2@example.com</ns0:Email> <ns0:Name>收件人2</ns0:Name> <!-- 指定仅可见文档2 --> <ns0:DocumentVisibilityList> <ns0:DocumentVisibility> <ns0:DocumentId>1</ns0:DocumentId> <ns0:Visible>false</ns0:Visible> </ns0:DocumentVisibility> <ns0:DocumentVisibility> <ns0:DocumentId>2</ns0:DocumentId> <ns0:Visible>true</ns0:Visible> </ns0:DocumentVisibility> </ns0:DocumentVisibilityList> <!-- 文档2的签署标签 --> <ns0:Tabs> <ns0:SignHereTabs> <ns0:SignHere> <ns0:DocumentId>2</ns0:DocumentId> <ns0:PageNumber>1</ns0:PageNumber> <ns0:XPosition>100</ns0:XPosition> <ns0:YPosition>100</ns0:YPosition> </ns0:SignHere> </ns0:SignHereTabs> </ns0:Tabs> </ns0:Signer> </ns0:Signers> </ns0:Recipients> <ns0:Status>sent</ns0:Status> </ns0:EnvelopeDefinition>
额外注意事项
- 确保每个
SignHere标签的DocumentId和对应收件人可见的文档ID一致,避免出现“无签署位置”的错误。 - 如果你的原SOAP请求中没有
DocumentVisibilityList,DocuSign会默认所有文档对所有收件人可见,这就是导致两位收件人都看到两份文档的直接原因。 - 路由顺序(
RoutingOrder)必须设置为不同的值(1和2),这样才能保证串行流程:收件人1完成后,系统才会通知收件人2。
内容的提问来源于stack exchange,提问作者user9554908




