3

我们正在使用docusign人们签署在我们网站上注册的同意书,我被指向嵌入式签名 API。

据我了解,我必须创建一个我已经完成的信封。

我为此使用 .Net 示例。

通过 API 登录正常,但尝试从 API 取回 URL 时出现以下错误:

ENVELOPE_IS_INCOMPLETE The Envelope is not Complete. A Complete Envelope Requires Documents, Recipients, Tabs, and a Subject Line.

这是我的信封定义 xml:

 string requestBody = "<envelopeDefinition xmlns=\"http://www.docusign.com/restapi\">" +
            "<accountId>" + accountId + "</accountId>" +
            "<status>sent</status>" +
            "<emailSubject>API Call for Embedded Sending</emailSubject>" +
            "<emailBlurb>This comes from C#</emailBlurb>" +
            "<templateId>[TEMPLATE ID FROM DOCUSIGN]</templateId>" +
            "<templateRoles>" +
            "<email>testregister@notrealurl.com</email>" +  // NOTE: Use different email address if username provided in non-email format!
            "<name>testregister@notrealurl.com</name>" + // username can be in email format or an actual ID string
            "<roleName>Signer</roleName>" +
            "</templateRoles>" +
            "</envelopeDefinition>";

我在这里看到另一个关于需要 clientUserId 的帖子:

http://community.docusign.com/t5/DocuSign-API-Integration-NET/REST-API-net-Error-message-when-creating-the-envelope-from-a/mp/18121#M1791

但我不确定如何在信封定义中实现。

请帮忙!

4

1 回答 1

5

要使用嵌入功能,您确实需要为将使用 URL 令牌访问信封的每个收件人设置clientUserId属性。诀窍是,当您创建信封时,您需要为收件人设置 clientUserId 属性,然后当您请求 URL 令牌时,您需要将其连同他们的电子邮件、姓名和收件人 ID 一起包含在请求中。

DocuSign 的开发者中心有一整页专门用于嵌入,它讨论了 clientUserId 属性的使用。请看这里:

http://www.docusign.com/developer-center/explore/features/embedding-docusign

他们的 API 演练也是一个很好的资源。他们有 6 种语言的代码,向您展示如何完成常见的 DocuSign 任务。查看嵌入功能的底部三个:

http://iodocs.docusign.com/APIWalkthroughs

[更新]好的,我能够重现您的问题并更新了您正在处理的要点。如果您按原样复制并输入您的凭据,它现在应该可以工作,但基本上请求正文中缺少两个部分。这是它的样子,注意额外的 templateRole(单数)标签和 clientUserId 标签:

string requestBody = "<envelopeDefinition xmlns=\"http://www.docusign.com/restapi\">" + 
                "<accountId>" + accountId + "</accountId>" + 
                    "<status>sent</status>" + 
                    "<emailSubject>API Call for Embedded Sending</emailSubject>" + 
                    "<emailBlurb>This comes from C#</emailBlurb>" + 
                    "<templateId>" + templateId + "</templateId>" + 
                    "<templateRoles>" + 
                    "<templateRole>" + 
                    "<email>" + username + "</email>" + // NOTE: Use different email address if username provided in non-email format!
                    "<name>Name</name>" +               // username can be in email format or an actual ID string
                    "<roleName>" + roleName + "</roleName>" +
                    "<clientUserId>1</clientUserId>" +
                    "</templateRole>" + 
                    "</templateRoles>" + 
                    "</envelopeDefinition>";
于 2013-07-09T21:55:28.673 回答