I am trying to integrate with the DocuSign Connect service. I've setup a WCF service to handle this, but so far have had no luck receiving the DocuSignEnvelopeInformation object properly.
I believe it is related to the issue that Mark Bailey posted about back in December: Why is my WCF web service presenting this object in a different namespace with different field names?. However as you will see in my code, I have already marked the DocuSignConnectUpdate method with [XmlSerializerFormat] in the interface. Is there something else I'm missing?
My Interface:
<ServiceContract(Namespace:="http://www.docusign.net/API/3.0")>
Public Interface IDSConnectService
<OperationContract()>
<XmlSerializerFormat()>
Function DocuSignConnectUpdate(ByVal DocuSignEnvelopeInformation As DocuSignEnvelopeInformation)As String
End Interface
My Class:
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
<ServiceBehavior(AddressFilterMode:=AddressFilterMode.Any, Namespace:="http://www.docusign.net/API/3.0")>
Public Class DSConnectService
Implements IDSConnectService
Public Function DocuSignConnectUpdate(ByVal DocuSignEnvelopeInformation As DocuSignEnvelopeInformation) As String Implements IDSConnectService.DocuSignConnectUpdate
If Not DocuSignEnvelopeInformation Is Nothing Then
...........
Return DocuSignEnvelopeInformation.EnvelopeStatus.EnvelopeID
Else
Return "No Envelope Information Received"
End If
End Function
The DocuSignConnectUpdate always returns "No Envelope Information Received" when publishing EnvelopeInformation through the DocuSign Connect Service (but works fine for my local test client).
My web.config settings:
......
<system.serviceModel>
<services>
<service name="MyService.DSConnectService" behaviorConfiguration="MyBehavior" >
<endpoint address=""
binding="basicHttpBinding"
contract="MyService.IDSConnectService"/>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="xmlEndpointBehavior">
<webHttp helpEnabled="true" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="MyBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"
messageEncoding="Text">
<readerQuotas maxDepth="2000000" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
EDIT: Here is an example of the XML that is being sent by DocuSign and my test client (I copied the xml from the Connect logs and used it in my client request).
<?xml version="1.0" encoding="UTF-8"?>
<DocuSignEnvelopeInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docusign.net/API/3.0">
<EnvelopeStatus>
<RecipientStatuses>
<RecipientStatus>
<Type>Signer</Type>
<Email>role99@email.com</Email>
<UserName>Producer Name</UserName>
<RoutingOrder>1</RoutingOrder>
<Sent>2014-09-04T09:51:52.107</Sent>
<Delivered>2014-09-04T09:55:26.62</Delivered>
<Signed>2014-09-04T09:55:26.62</Signed>
<DeclineReason xsi:nil="true"/>
<Status>Completed</Status>
<RecipientIPAddress>255.255.255.255</RecipientIPAddress>
<ClientUserId>99</ClientUserId>
<CustomFields/>
<AccountStatus>Active</AccountStatus>
<RecipientId>276567ad-763a-45e5-a5b2-38572dfa6bb8</RecipientId>
</RecipientStatus>
</RecipientStatuses>
<TimeGenerated>2014-09-04T09:55:46.5725646</TimeGenerated>
<EnvelopeID>01f83c1a-135f-438f-87cc-57ce74aba050</EnvelopeID>
<Subject>Russell Test Signing your Application</Subject>
<UserName>Russell Test</UserName>
<Email>my@email.com</Email>
<Status>Completed</Status>
<Created>2014-09-04T09:51:51.793</Created>
<Sent>2014-09-04T09:51:52.153</Sent>
<Delivered>2014-09-04T09:55:26.683</Delivered>
<Signed>2014-09-04T09:55:26.683</Signed>
<Completed>2014-09-04T09:55:26.683</Completed>
<ACStatus>Original</ACStatus>
<ACStatusDate>2014-09-04T09:51:51.793</ACStatusDate>
<ACHolder>Russell Test</ACHolder>
<ACHolderEmail>my@email.com</ACHolderEmail>
<ACHolderLocation>DocuSign</ACHolderLocation>
<SigningLocation>Online</SigningLocation>
<SenderIPAddress>255.255.255.255 </SenderIPAddress>
<EnvelopePDFHash/>
<CustomFields>
</CustomFields>
<AutoNavigation>true</AutoNavigation>
<EnvelopeIdStamping>true</EnvelopeIdStamping>
<AuthoritativeCopy>false</AuthoritativeCopy>
<DocumentStatuses>
<DocumentStatus>
<ID>1</ID>
<Name>TestForm1</Name>
<TemplateName/>
<Sequence>1</Sequence>
</DocumentStatus>
<DocumentStatus>
<ID>2</ID>
<Name>TestForm2</Name>
<TemplateName/>
<Sequence>2</Sequence>
</DocumentStatus>
<DocumentStatus>
<ID>3</ID>
<Name>TestForm3</Name>
<TemplateName/>
<Sequence>3</Sequence>
</DocumentStatus>
<DocumentStatus>
<ID>4</ID>
<Name>Signed-on-Paper_276567ad-763a-45e5-a5b2-38572dfa6bb8</Name>
<TemplateName/>
<Sequence>4</Sequence>
</DocumentStatus>
</DocumentStatuses>
</EnvelopeStatus>
</DocuSignEnvelopeInformation>
Any suggestions?