DocuSign API:在同一信封中发送多个文档的签名问题

DocuSign API: Signing issues with sending multiple documents in the same envelope(DocuSign API:在同一信封中发送多个文档的签名问题)
本文介绍了DocuSign API:在同一信封中发送多个文档的签名问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用C#DocuSign API SDK 4.5.2

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

我遇到的问题是,当我去签名时,我必须对每个文档签名3次--总共9次--然后我才能单击Finish按钮。每个文档上只有一个地方可以签名,但我必须单击三次签名按钮才能接受它。如果我有两个收件人,他们每个人的情况都是一样的。如果我将代码更改为仅发送1个文档,则它工作正常,因此很明显信封请求中没有正确生成某些内容。

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

就在我调用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"
}

这是我正在使用的一个文档。另外两个是相似的--不同的文本,但使用相同的锚标记。

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

有人看到我做错了什么吗?如果您需要更多信息,请让我知道。

谢谢, 兰迪

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

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

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

推荐答案

DocuSign客服帮我联系了一位非常耐心和乐于助人的开发人员支持代表。我解释了我试图做的事情,他提出了一个很容易集成到我现有代码库中的解决方案。

要让它工作,您需要2块拼图。上面提到了第一项:您必须将帐户中的Anchor Population Scope值设置为&Quot;Document&Quot;。此操作必须由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"
}

如果您有任何问题,请告诉我。感谢拉里·K和英巴尔·加齐特的助攻!

这篇关于DocuSign API:在同一信封中发送多个文档的签名问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)