【问题标题】:DocuSign API: Signing issues with sending multiple documents in the same envelopeDocuSign API:在同一个信封中发送多个文档的签名问题
【发布时间】:2020-12-19 21:25:31
【问题描述】:

使用 C#、DocuSign API SDK 4.5.2。

我要在同一个信封中发送 3 个签名文件。每个文档都将使用相同的服务器模板(它只是使用锚标记将签名元素放在文档上)。我可以寄出信封,然后我会从 DocuSign 收到电子邮件以查看/签署文件。

我遇到的问题是,当我去签名时,我必须在每个文档上签名 3 次——总共 9 次——然后我才被允许点击“完成”按钮。每个文件只有一个签名的地方,但我必须点击签名按钮 3 次才能被接受。如果我有 2 个收件人,那么每个收件人都是一样的。如果我将代码更改为仅发送 1 个文档,它可以正常工作,因此很明显在信封请求中没有正确生成某些内容。

即使只有 2 个角色和 2 个不同的姓名/电子邮件地址,我也尝试为每个收件人分配不同的 ID 号。

就在我调用 API 以实际发送文档之前,我捕获 JSON 用于调试目的:

{
  "compositeTemplates": [
    {
      "compositeTemplateId": "1",
      "document": {
        "documentBase64": "---Document 1 Bytes---",
        "documentId": "1",
        "fileExtension": "pdf",
        "name": "MultiDocument1"
      },
      "inlineTemplates": [
        {
          "recipients": {
            "signers": [
              {
                "email": "client@gmail.com",
                "name": "Client Name",
                "recipientId": "1",
                "roleName": "Signer1"
              },
              {
                "email": "advisor@gmail.com",
                "name": "Advisor Name",
                "recipientId": "2",
                "roleName": "Advisor"
              }
            ]
          },
          "sequence": "2"
        }
      ],
      "serverTemplates": [
        {
          "sequence": "1",
          "templateId": "99321CB1-A3E8-44A0-BDF4-D4F20069BC7B"
        }
      ]
    },
    {
      "compositeTemplateId": "2",
      "document": {
        "documentBase64": "---Document 2 Bytes---",
        "documentId": "2",
        "fileExtension": "pdf",
        "name": "MultiDocument2"
      },
      "inlineTemplates": [
        {
          "recipients": {
            "signers": [
              {
                "email": "client@gmail.com",
                "name": "Client Name",
                "recipientId": "1",
                "roleName": "Signer1"
              },
              {
                "email": "advisor@gmail.com",
                "name": "Advisor Name",
                "recipientId": "2",
                "roleName": "Advisor"
              }
            ]
          },
          "sequence": "2"
        }
      ],
      "serverTemplates": [
        {
          "sequence": "1",
          "templateId": "99321CB1-A3E8-44A0-BDF4-D4F20069BC7B"
        }
      ]
    },
    {
      "compositeTemplateId": "3",
      "document": {
        "documentBase64": "---Document 3 Bytes---",
        "documentId": "3",
        "fileExtension": "pdf",
        "name": "MultiDocument3"
      },
      "inlineTemplates": [
        {
          "recipients": {
            "signers": [
              {
                "email": "client@gmail.com",
                "name": "Client Name",
                "recipientId": "1",
                "roleName": "Signer1"
              },
              {
                "email": "advisor@gmail.com",
                "name": "Advisor Name",
                "recipientId": "2",
                "roleName": "Advisor"
              }
            ]
          },
          "sequence": "2"
        }
      ],
      "serverTemplates": [
        {
          "sequence": "1",
          "templateId": "99321CB1-A3E8-44A0-BDF4-D4F20069BC7B"
        }
      ]
    }
  ],
  "emailSubject": "Multiple Documents for Signature",
  "status": "Sent"
}

这是我正在使用的文档之一。其他两个类似——不同的文本,但使用相同的锚标记。

我还尝试替换另一个我在测试文档 1 时成功使用的文档——它完全不同,但仍然使用相同的锚标记。我得到了相同的结果——每个签名都要签名 3 次。

