求C#版DocuSign邮件签署API的最简独立控制器实现示例
DocuSign eSignature 邮件签署 C# 最简单Controller实现
前置依赖
- 安装官方NuGet包:
Install-Package DocuSign.eSign - 提前准备以下固定值(均从DocuSign开发者后台/授权流程获取):
- 授权后生成的AccessToken(DocuSign返回,有效期8小时)
- 你的DocuSign账户AccountId(后台「我的账户」页面可查)
- 集成密钥(Integration Key,后台创建应用时生成)
- 待签署的本地测试文档路径(仅支持PDF/Word/HTML等DocuSign兼容格式)
- 签署人姓名、邮箱地址
最简Controller实现
所有逻辑均封装在单个动作方法内,无外部DI依赖、无Session/User等辅助类依赖:
using Microsoft.AspNetCore.Mvc; using DocuSign.eSign.Api; using DocuSign.eSign.Client; using DocuSign.eSign.Model; using System.IO; [ApiController] [Route("[controller]")] public class DocusignTestController : ControllerBase { [HttpGet("SendSignRequest")] public IActionResult SendSignRequest() { // -------------------------- 请修改以下配置为你自己的参数 -------------------------- const string accessToken = "你的DocuSign AccessToken"; const string accountId = "你的DocuSign AccountId"; const string signerName = "张三"; const string signerEmail = "zhangsan@example.com"; const string documentPath = @"C:\test\test.pdf"; const string docName = "测试合同.pdf"; // DocuSign请求地址,沙箱环境用https://demo.docusign.net/restapi,生产环境用对应区域地址 const string basePath = "https://demo.docusign.net/restapi"; // -------------------------------------------------------------------------------- // 1. 初始化DocuSign API客户端 var apiClient = new ApiClient(basePath); apiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + accessToken); var envelopesApi = new EnvelopesApi(apiClient); // 2. 读取待签署文档并构造文档对象 byte[] fileBytes = System.IO.File.ReadAllBytes(documentPath); var document = new Document { DocumentBase64 = System.Convert.ToBase64String(fileBytes), Name = docName, FileExtension = Path.GetExtension(documentPath).TrimStart('.'), DocumentId = "1" // 多文档时按顺序编号即可 }; // 3. 构造签署人信息与签署位置 var signer = new Signer { Email = signerEmail, Name = signerName, RecipientId = "1", // 多签署人时按顺序编号 RoutingOrder = "1" // 签署顺序,单签署人固定为1即可 }; // 配置签署位置:这里指定在文档第1页距离左上角100px、100px的位置加签署框 var signHere = new SignHere { XPosition = "100", YPosition = "100", DocumentId = "1", PageNumber = "1" }; signer.Tabs = new Tabs { SignHereTabs = new List<SignHere> { signHere } }; var recipients = new Recipients { Signers = new List<Signer> { signer } }; // 4. 构造信封对象,状态设为sent直接发送,设为created则为草稿 var envelopeDefinition = new EnvelopeDefinition { EmailSubject = "请签署测试合同", Documents = new List<Document> { document }, Recipients = recipients, Status = "sent" }; // 5. 调用API发送签署请求 EnvelopeSummary result = envelopesApi.CreateEnvelope(accountId, envelopeDefinition); return Ok(new { EnvelopeId = result.EnvelopeId, Msg = "签署请求已发送至签署人邮箱" }); } }
核心逻辑说明
官方示例中的User、Session、RequestItems等均为Demo封装的通用辅助类,不属于API调用的必要依赖。核心必填参数仅为AccessToken、AccountId、文档信息、签署人信息四类,其余所有封装逻辑均可根据业务需求自行实现。
内容的提问来源于stack exchange,提问作者Manish
相关产品推荐
相关产品推荐

