DocuSign API with ColdFusion

Viewed 1623

UPDATED WITH WORKING SOLUTION

I'm trying to integrate the DocuSign API using ColdFusion and keep running into an issue. I am able to authenticate successfully and retrieve the base URL. However, when trying to create the envelope with a single recipient and document, I get an error stating that the "boundary terminator" is not found in the request (when it clearly is).

I know this questions is similar to another post here but that was from a while ago and was never completely answered.

I first read in the PDF document:

<cffile action="READBINARY" file="Agreement.pdf" variable="docData">
<cfset docData = BinaryEncode(docData,"Base64")>

I then create the envelope definition in XML using the element to include the encoded binary PDF data:

<cfset envelope = "<envelopeDefinition xmlns=""http://www.docusign.com/restapi"">
                <status>Sent</status>
                <emailSubject>eSignature request</emailSubject>
                <emailBlurb>Please sign the document</emailBlurb>
                <recipients>
                    <signers>
                        <signer>
                            <recipientId>1</recipientId>
                            <name>eCS Buyer</name>
                            <email>XXX@XXXX.com</email>
                            <tabs>
                                <signHereTabs>
                                    <signHere>
                                        <documentId>1</documentId>
                                        <pageNumber>3</pageNumber>
                                        <xPosition>10</xPosition>
                                        <yPosition>100</yPosition>
                                    </signHere>
                                </signHereTabs>
                            </tabs>
                        </signer>
                    </signers>
                </recipients>
                <documents>
                    <document>
                        <name>Agreement.pdf</name>
                        <documentId>1</documentId>
                        <fileExtension>pdf</fileExtension>
                        <documentBase64>#docData#</documentBase64>
                    </document>
                </documents>
               </envelopeDefinition>">

Lastly, I POST the information:

<cfhttp url="#baseURL#/envelopes" method="POST" resolveurl="Yes" throwonerror="No">
<cfhttpparam name="X-DocuSign-Authentication" type="HEADER" value="<DocuSignCredentials><Username>#userName#</Username><Password>#password#</Password><IntegratorKey>#integratorKey#</IntegratorKey></DocuSignCredentials>">
<cfhttpparam name="Content-Type" type="HEADER" value="application/xml">
<cfhttpparam name="Accept" type="HEADER" value="application/xml">
<cfhttpparam name="Content-Length" type="HEADER" value="#Len(envelope)#">
<cfhttpparam name="request_body" type="BODY" value="#envelope#">
</cfhttp>

I tried changing the TYPE attribute for the request body to XML and FORMFIELD but is still doesn't work. I even tried changing the envelope to JSON format to no avail.

The error that is generated is:

<errorCode>INVALID_REQUEST_BODY</errorCode><message>The request body is missing or improperly formatted. The XML request does not match the expected format. </message></errorDetails> 

I have been struggling with this for weeks. Any guidance would be GREATLY appreciated.

2 Answers
Related