我正在集成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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我得到以下回应:
{
"envelopeId": "ENVELOPE_ID",
"uri": "/envelopes/ENVELOPE_ID",
"statusDateTime": "2013-10-25T01:20:55.6750772Z",
"status": "sent"
}
Run Code Online (Sandbox Code Playgroud)
然后,我通过发布到https://demo.docusign.net/restapi/v2/accounts/360734/envelopes/ENVELOPE_ID/views/recipient来获取显示客户端的链接
{
"authenticationMethod": "email",
"clientUserId": "EMAIL",
"email": "EMAIL",
"returnUrl": "MYURL",
"userName": "NAME"
}
Run Code Online (Sandbox Code Playgroud)
我得到这个回应:
{
"url": "https://demo.docusign.net/Member/StartInSession.aspx?t=REDACTED"
}
Run Code Online (Sandbox Code Playgroud)
这遵循此处看到的示例: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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
而且它人口众多!看来,如果我使用Signer以外的任何其他字符来启动角色名称,那将不起作用。奇怪的!
是的,在这种情况下,我将Docusign上的角色名称从Random1更改为Signer2。例如,Signer3也起作用。
您的问题是您将JSON提交到“获取收件人视图”资源:
https://demo.docusign.net/restapi/v2/accounts/ACCOUNT_ID/envelopes/ENVELOPE_ID/views/recipient)
Run Code Online (Sandbox Code Playgroud)
...但是该JSON类似于您在“创建信封”请求中使用的JSON,而不是在“获取收件人视图”请求中使用的JSON。因此,让我首先说明促进嵌入式/强制签名的过程(即在您的站点内显示收件人的信封)。这样做分为两个步骤:
步骤1:创建信封(如果需要,请求中包含用于为每个收件人预填充字段的数据)。
POST https://{server}/restapi/{apiVersion}/accounts/{accountId}/envelopes
Run Code Online (Sandbox Code Playgroud)
有关请求和响应的详细信息,请参阅从REST API指南的p27(http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf)的p27开始的“从模板创建信封”部分。
步骤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"
}
Run Code Online (Sandbox Code Playgroud)
响应将包含可用于启动收件人信封的URL:
{
"url":"URL_THAT_WILL_LAUNCH_ENVELOPE"
}
Run Code Online (Sandbox Code Playgroud)
有关请求和响应的更多详细信息,请参阅REST API指南(http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf)第160页上的“邮政收件人视图”部分。
现在,假设您正确执行了所有步骤(步骤1和步骤2),让我们回到您要报告的问题:难以为收件人预填充字段。您在问题中包含有关“从模板创建信封” JSON的一些评论:
因此,这是一个“从模板创建/发送信封”示例请求(上面的步骤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"}
]}
}]
}
Run Code Online (Sandbox Code Playgroud)
然后,您将获取响应中返回的信封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"
}
Run Code Online (Sandbox Code Playgroud)
最后,最后一条评论(但重要的一条):如果您只是想在文档中注入收件人的“全名”,请在创建模板时使用“ 全名 ”选项卡,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"
}
Run Code Online (Sandbox Code Playgroud)
数据字段属性(通过DocuSign UI编辑模板时)如下所示:

然后,结果是当签名者查看其信封时,分配给收件人角色签名者1的带有Label = 地址的字段将被预先填充值“ 123 Main Street”。如果这对您不起作用,建议您:
注意:值区分大小写,因此请确保请求中的值与“数据字段标记属性”中的值完全匹配(包括大写/小写)。
| 归档时间: |
|
| 查看次数: |
4406 次 |
| 最近记录: |