public static Envelope CreateEnvelopeFromServerTemplates( AccountCredentials accountCredentials, TemplateReference[] templateRefs, Recipient[] signers, EnvelopeInformation envelopeInfo, bool ActivateEnvelope) { DocuSignWeb.APIServiceSoap apiService = CreateApiProxy(accountCredentials); DocuSignWeb.EnvelopeStatus envStatus = apiService.CreateEnvelopeFromTemplates( templateRefs, signers, envelopeInfo, ActivateEnvelope); return(new Envelope(envStatus.EnvelopeID, accountCredentials)); }
/// <summary> /// Initial method / factory instanciation. /// In case the call is successfully completed you will get back an /// envelope object that can be used to work with this envelope. /// In case the envelope is misconstructed an exception will be thrown /// The IDs on both the recipients and documents are going to be altered /// after the call and the Tabs will be linked to the appropriate document and /// recipient ids. /// </summary> /// <param name="signers">A collection of signer objects that describes who is going to /// recieve the documents. You should have at least one signer. Every signer /// must have at least one signature.</param> /// <param name="documents">A set of documents with tabs attached /// to them. There should be at least one document in the envelope and there should be /// at least one tab on the envelope.</param> /// <param name="subject">Subject of the e-mail that the signers /// are going to receive</param> /// <param name="emailBlurb">e-mail blurb that will be inserted /// into the messages delivered to signers</param> /// <returns>An envelope object that can be used to work with this envelope.</returns> public static Envelope CreateEnvelopeFromTemplates(AccountCredentials accountCredentials, DocuSignWeb.Recipient[] signers, LinkedTemplateReferenceRoleAssignment[] roleAssignments, string template, string subject, string emailBlurb, DocuSignWeb.CustomField[] fields) { // // Assign sequential IDs to all the recipients // int nextRecipientId = 1; foreach (DocuSignWeb.Recipient recipient in signers) { recipient.ID = nextRecipientId.ToString(System.Globalization.CultureInfo.InvariantCulture); nextRecipientId++; } // // update the template references // TemplateReferenceRoleAssignment[] finalRoleAssignments = new TemplateReferenceRoleAssignment[roleAssignments.Length]; for (int i = 0; i < roleAssignments.Length; ++i) { roleAssignments[i].referenceRoleAssignment.RecipientID = roleAssignments[i].signer.ID; finalRoleAssignments[i] = roleAssignments[i].referenceRoleAssignment; } // // setting up the template // TemplateReference templateReference = new TemplateReference(); templateReference.Template = template; templateReference.TemplateLocation = TemplateLocationCode.SOAP; templateReference.RoleAssignments = finalRoleAssignments; // // Envelope wide information // DocuSignWeb.EnvelopeInformation envelopeInfo = new EnvelopeInformation(); envelopeInfo.AccountId = accountCredentials.AccountId; envelopeInfo.CustomFields = fields; envelopeInfo.EmailBlurb = emailBlurb; envelopeInfo.Subject = subject; DocuSignWeb.APIServiceSoap apiService = CreateApiProxy(accountCredentials); DocuSignWeb.EnvelopeStatus envStatus = apiService.CreateEnvelopeFromTemplates( new TemplateReference[] { templateReference }, signers, envelopeInfo, true); return(new Envelope(envStatus.EnvelopeID, accountCredentials)); }
protected void createEnvelope() { FileStream fs = null; try { String userName = ConfigurationManager.AppSettings["API.Email"]; String password = ConfigurationManager.AppSettings["API.Password"]; String integratorKey = ConfigurationManager.AppSettings["API.IntegratorKey"]; String auth = "<DocuSignCredentials><Username>" + userName + "</Username><Password>" + password + "</Password><IntegratorKey>" + integratorKey + "</IntegratorKey></DocuSignCredentials>"; ServiceReference1.DSAPIServiceSoapClient client = new ServiceReference1.DSAPIServiceSoapClient(); using (OperationContextScope scope = new System.ServiceModel.OperationContextScope(client.InnerChannel)) { HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty(); httpRequestProperty.Headers.Add("X-DocuSign-Authentication", auth); OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty; CompositeTemplate template = new CompositeTemplate(); // Set up the envelope EnvelopeInformation envInfo = new EnvelopeInformation(); envInfo.AutoNavigation = true; envInfo.AccountId = ConfigurationManager.AppSettings["API.AccountId"]; envInfo.Subject = "Dynamic Fields Example"; // Set up recipients Recipient[] recipients; if (jointEmail.Value.Trim().Equals("")) { recipients = new Recipient[1]; } else { recipients = new Recipient[2]; } recipients[0] = new Recipient(); recipients[0].ID = "1"; recipients[0].Email = email.Value; recipients[0].Type = RecipientTypeCode.Signer; recipients[0].UserName = firstname.Value + " " + lastname.Value; recipients[0].CaptiveInfo = new RecipientCaptiveInfo(); recipients[0].CaptiveInfo.ClientUserId = RandomizeClientUserID(); recipients[0].RoutingOrder = 1; recipients[0].RoleName = "Signer1"; // If there is a 2nd recipient, configure if (!jointEmail.Value.Equals("")) { recipients[1] = new Recipient(); recipients[1].ID = "2"; recipients[1].Email = jointEmail.Value; recipients[1].Type = RecipientTypeCode.Signer; recipients[1].UserName = jointFirstname.Value + " " + jointLastname.Value; recipients[1].RoleName = "Signer2"; recipients[1].RoutingOrder = 1; } //Configure the inline templates InlineTemplate inlineTemplate = new InlineTemplate(); inlineTemplate.Sequence = "1"; inlineTemplate.Envelope = new Envelope(); inlineTemplate.Envelope.Recipients = recipients; inlineTemplate.Envelope.AccountId = ConfigurationManager.AppSettings["API.AccountId"]; // Initialize tab properties Tab tab = new Tab(); tab.Type = TabTypeCode.SignHere; tab.XPosition = xPosition.Value; tab.YPosition = yPosition.Value; tab.TabLabel = tabName.Value; tab.RecipientID = "1"; tab.DocumentID = "1"; tab.Name = tabName.Value; tab.PageNumber = tabPage.Value; Tab tab2 = new Tab(); tab2.Type = TabTypeCode.DateSigned; tab2.XPosition = xPosition2.Value; tab2.YPosition = yPosition2.Value; tab2.TabLabel = tabName2.Value; tab2.RecipientID = "1"; tab2.DocumentID = "1"; tab2.Name = tabName2.Value; tab2.PageNumber = tabPage2.Value; inlineTemplate.Envelope.Tabs = new Tab[] { tab, tab2 }; template.InlineTemplates = new InlineTemplate[] { inlineTemplate }; // Configure the document template.Document = new Document(); template.Document.ID = "1"; template.Document.Name = "Sample Document"; BinaryReader binReader = null; String filename = uploadFile.Value; if (File.Exists(Server.MapPath("~/App_Data/" + filename))) { fs = new FileStream(Server.MapPath("~/App_Data/" + filename), FileMode.Open); binReader = new BinaryReader(fs); } byte[] PDF = binReader.ReadBytes(System.Convert.ToInt32(fs.Length)); template.Document.PDFBytes = PDF; template.Document.TransformPdfFields = true; template.Document.FileExtension = "pdf"; //Create envelope with all the composite template information EnvelopeStatus status = client.CreateEnvelopeFromTemplatesAndForms(envInfo, new CompositeTemplate[] { template }, true); RequestRecipientTokenAuthenticationAssertion assert = new RequestRecipientTokenAuthenticationAssertion(); assert.AssertionID = "12345"; assert.AuthenticationInstant = DateTime.Now; assert.AuthenticationMethod = RequestRecipientTokenAuthenticationAssertionAuthenticationMethod.Password; assert.SecurityDomain = "www.magicparadigm.com"; RequestRecipientTokenClientURLs clientURLs = new RequestRecipientTokenClientURLs(); clientURLs.OnAccessCodeFailed = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnAccessCodeFailed"; clientURLs.OnCancel = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnCancel"; clientURLs.OnDecline = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnDecline"; clientURLs.OnException = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnException"; clientURLs.OnFaxPending = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnFaxPending"; clientURLs.OnIdCheckFailed = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnIdCheckFailed"; clientURLs.OnSessionTimeout = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnSessionTimeout"; clientURLs.OnTTLExpired = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnTTLExpired"; clientURLs.OnViewingComplete = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnViewingComplete"; String url = Request.Url.AbsoluteUri; String recipientToken; clientURLs.OnSigningComplete = url.Substring(0, url.LastIndexOf("/")) + "/EmbeddedSigningComplete0.aspx?envelopeID=" + status.EnvelopeID; recipientToken = client.RequestRecipientToken(status.EnvelopeID, recipients[0].CaptiveInfo.ClientUserId, recipients[0].UserName, recipients[0].Email, assert, clientURLs); Session["envelopeID"] = status.EnvelopeID; if (!Request.Browser.Browser.Equals("InternetExplorer") && (!Request.Browser.Browser.Equals("Safari"))) { docusignFrame.Visible = true; docusignFrame.Src = recipientToken; } else // Handle IE differently since it does not allow dynamic setting of the iFrame width and height { docusignFrameIE.Visible = true; docusignFrameIE.Src = recipientToken; } } } catch (Exception ex) { // Log4Net Piece log4net.ILog logger = log4net.LogManager.GetLogger(typeof(DynamicFields)); logger.Info("\n----------------------------------------\n"); logger.Error(ex.Message); logger.Error(ex.StackTrace); Response.Write(ex.Message); } finally { if (fs != null) fs.Close(); } }
/// <summary> /// This method is used to create envelope besed on the give template /// </summary> /// <param name="identity"></param> /// <param name="signers"></param> /// <param name="roleAssignments"></param> /// <param name="template"></param> /// <param name="subject"></param> /// <param name="emailBlurb"></param> /// <param name="fields"></param> /// <param name="password"></param> /// <returns></returns> public static string CreateEnvelopeFromTemplates(Account identity, Recipient[] signers, string template, string subject, string emailBlurb, string password, string url, bool isEmbedded) { // // update the template references // List <TemplateReferenceRoleAssignment> finalRoleAssignments = new List <TemplateReferenceRoleAssignment>(); foreach (Recipient recipient in signers) { TemplateReferenceRoleAssignment templateReferenceRoleAssignment = new TemplateReferenceRoleAssignment(); templateReferenceRoleAssignment.RecipientID = recipient.ID; templateReferenceRoleAssignment.RoleName = recipient.RoleName; finalRoleAssignments.Add(templateReferenceRoleAssignment); } // // setting up the template // TemplateReference templateReference = new TemplateReference(); templateReference.Template = template; templateReference.TemplateLocation = TemplateLocationCode.SOAP; templateReference.RoleAssignments = finalRoleAssignments.ToArray(); // // Envelope wide information // EnvelopeInformation envelopeInfo = new EnvelopeInformation(); envelopeInfo.AccountId = identity.AccountID; envelopeInfo.EmailBlurb = emailBlurb; envelopeInfo.Subject = subject; APIServiceSoap apiService = CreateApiProxy(identity, password); EnvelopeStatus envStatus = apiService.CreateEnvelopeFromTemplates( new TemplateReference[] { templateReference }, signers, envelopeInfo, true); if (!isEmbedded) { return(envStatus.EnvelopeID); } else { RequestRecipientTokenAuthenticationAssertion assert = new RequestRecipientTokenAuthenticationAssertion(); assert.AssertionID = System.DateTime.Now.Ticks.ToString(); assert.AuthenticationInstant = System.DateTime.Now; assert.AuthenticationMethod = RequestRecipientTokenAuthenticationAssertionAuthenticationMethod.Password; assert.SecurityDomain = "TODO-replace-with-your-app-name"; //These are Urls to which Docusign will redirect string retUrl = url.ToLower(); RequestRecipientTokenClientURLs clientURLs = new RequestRecipientTokenClientURLs(); clientURLs.OnSigningComplete = retUrl + "?event=SignComplete&envelopeID=" + envStatus.EnvelopeID; clientURLs.OnAccessCodeFailed = retUrl + "?event=AccessCode&envelopeID=" + envStatus.EnvelopeID; clientURLs.OnCancel = retUrl + "?event=Cancel&envelopeID=" + envStatus.EnvelopeID; clientURLs.OnDecline = retUrl + "?event=Decline&envelopeID=" + envStatus.EnvelopeID; clientURLs.OnException = retUrl + "?event=Exception&envelopeID=" + envStatus.EnvelopeID; clientURLs.OnIdCheckFailed = retUrl + "?event=IDCheck&envelopeID=" + envStatus.EnvelopeID; clientURLs.OnSessionTimeout = retUrl + "?event=Timeout&envelopeID=" + envStatus.EnvelopeID; clientURLs.OnTTLExpired = retUrl + "?event=TTLExpired&envelopeID=" + envStatus.EnvelopeID; clientURLs.OnViewingComplete = retUrl + "?event=ViewComplete&envelopeID=" + envStatus.EnvelopeID; string token = apiService.RequestRecipientToken(envStatus.EnvelopeID, signers[0].CaptiveInfo.ClientUserId, signers[0].UserName, signers[0].Email, assert, clientURLs); return(token); } }
protected void createEnvelope() { FileStream fs = null; try { String userName = ConfigurationManager.AppSettings["API.Email"]; String password = ConfigurationManager.AppSettings["API.Password"]; String integratorKey = ConfigurationManager.AppSettings["API.IntegratorKey"]; String auth = "<DocuSignCredentials><Username>" + userName + "</Username><Password>" + password + "</Password><IntegratorKey>" + integratorKey + "</IntegratorKey></DocuSignCredentials>"; ServiceReference1.DSAPIServiceSoapClient client = new ServiceReference1.DSAPIServiceSoapClient(); using (OperationContextScope scope = new System.ServiceModel.OperationContextScope(client.InnerChannel)) { HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty(); httpRequestProperty.Headers.Add("X-DocuSign-Authentication", auth); OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty; CompositeTemplate template = new CompositeTemplate(); // Set up recipients Recipient[] recipients; if (jointEmail.Value.Trim().Equals("")) { recipients = new Recipient[1]; } else { recipients = new Recipient[2]; } recipients[0] = new Recipient(); recipients[0].ID = "1"; recipients[0].Email = email.Value; recipients[0].Type = RecipientTypeCode.Signer; recipients[0].UserName = firstname.Value + " " + lastname.Value; recipients[0].CaptiveInfo = new RecipientCaptiveInfo(); recipients[0].CaptiveInfo.ClientUserId = RandomizeClientUserID(); recipients[0].RoutingOrder = 1; recipients[0].RoleName = "Signer1"; // If there is a 2nd recipient, configure if (!jointEmail.Value.Equals("")) { recipients[1] = new Recipient(); recipients[1].ID = "2"; recipients[1].Email = jointEmail.Value; recipients[1].Type = RecipientTypeCode.Signer; recipients[1].UserName = jointFirstname.Value + " " + jointLastname.Value; recipients[1].RoleName = "Signer2"; recipients[1].RoutingOrder = 1; } //Configure the inline templates InlineTemplate inlineTemplate = new InlineTemplate(); inlineTemplate.Sequence = "2"; inlineTemplate.Envelope = new Envelope(); inlineTemplate.Envelope.Recipients = recipients; inlineTemplate.Envelope.AccountId = ConfigurationManager.AppSettings["API.TemplatesAccountId"]; template.InlineTemplates = new InlineTemplate[] { inlineTemplate }; // Configure the document template.Document = new Document(); template.Document.ID = "1"; template.Document.Name = "Sample Document"; BinaryReader binReader = null; String filename = uploadFile.Value; if (File.Exists(Server.MapPath("~/App_Data/" + filename))) { fs = new FileStream(Server.MapPath("~/App_Data/" + filename), FileMode.Open); binReader = new BinaryReader(fs); } byte[] PDF = binReader.ReadBytes(System.Convert.ToInt32(fs.Length)); template.Document.PDFBytes = PDF; template.Document.TransformPdfFields = true; template.Document.FileExtension = "pdf"; ServerTemplate serverTemplate = new ServerTemplate(); serverTemplate.Sequence = "1"; serverTemplate.TemplateID = templatesList.SelectedValue; template.ServerTemplates = new ServerTemplate[] { serverTemplate }; // Set up the envelope EnvelopeInformation envInfo = new EnvelopeInformation(); envInfo.AutoNavigation = true; envInfo.AccountId = ConfigurationManager.AppSettings["API.AccountId"]; envInfo.Subject = "Templates Example"; //Create envelope with all the composite template information EnvelopeStatus status = client.CreateEnvelopeFromTemplatesAndForms(envInfo, new CompositeTemplate[] { template }, true); RequestRecipientTokenAuthenticationAssertion assert = new RequestRecipientTokenAuthenticationAssertion(); assert.AssertionID = "12345"; assert.AuthenticationInstant = DateTime.Now; assert.AuthenticationMethod = RequestRecipientTokenAuthenticationAssertionAuthenticationMethod.Password; assert.SecurityDomain = "www.magicparadigm.com"; RequestRecipientTokenClientURLs clientURLs = new RequestRecipientTokenClientURLs(); clientURLs.OnAccessCodeFailed = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnAccessCodeFailed"; clientURLs.OnCancel = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnCancel"; clientURLs.OnDecline = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnDecline"; clientURLs.OnException = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnException"; clientURLs.OnFaxPending = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnFaxPending"; clientURLs.OnIdCheckFailed = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnIdCheckFailed"; clientURLs.OnSessionTimeout = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnSessionTimeout"; clientURLs.OnTTLExpired = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnTTLExpired"; clientURLs.OnViewingComplete = ConfigurationManager.AppSettings["RecipientTokenClientURLsPrefix"] + "?envelopeId=" + status.EnvelopeID + "&event=OnViewingComplete"; String url = Request.Url.AbsoluteUri; String recipientToken; clientURLs.OnSigningComplete = url.Substring(0, url.LastIndexOf("/")) + "/EmbeddedSigningComplete0.aspx?envelopeID=" + status.EnvelopeID; recipientToken = client.RequestRecipientToken(status.EnvelopeID, recipients[0].CaptiveInfo.ClientUserId, recipients[0].UserName, recipients[0].Email, assert, clientURLs); Session["envelopeID"] = status.EnvelopeID; if (!Request.Browser.Browser.Equals("InternetExplorer") && (!Request.Browser.Browser.Equals("Safari"))) { docusignFrame.Visible = true; docusignFrame.Src = recipientToken; } else // Handle IE differently since it does not allow dynamic setting of the iFrame width and height { docusignFrameIE.Visible = true; docusignFrameIE.Src = recipientToken; } } } catch (Exception ex) { // Log4Net Piece log4net.ILog logger = log4net.LogManager.GetLogger(typeof(_Default)); logger.Info("\n----------------------------------------\n"); logger.Error(ex.Message); logger.Error(ex.StackTrace); Response.Write(ex.Message); } finally { if (fs != null) { fs.Close(); } } }