2012-06-29 6 views
1

Я использую следующий код для вызова docusign api. Я получил информацию от this link.Интеграция Docusign и ColdFusion

<soap:Body> 
    <ns:CreateEnvelopeFromTemplates> 
     <ns:TemplateReferences> 
     <ns:TemplateReference> 
      <ns:TemplateLocation>Server</ns:TemplateLocation> 
      <ns:Template>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</ns:Template> 
      <ns:RoleAssignments> 
      <ns:RoleAssignment> 
       <ns:RoleName>Company</ns:RoleName> 
       <ns:RecipientID>1</ns:RecipientID> 
      </ns:RoleAssignment> 
      </ns:RoleAssignments> 
     </ns:TemplateReference> 
     </ns:TemplateReferences> 
     <ns:Recipients> 
     <ns:Recipient> 
      <ns:ID>1</ns:ID> 
      <ns:UserName>Fred Flintstone</ns:UserName> 
      <ns:Email>[email protected]</ns:Email> 
      <ns:Type>Signer</ns:Type> 
      <ns:RoleName>Caveman</ns:RoleName> 
      <ns:RoutingOrder>1</ns:RoutingOrder> 
     </ns:Recipient> 
     </ns:Recipients> 
     <ns:EnvelopeInformation> 
     <ns:AccountId>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</ns:AccountId> 
     <ns:EmailBlurb>This Envelope was sent through the DocuSign API using ColdFusion</ns:EmailBlurb> 
     <ns:Subject>DocuSign it! using ColdFusion</ns:Subject> 
     </ns:EnvelopeInformation> 
     <ns:ActivateEnvelope>true</ns:ActivateEnvelope> 
    </ns:CreateEnvelopeFromTemplates> 
    </soap:Body> 

Я не могу понять, что тег RoleAssignment под шаблон используется. Я прошел через documentation here, но не понял.

Я думаю, что это единственная причина, по которой я не получаю ответа. Я прокомментировал эту часть в своем коде, но после изменения всех учетных данных получаю следующий вывод.

An error occurred! 
struct 
Charset [empty string] 
ErrorDetail Unknown host: demo.docusign.net 
Filecontent Connection Failure 
Header [empty string] 
Mimetype  Unable to determine MIME type of file. 
Responseheader 
struct [empty] 
Statuscode Connection Failure. Status code unavailable. 
Text  YES 

Может ли кто-нибудь помочь мне с этим?

ответ

0

Если это запрос POST (отправка данных), похоже, что веб-сервис не распознает представление фактического XML-файла SOAP.

Вы отправляете XML как тип XML, как показано в документации?

<cfhttpparam type="xml" value="#trim(request_xml)#" /> 
+0

да i uesd it lyk это только .. – Ritu

2

Я не думаю, что RoleAssignment не имеет ничего общего с этой конкретной ошибкой. Вам нужно объединить SOAP Header и SOAP Body с их примером. Тело SOAP должно содержаться в блоке заголовка SOAP.

Обратите внимание, что их пример для заголовка SOAP содержит блок <soap:Body>. Затем их пример для тела SOAP также окружен блоком <soap:Body>. Они должны быть объединены, как это для <cfhttp> вызова:

<cfset UserName = "[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX]XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX" /> 
<cfset Password = "SuperSecret" /> 

<cfscript> 
    strNonce = ToBase64(createUUID()); 
</cfscript> 

