2017-01-26 11 views
0

Я пытаюсь интегрировать свой сайт с Docusign через встроенную подпись с использованием подписчика inperson. Мой .Net-сайт регистрируется и открывает шаблон docusign, и я должен иметь возможность передавать значения через rest api в теги документа docusign. Но те значения тега, которые я передаю через Rest api в теги «Полное имя» и «Компания», не заселяются. Имя RoleName для шаблона «Signer1» и использовать «Вход в лицо», как action.Check этот путь для экрана для RoleNameDocusign api встроенная подпись как подписчик inperson - приложение C# - теги, не заполняющие значения, переданные остальными api, и документ приходят как бесплатная форма подписки

Также он показывает, как в свободной форме подписания. Есть поля «FIELDS» слева от моего документа, и мне нужно перетащить их в форму (я заполнил эти поля со значениями).

Но я не хочу видеть поля свободной формы левой стороны. Я просто хочу передать значение тега в документ для подписчика inperson, и оно должно отображаться в документе.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Collections; 
using System.Web; 
using System.Web.UI; 
using System.IO; 
using System.Net; 
using System.Xml; 
using System.Text; 
using RestSharp; 
using Newtonsoft.Json; 
using System.Web.UI.WebControls; 
using System.Collections.Specialized; 
using log4net; 
using DocuSign.eSign.Api; 
using DocuSign.eSign.Model; 
using DocuSign.eSign.Client; 

namespace TestProject 
{ 
    public partial class Home : System.Web.UI.Page 
    { 
     protected void getDocusign() 
     { 
      string username = "****"; 
      string password = "****"; 
      string integratorKey = "****************************"; 
      string templateId = "*******************************";   
      string roleName = "Signer1"; 



      string url = "https://demo.docusign.net/restapi/v2/login_information"; 
      string baseURL = ""; // we will retrieve this 
      string accountId = ""; // will retrieve 
      string envelopeId = ""; // will retrieve 
      string uri = ""; // will retrieve 
      try 
      { 
       string authenticateStr = 
        "<DocuSignCredentials>" + 
         "<Username>" + username + "</Username>" + 
         "<Password>" + password + "</Password>" + 
         "<IntegratorKey>" + integratorKey + "</IntegratorKey>" + 
         "</DocuSignCredentials>"; 
       // 
       // STEP 1 - Login 
       // 
       HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
       request.Headers.Add("X-DocuSign-Authentication", authenticateStr); 
       request.Accept = "application/xml"; 
       request.Method = "GET"; 
       HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse(); 
       StreamReader sr = new StreamReader(webResponse.GetResponseStream()); 
       string responseText = sr.ReadToEnd(); 
       using (XmlReader reader = XmlReader.Create(new StringReader(responseText))) 
       { 
        while (reader.Read()) 
        { // Parse the xml response body 
         if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "accountId")) 
          accountId = reader.ReadString(); 
         if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "baseUrl")) 
          baseURL = reader.ReadString(); 
        } 
       } 
       // 
       // STEP 2 - Request Envelope Result 
       // 
       // Construct an outgoing XML request body 
       string requestBody = "<envelopeDefinition xmlns=\"http://www.docusign.com/restapi\">" + 
        "<accountId>" + accountId + "</accountId>" + 
         "<status>sent</status>" + 
         "<emailSubject>Company Notice - Signature Request</emailSubject>" + 
         "<emailBlurb>Testing from Sandy</emailBlurb>" + 
         "<templateId>" + templateId + "</templateId>" + 
         "<templateRoles>" + 
         "<templateRole>" + 
         "<email>" + "[email protected]" + "</email>" + // NOTE: Use different email address if username provided in non-email format! 
         "<name>" + "George Keane" + "</name>" +    // username can be in email format or an actual ID string 
         "<roleName>" + roleName + "</roleName>" + 
         "<clientUserId>9</clientUserId>" + 
         "<tabs>" + 
         "<textTabs>" + 
         "<text>" + 
         "<tabLabel>" + "Full Name" + "</tabLabel>" + 
         "<value>" + "George Keane" + " </value>" + 
         "</text>" + 
         "<text>" + 
         "<tabLabel>" + "Company" + "</tabLabel>" + 
         "<value>" + "Dell" + " </value>" + 
         "</text>" + 
         "</textTabs>" + 
         "</tabs>" + 
         "</templateRole>" + 
         "</templateRoles>" + 
         "</envelopeDefinition>"; 

       // append "/envelopes" to baseUrl and use in the request 
       request = (HttpWebRequest)WebRequest.Create(baseURL + "/envelopes"); 
       request.Headers.Add("X-DocuSign-Authentication", authenticateStr); 
       request.ContentType = "application/xml"; 
       request.Accept = "application/xml"; 
       request.ContentLength = requestBody.Length; 
       request.Method = "POST"; 
       // write the body of the request 
       byte[] body = System.Text.Encoding.UTF8.GetBytes(requestBody); 
       Stream dataStream = request.GetRequestStream(); 
       dataStream.Write(body, 0, requestBody.Length); 
       dataStream.Close(); 
       // read the response 
       webResponse = (HttpWebResponse)request.GetResponse(); 
       sr = new StreamReader(webResponse.GetResponseStream()); 
       responseText = sr.ReadToEnd(); 
       using (XmlReader reader = XmlReader.Create(new StringReader(responseText))) 
       { 
        while (reader.Read()) 
        { // Parse the xml response body 
         if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "envelopeId")) 
          envelopeId = reader.ReadString(); 
         if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "uri")) 
          uri = reader.ReadString(); 
        } 
       } 
       // 
       // STEP 3 - Get the Embedded Console Sign View 
       // 
       // construct another outgoing XML request body 
       string reqBody = "<recipientViewRequest xmlns=\"http://www.docusign.com/restapi\">" + 
        "<authenticationMethod>email</authenticationMethod>" + 
         "<email>" + "[email protected]" + "</email>" + //+ username + // NOTE: Use different email address if username provided in non-email format! 
         "<returnUrl>http://www.docusign.com</returnUrl>" + // username can be in email format or an actual ID string 
         "<clientUserId>9</clientUserId>" + 
         "<userName>" + "George Keane" + "</userName>" + 
         "</recipientViewRequest>"; 

       // append uri + "/views/recipient" to baseUrl and use in the request 
       request = (HttpWebRequest)WebRequest.Create(baseURL + uri + "/views/recipient"); 
       request.Headers.Add("X-DocuSign-Authentication", authenticateStr); 
       request.ContentType = "application/xml"; 
       request.Accept = "application/xml"; 
       request.ContentLength = reqBody.Length; 
       request.Method = "POST"; 
       // write the body of the request 
       byte[] body2 = System.Text.Encoding.UTF8.GetBytes(reqBody); 
       Stream dataStream2 = request.GetRequestStream(); 
       dataStream2.Write(body2, 0, reqBody.Length); 
       dataStream2.Close(); 
       // read the response 
       webResponse = (HttpWebResponse)request.GetResponse(); 
       sr = new StreamReader(webResponse.GetResponseStream()); 
       responseText = sr.ReadToEnd(); 
       using (XmlReader reader = XmlReader.Create(new StringReader(responseText))) 
       { 
        while (reader.Read()) 
        { // Parse the xml response body 
         if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "url")) 
          url = reader.ReadString(); 
        } 
       } 
       Console.WriteLine("Embeded View Result --> " + responseText); 
       System.Diagnostics.Process.Start(url); 
      } 
      catch (WebException e) 
      { 
       using (WebResponse response = e.Response) 
       { 
        HttpWebResponse httpResponse = (HttpWebResponse)response; 
        Console.WriteLine("Error code: {0}", httpResponse.StatusCode); 
        using (Stream data = response.GetResponseStream()) 
        { 
         string text = new StreamReader(data).ReadToEnd(); 
         Console.WriteLine(text); 
        } 
       } 
      } 

     } 

    } 
} 



