DocuSign API签名请求 - “缺少信封定义”

时间:2013-11-26 19:34:08

标签: docusignapi

我正在尝试通过Javascript使用DocuSign API请求签名。下面是我发送的多部分请求。问题是我收到错误回复:“信封不完整。完整的信封需要文档,收件人,标签和主题行。信封定义丢失。”很明显,我在我的请求中包含了“envelopeDefinition”xml,我很确定所有必需的元素都在那里。任何指导都将不胜感激。

--BOUNDARY--
Content-Type: application/xml
Content-Disposition: form-data

<envelopeDefinition xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docusign.com/restapi"><emailSubject>Test Subject</emailSubject><documents><name>document.pdf</name><documentId>1</documentId></documents><recipients><signers><tabs><signHereTabs><pageNumber>1</pageNumber><documentId>1</documentId><xPosition>100</xPosition><yPosition>100</yPosition></signHereTabs></tabs><routingOrder>1</routingOrder><recipientId>1</recipientId><name>My Name</name><email>email@email.com</email></signers></recipients><status>sent</status></envelopeDefinition>

--BOUNDARY--
Content-Type: application/pdf
Content-Disposition: file; filename="document.pdf"; documentId=1 

[document bytes go here]

--BOUNDARY--

另外,我应该提到我正在使用Msxml2.XMLHTTP。

1 个答案:

答案 0 :(得分:0)

如果没有看到请求标题,我不能绝对肯定你的问题是什么。但是,这里有一些建议:

首先,您的XML请求体似乎缺少几个元素。

  • 添加&lt; document&gt; 元素作为&lt; documents&gt; 的子元素(即封装名称 documentId 文档的元素)

  • 添加&lt; signHereTab&gt; 元素作为&lt; signHereTabs&gt; 的子元素(即封装 pageNumber ,选项卡的 documentId xPosition yPosition 元素)

一旦您对XML进行了这些添加,您的请求应该更像这样:

POST https://demo.docusign.net/restapi/v2/accounts/201105/envelopes HTTP/1.1

X-DocuSign-Authentication: {"Username":"USERNAME","Password":"PASSWORD","IntegratorKey":"INTEGRATOR_KEY"}
Content-Type: multipart/form-data; boundary=BOUNDARY
Accept: application/xml
Host: demo.docusign.net
Content-Length: 23414
Expect: 100-continue
Connection: Keep-Alive

--BOUNDARY
Content-Type: application/xml
Content-Disposition: form-data

<envelopeDefinition xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docusign.com/restapi">
    <emailSubject>Test Subject</emailSubject>
    <documents>
      <document>
        <name>document.pdf</name>
        <documentId>1</documentId>
      </document>
    </documents>
    <recipients>
        <signers>
            <tabs>
                <signHereTabs>
                  <signHereTab>
                    <pageNumber>1</pageNumber>
                    <documentId>1</documentId>
                    <xPosition>100</xPosition>
                    <yPosition>100</yPosition>
                  </signHereTab>
                </signHereTabs>
            </tabs>
            <routingOrder>1</routingOrder>
            <recipientId>1</recipientId>
            <name>My Name</name>
            <email>email@email.com</email>
        </signers>
    </recipients>
    <status>sent</status>
</envelopeDefinition>

--BOUNDARY
Content-Type: application/pdf
Content-Disposition: file; filename="document.pdf"; documentid="1"

[document bytes removed]

--BOUNDARY--

其次,您似乎在请求中使用了术语 BOUNDARY 作为您的部分分隔符 - 但您在所有三个位置都错误地使用了它: - -BOUNDARY - 即可。如上面我所包含的示例请求中所示,分隔符的前两个实例应该只在单词BOUNDARY之前有 - (连字符),就像这样:

--BOUNDARY

只有分隔符的最后一次出现(在请求的最后)应该有两个前导和尾随连字符:

--BOUNDARY--