谁能看到我做错了什么?如果您需要更多信息,请告诉我。

谢谢, 兰迪

更新:按照 Inbar 和 Larry 的建议,我联系了 DocuSign 支持,并将“锚点人口范围”设置从“信封”更改为“文档”。不幸的是,这让事情变得更糟。我仍然需要多次单击签名元素才能签名,但只能签名第一个文档。其他文件没有附加任何签名元素。

更新 #2: 我想知道我使用模板的方式是否会令人困惑并导致这些问题。我可能应该更清楚地解释自己。我正在使用的服务器模板有一个“虚拟”Word 文档,其中只包含一组用于签名和日期的通用锚标记。我将它作为模板上传,并将签名和日期 UI 元素分配给锚标记。但是当我从我的应用程序发送请求时,我使用的是我在运行时选择/生成的不同文档。该文档替换了模板中的虚拟 Word 文档,但具有相同的锚标记,因此所有签名和日期元素都可以在真实文档中找到它们的位置。这在仅发送 1 个文档时效果很好,但我无法让事情超过一个。

更新 #3: 要求 -- 我们正在向我们的网站(ASP.NET、WinForms)添加数字签名功能。我们已经有一个页面,顾问可以在该页面上打印出物理签名文档或使用 DocuSign 启动数字签名过程。我们所有的文档都来自 MS Report Server,因为它们需要包含来自我们数据库的客户数据。我们目前不发送任何静态文件。在页面后面的代码中,我从 Report Server 获取 PDF 字节并将其(作为文档)添加到要发送到 DocuSign 的复合模板中。它还包含对我的 Word 文档帐户(见下文)的服务器模板的引用,该文档包含要覆盖在报表服务器文档上的锚标记和签名元素(在更新 #2 中提到)。发生的情况是 Report Server 文档替换了 Word 模板的文本(如表单背景),并且因为我使用与锚标记相同的文本,Word 模板上的签名元素在 Report Server 文档中找到它们的匹配项并移动到他们在文件上的位置。我最后包括 1 个或多个客户的姓名/电子邮件地址,通常还有 2 个其他必需的签名者(顾问和经理)。然后将其发送到 DocuSign (SDK API) 以启动签名过程。使用单个文档,这运行良好。我们正在准备何时需要向客户发送超过 1 个文档,并且我们希望在单个请求中执行此操作。如果您需要更多信息,请告诉我。

【问题讨论】:

  • 我们没有文档,但是每个文档有可能在 3 个地方都有锚字符串吗?我假设您希望每个文档只有一个标签,对吗?并且使用锚字符串它应该只放置一个选项卡,对吧?
  • 我编辑了原始帖子以添加其中一个文档的图片。原始文档为 Word 格式,转换为 PDF。我会检查 Word 或 PDF 文件中是否有“额外的”锚标记。
  • 我刚刚尝试为信封中的第一个文档使用完全不同的文档。它是从 MS Report Server 生成的 PDF,但具有相同的锚标记。我已经成功使用过这个 PDF 很多次,但仅限于单个文档信封。我遇到了同样的签名问题。
  • 请他们更改您帐户中锚标记的默认范围。
  • 我建议通过 DocuSign dot com 的上线联系开发人员支持。

标签: c# docusignapi docusigncompositetmplts


【解决方案1】:

DocuSign 客户服务让我联系了一位非常耐心且乐于助人的开发人员支持代表。我解释了我想要做的事情,他提出了一个解决方案,可以很容易地集成到我现有的代码库中。

要让它发挥作用,您需要 2 块拼图。上面提到了第一项:您必须将帐户中的 Anchor Population Scope 值设置为“文档”。这必须由 DocuSign 客户服务代表完成,因为用户无法访问该设置。

第二项是导致签名标签全部堆叠在第一个文档上的原因。在您的复合模板中,内部模板的序号必须为“1”,而服务器模板的序号必须为“2”。一旦这两个项目都到位,我可以将多个文档发送给单个信封中的多个签名者,每个文档都使用相同的服务器模板(用于定义 AutoPlace 标记和角色)。

