【问题标题】:Docusign: creating envelopes through templates with the REST API and prefilling tagsDocusign:使用 REST API 和预填充标签通过模板创建信封
【发布时间】:2013-10-22 02:21:45
【问题描述】:

我正在集成 Docusign,以便收件人可以看到他们嵌入在我的网站上的信封。我首先使用 api 创建信封,并尝试使用动态数据预填充数据字段。

据我所知,我用来创建信封的 json 没有任何问题。 StackOverflow 上的其他解决方案都没有帮助解决这个问题。我的 json 看起来像这样(我发送给 https://demo.docusign.net/restapi/v2/accounts/360734/envelopes):

{
   "status": "sent",
   "emailBlurb": "Please sign the document.",
   "emailSubject": "Please sign your agreement",
   "templateId": "TEMPLATE_ID",
   "templateRoles": [
     {
       "clientUserId": "EMAIL",
       "name": "NAME",
       "email": "EMAIL",
       "roleName": "Signer1",
       "tabs": {
         "textTabs": [
           {
             "tabLabel": "address",
             "value": "ADDRESS "
           },
           {
             "tabLabel": "multi_address",
             "value": "ADDRESSES"
           }
         ]
       }
     },
     {
       "name": "ANOTHER NAME",
       "email": "ANOTHER EMAIL",
       "roleName": "Random1"
     }
   ]
 }

我得到以下回复:

{
   "envelopeId": "ENVELOPE_ID",
   "uri": "/envelopes/ENVELOPE_ID",
   "statusDateTime": "2013-10-25T01:20:55.6750772Z",
   "status": "sent"
}

然后,我通过发帖到https://demo.docusign.net/restapi/v2/accounts/360734/envelopes/ENVELOPE_ID/views/recipient 获得向客户展示的链接

{
  "authenticationMethod": "email",
  "clientUserId": "EMAIL",
  "email": "EMAIL",
  "returnUrl": "MYURL",
  "userName": "NAME"
}

我得到了这样的回应:

 {
   "url": "https://demo.docusign.net/Member/StartInSession.aspx?t=REDACTED"
 }

这遵循此处看到的示例:https://github.com/Ergin008/DocuSign-REST-API-Webinar-April2013/blob/master/example2.json

以这种方式创建信封后,标签似乎没有预填充。当我查看嵌入在我的网站上的信封时,什么都没有填满。我确定 tabLabels 是正确的。否则一切似乎都正常。有什么我缺少的设置吗?

更新 看起来它可能是一个错误!我改变的只是角色名称,它可以工作!

 {
   "status": "sent",
   "emailBlurb": "Please sign the document.",
   "emailSubject": "Please sign your agreement",
   "templateId": "TEMPLATE_ID",
   "templateRoles": [
     {
       "clientUserId": "EMAIL",
       "name": "NAME",
       "email": "EMAIL",
       "roleName": "Signer1",
       "tabs": {
         "textTabs": [
           {
             "tabLabel": "address",
             "value": "ADDRESS "
           },
           {
             "tabLabel": "multi_address",
             "value": "ADDRESSES"
           }
         ]
       }
     },
     {
       "name": "ANOTHER NAME",
       "email": "ANOTHER EMAIL",
       "roleName": "Signer2"
     }
   ]
 }

而且它填充了!似乎如果我以除签名者以外的任何名称开始角色名称,它就不起作用。奇怪!

是的,在这种情况下,我将 Docusign 上的角色名称从 Random1 更改为 Signer2。例如,Signer3 也有效。

【问题讨论】:

    标签: docusignapi


    【解决方案1】:

    您的问题表明您将该 JSON 提交到“获取收件人视图”资源:

    https://demo.docusign.net/restapi/v2/accounts/ACCOUNT_ID/envelopes/ENVELOPE_ID/views/recipient)
    

    ...但是 JSON 看起来像您在“创建信封”请求中使用的,而不是“获取收件人视图”请求。因此,让我首先澄清促进嵌入式/强制签名的过程(即,在您的站点内展示收件人的信封)。这样做是一个两步过程:

    第 1 步:创建信封(如果需要,请求包括为每个收件人预填充字段的数据)。

    POST https://{server}/restapi/{apiVersion}/accounts/{accountId}/envelopes
    

    有关请求和响应的详细信息,请参阅从 REST API 指南 (http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf) 第 27 页开始的“从模板创建信封”部分。

    第 2 步:检索可用于启动收件人信封(签名会话)的 URL。

    POST https://{server}/restapi/{apiVersion}/accounts/{accountId}/envelopes/{envelopeId}/views/recipient
    
    {
    "authenticationMethod":"Email",
    "clientUserId":"CLIENT_USERID_SPECIFIED_IN_REQUEST",
    "email":"RECIPIENT_EMAIL",
    "returnUrl":"URL_TO_REDIRECT_TO_WHEN_SIGNING_COMPLETE",
    "userName":"RECIPIENT_NAME"
    }
    

    响应将包含可用于启动收件人信封的 URL:

    {
    "url":"URL_THAT_WILL_LAUNCH_ENVELOPE"
    }
    

    有关请求和响应的更多详细信息,请参阅从 REST API 指南 (http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf) 第 160 页开始的“发布收件人视图”部分。

    现在,假设您正确执行了所有这些操作(第 1 步和第 2 步)——让我们回到您报告的问题:难以为收件人预先填充字段。您在问题中包含的一些关于“从模板创建信封”JSON 的内容:

    • 请求中不需要 accountId。
    • 您无需在标签请求中包含 documentId 和 pageNumber。
    • 如果您希望收件人在您的网站中嵌入/强制签名,您需要在请求中为收件人添加 clientUserId。

    因此,这是一个“从模板创建/发送信封”示例请求(上面的第 1 步),它使用值“VALUE_A”预填充名为“FIELD_1”的选项卡出现在的任何位置信封:

    POST https://{{env}}.docusign.net/restapi/{{version}}/accounts/{{acctId}}/envelopes
    {
        "status"        : "sent",
        "emailBlurb"    : "please sign",
        "emailSubject"  : "Please sign your document",
        "templateId"    : "TEMPLATE_ID",
        "templateRoles" : [{
          "name"         : "John Doe",
          "email"        : "JohnsEmail@outlook.com",
          "roleName"     : "Signer1Role",
          "clientUserId" : "123",
          "tabs"         :
             {"textTabs":[{
                "tabLabel":"\\*FIELD_1",
                "value":"VALUE_A"}
             ]}
       }]
    }
    

    然后,您将获取响应中返回的信封 ID 并调用“获取收件人视图”资源(上面的第 2 步)以获取启动签名会话的 URL:

    POST https://{{env}}.docusign.net/restapi/{{version}}/accounts/{{acctId}}/envelopes/ENVELOPE_ID/views/recipient
    {
         "authenticationMethod": "Email",
         "clientUserId": "123",
         "userName": "John Doe",
         "email": "JohnsEmail@outlook.com",
         "returnUrl": "http://www.google.com"
    }
    

    最后,最后一条评论(但很重要):如果您只是想在文档中注入收件人的“全名”——创建时使用“全名”标签模板和 DocuSign 将自动在其出现的任何位置注入收件人的姓名来代替该标签(而不是您使用文本选项卡并必须通过 API 请求填充它)。这是 DocuSign UI 标记器视图中的 Full Name 标记:

    另一个创建信封示例(带有数据字段属性的屏幕截图):

    如果我提交此请求:

    POST https://{{env}}.docusign.net/restapi/{{version}}/accounts/{{acctId}}/envelopes
    {
      "emailSubject": "Please sign this",
      "emailBlurb": "Please sign...thanks!",
      "templateId": "TEMPLATE_ID",
      "envelopeIdStamping": "false",
      "templateRoles": [
       {
          "roleName": "Signer1",
          "name": "John Doe",
          "email": "JohnsEmail@outlook.com",
          "recipientId": "1",
          "tabs":{
                "textTabs":[
                   {
                      "tabLabel":"\\*address",
                      "value":"123 Main Street"
                   },
                ],
             }
        }
      ],
      "status": "sent"
    }
    

    数据字段属性(通过 DocuSign UI 编辑模板时)如下所示:

    那么结果是分配给收件人角色 Signer1 的标签 = address 的字段将预填充值“123 Main Street”,当签名者查看他们的信封。如果这对您不起作用,我建议您:

    • 验证 API 请求中 roleName 的值完全与我在前面的屏幕截图中突出显示的收件人值(在我的示例中为“Signer1”)匹配。
    • 验证 API 请求中 tabLabel 的值完全与我在前面的屏幕截图中突出显示的标签值(在我的示例中为“地址”)匹配。

    注意:值区分大小写,因此请确保您的请求中的值是 >精确与数据字段标签属性中的值匹配(包括大写/小写)。

    【讨论】:

    • 感谢您的帮助!你是对的,我发布了错误的网址。我尽可能改用全名,非常有帮助。这是为用户填充的,嵌入在我的网站上。我仍然有要预填充的地址,我创建了一个数据字段。即使标签是“地址”,它仍然不会预先填充,并且我正在发送像 "tabs": { "textTabs": [ { "tabLabel": "\\*address", "value": "123 Fake Street" } ] } 这样的 json 你还能想到什么?
    • 我已经编辑了我之前的答案以添加第二个示例请求,这次包括模板中相应数据字段选项卡属性的屏幕截图。值区分大小写 - 因此请确保请求中的值与数据字段标记属性中的值完全匹配(包括大写/小写)。例如,如果您的请求有“tabLabel”=“address”(小写“a”)并且模板中数据字段的“Label”值设置为“Address”(大写“A”) ,则该字段将不会被请求填充。
    • 是否需要recipientId? (我试过添加它,但没有任何区别)
    • 非常感谢您的帮助,我已经密切注意您提供的说明,但数据字段似乎没有为我填充。是否可以与 DocuSign 的某个人合作查看我的具体案例?
    • Dan,您能否编辑您的答案,使其包含最新、正确的信息?很难说出您最新的完整 JSON 是什么,您正在使用哪个 URL,等等。请列出您的 JSON,并让我们知道您在模板中设置了哪些字段,包括它们的标签值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多