Docusign api встроил подпись как личность подписывающего лица - приложение C# - теги, не заполняющие значения, переданные rest api, и документ поставляется как подпись свободной формы

Я пытаюсь интегрировать свой сайт с Docusign с помощью встроенной подписи, используя личную подпись. Мой веб-сайт.Net входит в систему и открывает шаблон docusign, и я должен иметь возможность передавать значения через rest api тегам в документе docusign. Но значения тегов, которые я передаю через Rest api, тегам "Полное имя" и "Компания" не заселяются. Имя шаблона для имени пользователя - "Signer1" и используйте "Вход в личность" в качестве действия. Проверьте этот путь для скриншота для rolename

Также это отображается как подпись свободной формы. Слева от моего документа есть "ПОЛЯ", и мне нужно перетащить их в форму (я заполнил эти поля значениями).

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

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>" + "george@gmail.com" + "</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>" + "george@gmail.com" + "</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://stackru.com/images/9111cafdfba641d209f52b850f5f6a195a037f3a.jpg

1 ответ

Вкладки FullName и Company являются "стандартными" типами вкладок, а не "пользовательскими" типами вкладок. Вы можете увидеть их истинную природу, взглянув на схему или WSDL. Понятия все еще применяются, даже при использовании REST. Различие состоит в том, что "стандартные" типы вкладок (signHere, initialHere, dateSigned и т. Д.) Являются производными от информации о получателе и заполняются во время подписания, в то время как "пользовательские" типы вкладок являются вкладками ввода получателя (текст, список, флажок)., так далее.). Вы можете только предварительно заполнить или предварительно установить "стандартные" значения типа вкладки (исключения относятся к информации о получателе, которая является необязательной и может не иметь значений, таких как заголовок члена DS или компания).

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

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

Другие вопросы по тегам