这是对我有用的示例 JSON:

  {
  "compositeTemplates": [
    {
      "compositeTemplateId": "1",
      "inlineTemplates": [
        {
          "documents": [
            {
              "documentBase64": "<PDF Bytes>",
              "documentId": "1",
              "fileExtension": "PDF",
              "name": "MultiDocument1"
            }
          ],
          "recipients": {
            "signers": [
              {
                "email": "client@email.com",
                "name": "Client Name",
                "recipientId": "1",
                "roleName": "Signer1"
              },
              {
                "email": "advisor@email.com",
                "name": "Advisor Name",
                "recipientId": "2",
                "roleName": "Advisor"
              }
            ]
          },
          "sequence": "1"
        }
      ],
      "serverTemplates": [
        {
          "sequence": "2",
          "templateId": "1234xxxx-xxxx-xxxx-xxxx-xxxxxxxx5678"
        }
      ]
    },
    {
      "compositeTemplateId": "2",
      "inlineTemplates": [
        {
          "documents": [
            {
              "documentBase64": "<PDF Bytes>",
              "documentId": "2",
              "fileExtension": "PDF",
              "name": "MultiDocument2"
            }
          ],
          "recipients": {
            "signers": [
              {
                "email": "client@email.com",
                "name": "Client Name",
                "recipientId": "1",
                "roleName": "Signer1"
              },
              {
                "email": "advisor@email.com",
                "name": "Advisor Name",
                "recipientId": "2",
                "roleName": "Advisor"
              }
            ]
          },
          "sequence": "1"
        }
      ],
      "serverTemplates": [
        {
          "sequence": "2",
          "templateId": "1234xxxx-xxxx-xxxx-xxxx-xxxxxxxx5678"
        }
      ]
    },
    {
      "compositeTemplateId": "3",
      "inlineTemplates": [
        {
          "documents": [
            {
              "documentBase64": "<PDF Bytes>",
              "documentId": "3",
              "fileExtension": "PDF",
              "name": "MultiDocument3"
            }
          ],
          "recipients": {
            "signers": [
              {
                "email": "client@email.com",
                "name": "Client Name",
                "recipientId": "1",
                "roleName": "Signer1"
              },
              {
                "email": "advisor@email.com",
                "name": "Advisor Name",
                "recipientId": "2",
                "roleName": "Advisor"
              }
            ]
          },
          "sequence": "1"
        }
      ],
      "serverTemplates": [
        {
          "sequence": "2",
          "templateId": "1234xxxx-xxxx-xxxx-xxxx-xxxxxxxx5678"
        }
      ]
    }
  ],
  "emailSubject": "Multiple Documents for Signatures",
  "status": "Sent"
}

如果您有任何问题,请告诉我。感谢 Larry K 和 Inbar Gazit 的协助!

【讨论】:

  • 感谢您发布答案!
【解决方案2】:

我认为问题在于您的帐户已设置为锚标签定位适用于信封中的所有文档,而不仅仅是您应用模板的一个文档。

因此,您最终会得到三个签名字段,直接位于彼此之上。

修复建议:

  1. 仅应用最后一个模板。
  2. 或者您的帐户已更改,因此锚定位只会影响应用模板的文档。

【讨论】:

  • 我正在使用沙盒帐户进行测试。我看到了这个设置:自动复制具有相同数据标签的字段中的信息。当前设置为“在单个文档上”。你指的是这个吗?对于此初始测试,所有文档都可以使用相同的模板。继续前进时,我需要能够将特定模板分配给特定文档。 (有些文档需要填写字段数据并返回给 Connect。)谢谢!我再看看这个。
  • 不,我说的是您帐户的后端设置。如需更改,请联系客服。
  • 会的。谢谢!
  • 我更改了设置,但这让事情变得更糟。请查看原帖中的更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多