繁体   English   中英

Docusign:使用REST API和预填充标签通过模板创建包络

[英]Docusign: creating envelopes through templates with the REST API and prefilling tags

我正在整合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"
     }
   ]
 }

它填充了! 看起来如果我用Signer以外的任何东西启动角色名称它不起作用。 奇怪的!

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

您的问题是您将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 )的p160上的“发布收件人视图”部分。

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

  • 您在请求中不需要accountId
  • 您不需要在选项卡的请求中包含documentIdpageNumber
  • 如果您希望收件人在您的站点中签署嵌入式/专属级别 ,则需要在请求中包含clientUserId

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

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标记视图中的全名标记: 使用全名标签

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

如果我提交此请求:

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编辑模板时)如下所示:

数据字段属性

然后结果是,当签名者查看其包络时,具有分配给收件人角色签名者1的Label = 地址的 字段将预先填充值“123 Main Street”。 如果这不适合你,我建议你:

  • 验证API请求中roleName的值是否与我之前屏幕截图中突出显示的收件人值完全匹配(在我的示例中,“Signer1”)。
  • 验证API请求中tabLabel的值是否与我之前屏幕截图中突出显示的Label值完全匹配(在我的示例中为“address”)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM