protected void createEnvelopeResponsive() { // Set up the envelope CreateEnvelopeRequest createEnvelopeRequest = new CreateEnvelopeRequest(); createEnvelopeRequest.emailSubject = "Business Credit Card Approval"; createEnvelopeRequest.status = "sent"; createEnvelopeRequest.emailBlurb = "Please review & DocuSign your business credit cards approval"; // Define first signer Signer signer = new Signer(); signer.email = Email.Value; signer.name = firstName.Value + ' ' + lastName.Value; signer.recipientId = 1; signer.routingOrder = "1"; signer.roleName = "signer"; signer.clientUserId = RandomizeClientUserID(); //// Add tabs for the signer signer.tabs = new Tabs(); signer.tabs.dateSignedTabs = new List <DateSignedTab>(); DateSignedTab dateSignedTab = new DateSignedTab(); dateSignedTab.documentId = "1"; dateSignedTab.pageNumber = "1"; dateSignedTab.font = "arial"; dateSignedTab.fontSize = "size12"; dateSignedTab.fontColor = "black"; dateSignedTab.recipientId = "1"; dateSignedTab.tabLabel = "clientDateSigned"; signer.tabs.dateSignedTabs.Add(dateSignedTab); signer.tabs.signHereTabs = new List <SignHereTab>(); SignHereTab signHereTab = new SignHereTab(); signHereTab.stampType = "signature"; signHereTab.name = "SignHere"; signHereTab.tabLabel = "clientSignature"; signHereTab.scaleValue = "1"; signHereTab.optional = "false"; signHereTab.recipientId = "1"; signer.tabs.signHereTabs.Add(signHereTab); signer.tabs.textTabs = new List <TextTab>(); TextTab texttab2 = new TextTab(); texttab2.isPaymentAmount = "false"; texttab2.validationMessage = ""; texttab2.validationPattern = ""; texttab2.shared = "false"; texttab2.requireInitialOnSharedChange = "false"; texttab2.requireAll = "false"; texttab2.value = firstName.Value + " " + lastName.Value + "/" + title.Value; texttab2.required = "true"; texttab2.locked = "true"; texttab2.concealValueOnDocument = "false"; texttab2.disableAutoSize = "false"; texttab2.maxLength = "4000"; texttab2.tabLabel = "Approver"; texttab2.font = "arial"; texttab2.bold = "false"; texttab2.italic = "false"; texttab2.underline = "false"; texttab2.fontColor = "black"; texttab2.fontSize = "size12"; texttab2.documentId = "1"; texttab2.recipientId = "1"; texttab2.width = "100"; texttab2.height = "11"; signer.tabs.textTabs.Add(texttab2); TextTab texttab3 = new TextTab(); texttab3.isPaymentAmount = "false"; texttab3.validationMessage = ""; texttab3.validationPattern = ""; texttab3.shared = "false"; texttab3.requireInitialOnSharedChange = "false"; texttab3.requireAll = "false"; texttab3.value = businessName.Value; texttab3.required = "true"; texttab3.locked = "true"; texttab3.concealValueOnDocument = "false"; texttab3.disableAutoSize = "false"; texttab3.maxLength = "4000"; texttab3.tabLabel = "BusinessName"; texttab3.font = "arial"; texttab3.bold = "false"; texttab3.italic = "false"; texttab3.underline = "false"; texttab3.fontColor = "black"; texttab3.fontSize = "size12"; texttab3.documentId = "1"; texttab3.recipientId = "1"; texttab3.width = "60"; texttab3.height = "11"; signer.tabs.textTabs.Add(texttab3); createEnvelopeRequest.recipients = new Recipients(); createEnvelopeRequest.recipients.signers = new List <Signer>(); createEnvelopeRequest.recipients.signers.Add(signer); // Define a document Document document = new Document(); document.documentId = "1"; document.name = "Business Credit Card Approval"; document.htmlDefinition = new HtmlDefinition(); // Read in the HTML file document.htmlDefinition.source = File.ReadAllText(Server.MapPath("~/App_Data/") + "digbankingdemo.html"); // Define display anchors document.htmlDefinition.displayAnchors = new List <DisplayAnchor>(); DisplayAnchor displayAnchor = new DisplayAnchor(); displayAnchor.startAnchor = "responsive_table_start"; displayAnchor.endAnchor = "responsive_table_end"; displayAnchor.removeEndAnchor = true; displayAnchor.removeStartAnchor = true; displayAnchor.caseSensitive = true; displayAnchor.displaySettings = new DisplaySettings(); displayAnchor.displaySettings.display = "responsive_table_single_column"; displayAnchor.displaySettings.tableStyle = "margin-bottom: 20px;width:100%;max-width:816px;margin-left:auto;margin-right:auto;"; displayAnchor.displaySettings.cellStyle = "text-align:left;border:solid 0px #000;margin:0px;padding:0px;"; document.htmlDefinition.displayAnchors.Add(displayAnchor); createEnvelopeRequest.documents = new List <Document>(); createEnvelopeRequest.documents.Add(document); createEnvelopeRequest.brandId = ConfigurationManager.AppSettings["MomentumBrandID"]; // Set up Connect createEnvelopeRequest.eventNotification = getConnectSetup(); string output = JsonConvert.SerializeObject(createEnvelopeRequest); // Set the URI HttpWebRequest request = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/vdev/accounts/" + ConfigurationManager.AppSettings["API.AccountId"] + "/envelopes") as HttpWebRequest; // Set the method request.Method = "POST"; // Set the authentication header request.Headers["X-DocuSign-Authentication"] = GetSecurityHeader(); // Set the overall request content type aand boundary string request.ContentType = "application/json"; request.Accept = "application/json"; // Start forming the body of the request Stream reqStream = request.GetRequestStream(); WriteStream(reqStream, "\n"); // requires an empty line between the header and the json body WriteStream(reqStream, output); try { HttpWebResponse response = request.GetResponse() as HttpWebResponse; if (response.StatusCode == HttpStatusCode.Created) { byte[] responseBytes = new byte[response.ContentLength]; using (var reader = new System.IO.BinaryReader(response.GetResponseStream())) { reader.Read(responseBytes, 0, responseBytes.Length); } string responseText = Encoding.UTF8.GetString(responseBytes); CreateEnvelopeResponse createEnvelopeResponse = new CreateEnvelopeResponse(); createEnvelopeResponse = JsonConvert.DeserializeObject <CreateEnvelopeResponse>(responseText); if (createEnvelopeResponse.status.Equals("sent")) { // Now that we have created the envelope, get the recipient token for the first signer String url = Request.Url.AbsoluteUri; RecipientViewRequest recipientViewRequest = new RecipientViewRequest(); recipientViewRequest.authenticationMethod = "email"; recipientViewRequest.clientUserId = signer.clientUserId; recipientViewRequest.email = Email.Value; recipientViewRequest.returnUrl = url.Substring(0, url.LastIndexOf("/")) + "/ConfirmationScreen.aspx"; recipientViewRequest.userName = firstName.Value + " " + lastName.Value; HttpWebRequest request2 = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/v2/accounts/" + ConfigurationManager.AppSettings["API.TemplatesAccountID"] + "/envelopes/" + createEnvelopeResponse.envelopeId + "/views/recipient") as HttpWebRequest; request2.Method = "POST"; // Set the authenticationheader request2.Headers["X-DocuSign-Authentication"] = GetSecurityHeader(); request2.Accept = "application/json"; request2.ContentType = "application/json"; Stream reqStream2 = request2.GetRequestStream(); WriteStream(reqStream2, JsonConvert.SerializeObject(recipientViewRequest)); HttpWebResponse response2 = request2.GetResponse() as HttpWebResponse; responseBytes = new byte[response2.ContentLength]; using (var reader = new System.IO.BinaryReader(response2.GetResponseStream())) { reader.Read(responseBytes, 0, responseBytes.Length); } string response2Text = Encoding.UTF8.GetString(responseBytes); RecipientViewResponse recipientViewResponse = new RecipientViewResponse(); recipientViewResponse = JsonConvert.DeserializeObject <RecipientViewResponse>(response2Text); Session.Add("envelopeID", createEnvelopeResponse.envelopeId); Response.Redirect(recipientViewResponse.url); } } } catch (WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError) { HttpWebResponse response = (HttpWebResponse)ex.Response; using (var reader = new System.IO.StreamReader(ex.Response.GetResponseStream(), UTF8Encoding.UTF8)) { string errorMess = reader.ReadToEnd(); log4net.ILog logger = log4net.LogManager.GetLogger(typeof(BusinessCCApproval)); logger.Info("\n----------------------------------------\n"); logger.Error("DocuSign Error: " + errorMess); logger.Error(ex.StackTrace); Response.Write(ex.Message); } } else { log4net.ILog logger = log4net.LogManager.GetLogger(typeof(BusinessCCApproval)); logger.Info("\n----------------------------------------\n"); logger.Error("WebRequest Error: " + ex.Message); logger.Error(ex.StackTrace); Response.Write(ex.Message); } } }
protected void createEnvelope() { // Set up the envelope CreateEnvelopeRequest createEnvelopeRequest = new CreateEnvelopeRequest(); createEnvelopeRequest.emailSubject = "Kitchen Sink Example"; createEnvelopeRequest.status = "sent"; createEnvelopeRequest.emailBlurb = "Example of how different smart anchors work"; // Define first signer Signer signer = new Signer(); signer.email = email.Value; signer.name = firstname.Value + " " + lastname.Value; signer.recipientId = 1; signer.routingOrder = "1"; signer.roleName = "Signer1"; signer.clientUserId = RandomizeClientUserID(); // First signer is embedded // Add tabs for the signer signer.tabs = new Tabs(); signer.tabs.signHereTabs = new List <SignHereTab>(); SignHereTab signHereTab = new SignHereTab(); signHereTab.documentId = "1"; signHereTab.tabId = "1"; signHereTab.anchorString = "~?"; signHereTab.anchorIgnoreIfNotPresent = "true"; signHereTab.name = "PrimarySignerSignature"; signer.tabs.signHereTabs.Add(signHereTab); signer.tabs.dateSignedTabs = new List <DateSignedTab>(); DateSignedTab dateSignedTab = new DateSignedTab(); dateSignedTab.documentId = "1"; dateSignedTab.tabId = "2"; dateSignedTab.anchorString = "~!"; dateSignedTab.anchorIgnoreIfNotPresent = "true"; dateSignedTab.name = "PrimarySignerDateSigned"; signer.tabs.dateSignedTabs.Add(dateSignedTab); // Define a document Document document = new Document(); document.documentId = "1"; document.name = "Sample Form"; document.transformPdfFields = "true"; document.fileExtension = "doc"; document.htmlDefinition = new HtmlDefinition(); document.htmlDefinition.source = "document"; document.htmlDefinition.displayAnchorPrefix = ""; document.htmlDefinition.maxScreenWidth = 0; document.htmlDefinition.removeEmptyTags = "table,tr,p"; document.htmlDefinition.headerLabel = "<h1 style='color:#E20074;text-align:center;font-family:Tele-Grotesk, Arial, Helvetica;'>Examples of Smart Sections</h1><h2 style = 'text-align:center;font-family:Tele-Grotesk, Arial, Helvetica;'> Simply scroll down to review.</ h2><div style = 'margin-top:20px;margin-bottom:20px;border-bottom:solid 2px #dedede;'></ div >"; // Define the display anchors document.htmlDefinition.displayAnchors = new List <DisplayAnchor>(); DisplayAnchor displayAnchor = new DisplayAnchor(); displayAnchor.startAnchor = "$Docu$printonlyS$"; displayAnchor.endAnchor = "$Docu$printonlyE$"; displayAnchor.removeEndAnchor = true; displayAnchor.removeStartAnchor = true; displayAnchor.caseSensitive = true; displayAnchor.displaySettings = new DisplaySettings(); displayAnchor.displaySettings.display = "print_only"; displayAnchor.displaySettings.tableStyle = ""; displayAnchor.displaySettings.cellStyle = ""; displayAnchor.displaySettings.labelWhenOpened = ""; displayAnchor.displaySettings.scrollToTopWhenOpened = true; displayAnchor.displaySettings.hideLabelWhenOpened = true; displayAnchor.displaySettings.displayLabel = ""; document.htmlDefinition.displayAnchors.Add(displayAnchor); DisplayAnchor displayAnchor2 = new DisplayAnchor(); displayAnchor2.startAnchor = "$tmo$tila$"; displayAnchor2.endAnchor = "$tmo$tila$"; displayAnchor2.removeEndAnchor = true; displayAnchor2.removeStartAnchor = true; displayAnchor2.caseSensitive = true; displayAnchor2.displaySettings = new DisplaySettings(); displayAnchor2.displaySettings.display = "responsive_table_single_column"; displayAnchor2.displaySettings.tableStyle = "margin-bottom:20px;"; displayAnchor2.displaySettings.cellStyle = "text-align:center;border:solid 3px #333;margin:5px;padding:5px;background-color:#eaeaea;~text-align:center;border:solid 3px #333;margin:5px;padding:5px;background-color:#eaeaea;~text-align:center;border:solid 1px #999;margin:5px;padding:5px;background-color:#eaeaea;"; displayAnchor2.displaySettings.labelWhenOpened = ""; displayAnchor2.displaySettings.scrollToTopWhenOpened = true; displayAnchor2.displaySettings.hideLabelWhenOpened = true; displayAnchor2.displaySettings.displayLabel = ""; document.htmlDefinition.displayAnchors.Add(displayAnchor2); DisplayAnchor displayAnchor5 = new DisplayAnchor(); displayAnchor5.startAnchor = "$Docu$collapsedS$"; displayAnchor5.endAnchor = "$Docu$collapsedE$"; displayAnchor5.removeEndAnchor = true; displayAnchor5.removeStartAnchor = true; displayAnchor5.caseSensitive = true; displayAnchor5.displaySettings = new DisplaySettings(); displayAnchor5.displaySettings.display = "collapsed"; displayAnchor5.displaySettings.tableStyle = ""; displayAnchor5.displaySettings.cellStyle = ""; displayAnchor5.displaySettings.labelWhenOpened = ""; displayAnchor5.displaySettings.scrollToTopWhenOpened = true; displayAnchor5.displaySettings.hideLabelWhenOpened = false; displayAnchor5.displaySettings.displayLabel = @"<div style='display:flex;flex-flow:row wrap;align-items:center;min-height:40px;border-top:solid 1px #dedede;font-size:24px;color:#9d2624'><div style = 'flex:none;width:90%;padding:5px;'>Declaration Of Independence</div><div style='width:10%;text-align:right;padding:5px;'><a><i class='icon icon-caret-large-down' style='color:#000;'></i></a></div></div>"; document.htmlDefinition.displayAnchors.Add(displayAnchor5); DisplayAnchor displayAnchor3 = new DisplayAnchor(); displayAnchor3.startAnchor = "$Docu$collapsibleS$"; displayAnchor3.endAnchor = "$Docu$collapsibleE$"; displayAnchor3.removeEndAnchor = true; displayAnchor3.removeStartAnchor = true; displayAnchor3.caseSensitive = true; displayAnchor3.displaySettings = new DisplaySettings(); displayAnchor3.displaySettings.display = "collapsible"; displayAnchor3.displaySettings.tableStyle = ""; displayAnchor3.displaySettings.cellStyle = ""; displayAnchor3.displaySettings.labelWhenOpened = ""; displayAnchor3.displaySettings.scrollToTopWhenOpened = true; displayAnchor3.displaySettings.hideLabelWhenOpened = false; displayAnchor3.displaySettings.displayLabel = @"<div style='display:flex;flex-flow:row wrap;align-items:center;min-height:40px;border-top:solid 1px #dedede;font-size:24px;color:#9d2624'><div style = 'flex:none;width:90%;padding:5px;'>Declaration Of Independence</div><div style='width:10%;text-align:right;padding:5px;'><a><i class='icon icon-caret-large-down' style='color:#000;'></i></a></div></div>"; document.htmlDefinition.displayAnchors.Add(displayAnchor3); DisplayAnchor displayAnchor4 = new DisplayAnchor(); displayAnchor4.startAnchor = "$Docu$inlineS$"; displayAnchor4.endAnchor = "$Docu$inlineE$"; displayAnchor4.removeEndAnchor = true; displayAnchor4.removeStartAnchor = true; displayAnchor4.caseSensitive = true; displayAnchor4.displaySettings = new DisplaySettings(); displayAnchor4.displaySettings.display = "inline"; displayAnchor4.displaySettings.labelWhenOpened = ""; displayAnchor4.displaySettings.scrollToTopWhenOpened = true; displayAnchor4.displaySettings.hideLabelWhenOpened = true; displayAnchor4.displaySettings.displayLabel = "Highlight the following section"; displayAnchor4.displaySettings.inlineOuterStyle = "background-color:#ff0; padding:10px;"; document.htmlDefinition.displayAnchors.Add(displayAnchor4); // Define an inline template InlineTemplate inline1 = new InlineTemplate(); inline1.sequence = "2"; inline1.recipients = new Recipients(); inline1.recipients.signers = new List <Signer>(); inline1.recipients.signers.Add(signer); // Add the inline template to a CompositeTemplate CompositeTemplate compositeTemplate1 = new CompositeTemplate(); compositeTemplate1.inlineTemplates = new List <InlineTemplate>(); compositeTemplate1.inlineTemplates.Add(inline1); compositeTemplate1.document = document; // Add compositeTemplate to the envelope createEnvelopeRequest.compositeTemplates = new List <CompositeTemplate>(); createEnvelopeRequest.compositeTemplates.Add(compositeTemplate1); createEnvelopeRequest.brandId = ConfigurationManager.AppSettings["MomentumBrandID"]; string output = JsonConvert.SerializeObject(createEnvelopeRequest); // Specify a unique boundary string that doesn't appear in the json or document bytes. string Boundary = "MY_BOUNDARY"; // Set the URI HttpWebRequest request = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/vdev/accounts/" + ConfigurationManager.AppSettings["API.AccountId"] + "/envelopes") as HttpWebRequest; // Set the method request.Method = "POST"; // Set the authentication header request.Headers["X-DocuSign-Authentication"] = GetSecurityHeader(); // Set the overall request content type aand boundary string request.ContentType = "multipart/form-data; boundary=" + Boundary; request.Accept = "application/json"; // Start forming the body of the request Stream reqStream = request.GetRequestStream(); // write boundary marker between parts WriteStream(reqStream, "\n--" + Boundary + "\n"); // write out the json envelope definition part WriteStream(reqStream, "Content-Type: application/json\n"); WriteStream(reqStream, "Content-Disposition: form-data\n"); WriteStream(reqStream, "\n"); // requires an empty line between the header and the json body WriteStream(reqStream, output); // write out the form bytes for the first form WriteStream(reqStream, "\n--" + Boundary + "\n"); WriteStream(reqStream, "Content-Type: application/pdf\n"); WriteStream(reqStream, "Content-Disposition: file; filename=\"Sample_Form\"; documentId=1\n"); WriteStream(reqStream, "\n"); if (File.Exists(Server.MapPath("~/App_Data/kitchensink.pdf"))) { // Read the file contents and write them to the request stream byte[] buf = new byte[4096]; int len; // read contents of document into the request stream FileStream fileStream = File.OpenRead(Server.MapPath("~/App_Data/kitchensink.pdf")); while ((len = fileStream.Read(buf, 0, 4096)) > 0) { reqStream.Write(buf, 0, len); } fileStream.Close(); } // wrte the end boundary marker - ensure that it is on its own line WriteStream(reqStream, "\n--" + Boundary + "--"); WriteStream(reqStream, "\n"); try { HttpWebResponse response = request.GetResponse() as HttpWebResponse; if (response.StatusCode == HttpStatusCode.Created) { byte[] responseBytes = new byte[response.ContentLength]; using (var reader = new System.IO.BinaryReader(response.GetResponseStream())) { reader.Read(responseBytes, 0, responseBytes.Length); } string responseText = Encoding.UTF8.GetString(responseBytes); CreateEnvelopeResponse createEnvelopeResponse = new CreateEnvelopeResponse(); createEnvelopeResponse = JsonConvert.DeserializeObject <CreateEnvelopeResponse>(responseText); if (createEnvelopeResponse.status.Equals("sent")) { // Now that we have created the envelope, get the recipient token for the first signer String url = Request.Url.AbsoluteUri; RecipientViewRequest recipientViewRequest = new RecipientViewRequest(); recipientViewRequest.authenticationMethod = "email"; recipientViewRequest.clientUserId = signer.clientUserId; recipientViewRequest.email = email.Value; recipientViewRequest.returnUrl = url.Substring(0, url.LastIndexOf("/")) + "/ConfirmationScreen.aspx"; recipientViewRequest.userName = firstname.Value + " " + lastname.Value; HttpWebRequest request2 = HttpWebRequest.Create(ConfigurationManager.AppSettings["DocuSignServer"] + "/restapi/v2/accounts/" + ConfigurationManager.AppSettings["API.TemplatesAccountID"] + "/envelopes/" + createEnvelopeResponse.envelopeId + "/views/recipient") as HttpWebRequest; request2.Method = "POST"; // Set the authenticationheader request2.Headers["X-DocuSign-Authentication"] = GetSecurityHeader(); request2.Accept = "application/json"; request2.ContentType = "application/json"; Stream reqStream2 = request2.GetRequestStream(); WriteStream(reqStream2, JsonConvert.SerializeObject(recipientViewRequest)); HttpWebResponse response2 = request2.GetResponse() as HttpWebResponse; responseBytes = new byte[response2.ContentLength]; using (var reader = new System.IO.BinaryReader(response2.GetResponseStream())) { reader.Read(responseBytes, 0, responseBytes.Length); } string response2Text = Encoding.UTF8.GetString(responseBytes); RecipientViewResponse recipientViewResponse = new RecipientViewResponse(); recipientViewResponse = JsonConvert.DeserializeObject <RecipientViewResponse>(response2Text); Response.Redirect(recipientViewResponse.url); } } } catch (WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError) { HttpWebResponse response = (HttpWebResponse)ex.Response; using (var reader = new System.IO.StreamReader(ex.Response.GetResponseStream(), UTF8Encoding.UTF8)) { string errorMess = reader.ReadToEnd(); log4net.ILog logger = log4net.LogManager.GetLogger(typeof(KitchenSink)); logger.Info("\n----------------------------------------\n"); logger.Error("DocuSign Error: " + errorMess); logger.Error(ex.StackTrace); Response.Write(ex.Message); } } else { log4net.ILog logger = log4net.LogManager.GetLogger(typeof(KitchenSink)); logger.Info("\n----------------------------------------\n"); logger.Error("WebRequest Error: " + ex.Message); logger.Error(ex.StackTrace); Response.Write(ex.Message); } } }