Exemplo n.º 1
0
        /// <summary>
        /// Creates an envelope and adds a recipient that is to be authenticated using either a phone call or an SMS (text) message.
        /// </summary>
        /// <param name="signerEmail">Email address for the signer</param>
        /// <param name="signerName">Full name of the signer</param>
        /// <param name="accessToken">Access Token for API call (OAuth)</param>
        /// <param name="basePath">BasePath for API calls (URI)</param>
        /// <param name="accountId">The DocuSign Account ID (GUID or short version) for which the APIs call would be made</param>
        /// <param name="countryAreaCode">Country code for the phone number used to verify the recipient/param>
        /// <param name="phoneNumber">Phone number used to verify the recipient</param>
        /// <param name="docPdf">String of bytes representing the document (pdf)</param>
        /// <returns>EnvelopeId for the new envelope</returns>
        public static string CreateEnvelopeWithRecipientUsingPhoneAuth(string signerEmail, string signerName, string accessToken, string basePath, string accountId, string countryAreaCode, string phoneNumber, string docPdf)
        {
            // Construct your API headers
            // Step 2 start
            var apiClient = new ApiClient(basePath);

            apiClient.Configuration.DefaultHeader.Add("Authorization", "Bearer " + accessToken);
            // Step 2 end


            // Step 3 start
            var accountsApi = new AccountsApi(apiClient);
            AccountIdentityVerificationResponse response = accountsApi.GetAccountIdentityVerification(accountId);
            var phoneAuthWorkflow = response.IdentityVerification.FirstOrDefault(x => x.DefaultName == "Phone Authentication");

            // Step 3 end
            if (phoneAuthWorkflow == null)
            {
                throw new ApiException(0, "IDENTITY_WORKFLOW_INVALID_ID");
            }
            string workflowId = phoneAuthWorkflow.WorkflowId;

            // Construct your envelope JSON body
            // Step 4 start
            EnvelopeDefinition env = new EnvelopeDefinition()
            {
                EnvelopeIdStamping = "true",
                EmailSubject       = "Please Sign",
                EmailBlurb         = "Sample text for email body",
                Status             = "Sent"
            };

            byte[] buffer = System.IO.File.ReadAllBytes(docPdf);

            // Add a document
            Document doc1 = new Document()
            {
                DocumentId     = "1",
                FileExtension  = "pdf",
                Name           = "Lorem",
                DocumentBase64 = Convert.ToBase64String(buffer)
            };

            // Create your signature tab
            env.Documents = new List <Document> {
                doc1
            };
            SignHere signHere1 = new SignHere
            {
                AnchorString  = "/sn1/",
                AnchorUnits   = "pixels",
                AnchorXOffset = "10",
                AnchorYOffset = "20"
            };

            // Tabs are set per recipient/signer
            Tabs signer1Tabs = new Tabs
            {
                SignHereTabs = new List <SignHere> {
                    signHere1
                }
            };

            RecipientIdentityVerification workflow = new RecipientIdentityVerification()
            {
                WorkflowId   = workflowId,
                InputOptions = new List <RecipientIdentityInputOption> {
                    new RecipientIdentityInputOption
                    {
                        Name            = "phone_number_list",
                        ValueType       = "PhoneNumberList",
                        PhoneNumberList = new List <RecipientIdentityPhoneNumber>
                        {
                            new RecipientIdentityPhoneNumber
                            {
                                Number      = phoneNumber,
                                CountryCode = countryAreaCode,
                            }
                        }
                    }
                }
            };

            Signer signer1 = new Signer()
            {
                Name                 = signerName,
                Email                = signerEmail,
                RoutingOrder         = "1",
                Status               = "Created",
                DeliveryMethod       = "Email",
                RecipientId          = "1", //represents your {RECIPIENT_ID},
                Tabs                 = signer1Tabs,
                IdentityVerification = workflow,
            };

            Recipients recipients = new Recipients();

            recipients.Signers = new List <Signer> {
                signer1
            };
            env.Recipients = recipients;
            // Step 4 end

            // Call the eSignature REST API
            // Step 5 start
            EnvelopesApi    envelopesApi = new EnvelopesApi(apiClient);
            EnvelopeSummary results      = envelopesApi.CreateEnvelope(accountId, env);

            // Step 5 end
            return(results.EnvelopeId);
        }