DocuSign Rest API 替换单个模板文档

DocuSign Rest API to replace single template document

我想知道如何用复合模板替换文档。该模板包含三个文档并定义了签名者信息。尽管我试图只替换第一个文档,字段(标签)定义如下,但效果不佳。如果 inlineTemplates 的序列号是 1 并且其 serverTemplates 的数量是 2,则第一个文档将按预期替换,但其余两个文档将消失。如果每个序号变为相反,则模板中定义的三个文档保留在信封中,新文档不会替换为第一个文档。

我在 stackoverview 和其他网站上查找信息,我还没有找到任何解决方案。

    {
    "compositeTemplates" : [
    {
                "serverTemplates": [
                    {
                        "sequence": "2",
                        "templateId": "cba8d3ae-3f0e-4329-9c7a-9da0e612f153"
                    }
                ],

                "inlineTemplates": [
                    {
                        "sequence": "1",
                        "documents": [  
                            {
                                "documentId": "1",
                                "name": "1Update.pdf",
                                "fileExtension" : "pdf",
                                "transformPdfFields" : "false",
                                "documentBase64":"<base64 content>

                            }
                            ],
                    }
                    ],


        }
        ],

        "status": "created"

}

您需要使用复合模板的文档节点,默认为序列“0”,因此它使用文档 pdf 字节与服务器模板或内联文档 pdf 字节。

"compositeTemplates": [{
"serverTemplates": [{
"inlineTemplates": [{
"document": ....

以下是您需要了解的有关序列号和物理顺序的部分内容 - 在复合模板中,物理顺序优先于每个复合模板节点的 "index/sequence"。

"sequence" 索引是内部引用胶水,但实际上并不是内存模型中的行顺序。

序列越低:服务器、内联和文档之间的文档节点(不是文档)为 0 是“PDF/DOC 字节的确定方式,序列号越高,赢得 aka doc vis 的特征在一个模板中,对比另一个模板或通知天数。

此外,请记住状态 "created" 表示您对所需的角色、标签等进行了所有清理,而 "sent" 表示 DocuSign 将删除任何不完整的标签、交换文档等。所以它在您发出 "sent" 之前,通常不会向您显示最终结果。

请记住,您可以添加 "Blocking (advanced concept)" 收件人,这样您就可以 "view" 在将结果 post "sent" 发送给客户端之前。只需我们一个 "undeliverable" 电子邮件地址,它会进行反弹,然后发出发件人视图以查看结果,然后 "lock/correct/unlock" 信封,如果您需要在真实环境中进行验证,请删除 "blocking" 用户生产场景。

如果您的服务器模板有三个文档,并且您想要在创建信封时用另一个文档替换第一个文档,那么 DocuSign 将无法执行,因为 DocuSign 会期望您计划替换所有文档并且它会抛出错误并要求您在内联模板中也发送其他文档。

所以这种情况的解决方案是,您需要制作多个服务器模板,至少在您的情况下有两个服务器模板,一个服务器模板应该包含您要替换的文档,另一个服务器模板应该是静态的并且它会按原样在信封中。完成后,您的复合模板将是两个复合模板的数组。 First Composite 模板将具有 First Server Template 并使用 InlineTemplate 或按文档节点可以替换服务器模板文档。第二个复合模板将仅包含来自第二个服务器模板的文档,您的代码可能如下所示的解决方案:

在下面的代码中,服务器模板 d7697d56-e7ff-4a86-9b21-e98b81bd66c2 中的文档正在被内联模板替换,或者您也可以将其传递到文档节点中,f30d22b7-17da-4b61-af00-5f418f7916ec 是没有文件需要替换的服务器模板,它将原样来自服务器模板。

{
   "compositeTemplates": [
      {
         "compositeTemplateId":"1",
         "inlineTemplates": [
            {  
               "documents":[
                        {
                          "documentBase64": "<PDFBytes>",
                          "documentId": "1",
                          "fileExtension": "pdf",
                          "name": "Runtime Agreement"
                 }
               ],
               "recipients": {
                  "signers": [
                     {
                        "email": "email@gmail.com",
                        "name": "John Doe",
                        "recipientId": "1",
                        "roleName": "Signer1",
                        "routingOrder": "1"
                     }
                  ]
               },
               "sequence": "1"
            }
         ],
         "serverTemplates": [
            {
               "sequence": "2",
               "templateId": "d7697d56-e7ff-4a86-9b21-e98b81bd66c2"
            }
         ]
      },
      {
         "compositeTemplateId":"2",
         "inlineTemplates": [
            {  
               "recipients": {
                  "signers": [
                     {
                        "email": "email@gmail.com",
                        "name": "John Doe",
                        "recipientId": "1",
                        "roleName": "Signer1",
                        "routingOrder": "1"
                     }
                  ]
               },
               "sequence": "2"
            }
         ],
         "serverTemplates": [
            {
               "sequence": "1",
               "templateId": "f30d22b7-17da-4b61-af00-5f418f7916ec"
            }
         ]
      }
   ],
   "status": "sent"
}