[enter image description here][1] 


    [1]: https://i.stack.imgur.com/iGx0U.jpg 

ответ

1

ПолноеИмя и Компания вкладки «стандартные» типы вкладок, а не «пользовательские» типы вкладок. Вы можете просмотреть их истинную природу, посмотрев на схему или WSDL. Концепции по-прежнему применяются, даже при использовании REST. Различие в том, что «стандартные» типах вкладок (signHere, initialHere, dateSigned и т.д.), полученные из информации о получателе и заселенный во время подписания, в то время как «пользовательские» типы вкладок являются получателем ввода tabs (текст, , бланк заказа и т. Д.). Вы можете предварительно заполнять или предварительно устанавливать стандартные значения табуляции (исключения для информации получателя, которая является необязательной и может не иметь значений, например, название члена или компания DS).

Таким образом, fullName будет заселен на основании полного имени, предоставленного подписывающим составом во время подписания подписи. Закладка будет заполнена, если подписавший имеет членство в учетной записи DocuSign. В противном случае вы должны быть в состоянии предварительно заполнить его (аналогичный случай для заголовков и других, которые полагаются на необязательные данные участника).

Поскольку в вашем конкретном случае вы указываете Captive Recipient, они не будут соответствовать ни одному члену DS, чтобы вы могли предварительно заполнить вкладку . Но вам нужно сделать это в правильном элементе XML типа табуляции, то есть в пределах <companyTabs>.

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

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