Docusign嵌入式签名

时间:2013-07-09 21:21:13

标签: docusignapi envelope

我们正在使用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.

这是我的envelopeDefinition 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/m-p/18121#M1791

但我不确定如何在envelopeDefinition中实现。

请帮忙!

1 个答案:

答案 0 :(得分:4)

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

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

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

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

http://iodocs.docusign.com/APIWalkthroughs

[更新] 好的,我能够重现您的问题并更新了您正在处理的the gist。如果您按原样复制并输入凭据,它现在应该可以工作,但基本上请求正文中缺少两个部分。这是它应该是什么样子,请注意额外的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>";