0

我正在尝试通过使用 inperson signer 的嵌入式签名将我的网站与 Docusign 集成。我的.Net网站登录并打开docusign模板,我应该能够通过rest api将值传递给docusign文档上的标签。但是我通过Rest api将标签值传递给标签“全名”和“公司”没有人满为患。模板的角色名称为“Signer1”并使用“登录人”作为操作。检查此路径以获取角色名称的屏幕截图

它也显示为自由格式签名。我的文档左侧有“字段”,我需要将它们拖放到表单上(我已经用值填充了这些字段)。

但我不想看到左侧的自由格式字段。我只想将标签值传递给亲自签名者的文档,它应该显示在文档中。

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://i.stack.imgur.com/iGx0U.jpg
4

1 回答 1

1

FullNameCompany选项卡是“标准”选项卡类型,而不是“自定义”选项卡类型。您可以通过查看模式或 WSDL 来查看它们的真实性质。即使使用 REST,这些概念仍然适用。区别在于“标准”选项卡类型(signHereinitialHeredateSigned等)源自收件人信息并在签名时填充,而“自定义”选项卡类型是收件人输入选项卡(文本列表复选框, ETC。)。您只能预先填充或预先设置“标准”选项卡类型值(例外情况是可选的且可能没有值的收件人信息,例如 DS 成员的头衔或公司)。

因此,fullName将根据签名者在签名采用时提供的全名填充。如果签名者拥有 DocuSign 帐户的成员资格,则将填充公司选项卡。否则,您应该能够预先填充它(标题选项卡和其他依赖成员可选数据的情况类似)。

由于在您的特定情况下您指定了一个专属收件人,因此他们不会与任何 DS 成员匹配,因此您应该能够预先填充公司选项卡。但是您需要在正确的选项卡类型 XML 元素中执行此操作,即在<companyTabs>.

于 2017-01-30T16:55:27.700 回答