<!--- create the request body XML block ---> 
<cfsavecontent variable="request_xml"> 
<cfoutput> 
<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://www.docusign.net/API/3.0"> 
    <soap:Header> 
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <wsse:UsernameToken wsu:Id="UsernameToken-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
      <wsse:Username>#UserName#</wsse:Username> 
      <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0##PasswordText">#Password#</wsse:Password> 
      <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0##Base64Binary">#strNonce#</wsse:Nonce> 
     </wsse:UsernameToken> 
    </wsse:Security> 
    </soap:Header> 
    <soap:Body> 
    <ns:CreateEnvelopeFromTemplates> 
     <ns:TemplateReferences> 
    <ns:TemplateReference> 
     <ns:TemplateLocation>Server</ns:TemplateLocation> 
     <ns:Template>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</ns:Template> 
     <ns:RoleAssignments> 
     <ns:RoleAssignment> 
      <ns:RoleName>Company</ns:RoleName> 
      <ns:RecipientID>1</ns:RecipientID> 
     </ns:RoleAssignment> 
     </ns:RoleAssignments> 
    </ns:TemplateReference> 
     </ns:TemplateReferences> 
     <ns:Recipients> 
    <ns:Recipient> 
     <ns:ID>1</ns:ID> 
     <ns:UserName>Fred Flintstone</ns:UserName> 
     <ns:Email>[email protected]</ns:Email> 
     <ns:Type>Signer</ns:Type> 
     <ns:RoleName>Caveman</ns:RoleName> 
     <ns:RoutingOrder>1</ns:RoutingOrder> 
    </ns:Recipient> 
     </ns:Recipients> 
     <ns:EnvelopeInformation> 
    <ns:AccountId>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</ns:AccountId> 
    <ns:EmailBlurb>This Envelope was sent through the DocuSign API using ColdFusion</ns:EmailBlurb> 
    <ns:Subject>DocuSign it! using ColdFusion</ns:Subject> 
     </ns:EnvelopeInformation> 
     <ns:ActivateEnvelope>true</ns:ActivateEnvelope> 
    </ns:CreateEnvelopeFromTemplates> 
    </soap:Body> 
</soap:Envelope> 
</cfoutput> 
</cfsavecontent> 

(. Этот пример был взят непосредственно из документации, которую я только объединил два блока.)

Затем отправить этот запрос (из их примера):

<!--- send the request to the DocuSign service ---> 
<cfhttp url="https://demo.docusign.net/api/3.0/api.asmx" method="post" result="http_response"> 

    <!--- make sure you set this correctly for the call you are making ---> 
    <cfhttpparam type="header" name="SOAPAction" value="http://www.docusign.net/API/3.0/CreateEnvelopeFromTemplates" /> 
    <cfhttpparam type="header" name="accept-encoding" value="no-compression" /> 
    <cfhttpparam type="xml" value="#trim(request_xml)#" /> 
</cfhttp> 

И, наконец, обработать ответ (из их примера):

<!--- if we received a successful response ---> 
<cfif find("200", http_response.statusCode)> 
    <cfscript> 
    response_xml = xmlParse(http_response.fileContent); 

    // use XPath to get the top level element you want from the SOAP response 
    result_node = xmlSearch(response_xml, "//*[local-name() = 'CreateEnvelopeFromTemplatesResult']")[1]; 

    // use dot notation to navigate the XML structure 
    envelope_id = result_node.EnvelopeID.xmlText; 
    </cfscript> 

    <cfoutput> 
    EnvelopeID: #envelope_id# 
    </cfoutput> 
<cfelse> 
    <cfoutput> 
    An error occurred! 
    </cfoutput> 
    <cfdump var="#http_response#"> 
</cfif> 
0

Теги RoleAssignment используются для назначения получателя определенной роли шаблона. Когда вы отправляете конверт с шаблоном, вы ссылаетесь на шаблон, созданный с помощью консоли DocuSign (demo.docusign.net). Когда вы создали шаблон, вам нужно указать хотя бы одну роль шаблона для шаблона, который содержит имя роли, имя получателя и адрес электронной почты получателя. Значение, которое вы используете для этой роли, должно соответствовать имени роли, которое вы предоставляете в вызове api. Так что, если вы назвали свою роль «Signer1», например, вам нужно иметь

<ns:RoleName>Signer1</ns:RoleName> 

Если вы назвали «Компания» роль, которую держать как у вас есть.

 Смежные вопросы

  • Нет связанных вопросов^_^