You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于DocuSign功能及与现有C#项目集成的技术咨询

DocuSign功能可行性及实现方案(C#项目)

以下是针对你提出的四个功能点的可行性判断及具体实现方式:

1. 在客户端而非DocuSign网站签署文档

可行,使用DocuSign的**嵌入式签名(Embedded Signing)**功能即可实现:

  • 借助DocuSign .NET SDK创建签名信封,指定收件人采用客户端嵌入式签名模式
  • 调用API生成嵌入式签名的访问URL,将该URL嵌入到你的C#项目前端页面(可通过iframe或DocuSign客户端SDK加载)
  • 用户无需跳转至DocuSign官网,直接在你的页面内完成签名操作
  • 核心代码示例:
// 初始化API客户端
var apiClient = new ApiClient("https://demo.docusign.net/restapi");
apiClient.Configuration.DefaultHeader.Add("Authorization", $"Bearer {yourAccessToken}");

var envelopesApi = new EnvelopesApi(apiClient);

// 构建信封定义(需提前添加免责条款文档、设置收件人信息)
var envelopeDefinition = new EnvelopeDefinition
{
    EmailSubject = "请签署免责条款",
    Documents = new List<Document> { /* 你的免责条款文档配置 */ },
    Recipients = new Recipients
    {
        Signers = new List<Signer>
        {
            new Signer
            {
                Email = userEmail,
                Name = userName,
                RecipientId = "1",
                ClientUserId = userClientId // 标记客户端用户ID,用于嵌入式签名
            }
        }
    },
    Status = "sent"
};

// 创建信封
var envelopeSummary = await envelopesApi.CreateEnvelopeAsync(yourAccountId, envelopeDefinition);

// 生成嵌入式签名视图URL
var recipientViewRequest = new RecipientViewRequest
{
    ReturnUrl = "https://your-app-domain.com/sign-success", // 签名完成后跳转回你的页面
    AuthenticationMethod = "none",
    RecipientId = "1",
    UserName = userName,
    Email = userEmail,
    ClientUserId = userClientId
};

var viewUrl = await envelopesApi.CreateRecipientViewAsync(yourAccountId, envelopeSummary.EnvelopeId, recipientViewRequest);
// 将viewUrl返回给前端,嵌入iframe加载签名界面

2. 按客户ID/邮箱在DocuSign端存储签名文档至少3-5年

可行,通过以下方式实现:

  • 配置存储保留策略:登录DocuSign控制台,进入账户设置,配置信封保留规则,设置至少3-5年的存储期限(需账户管理员权限)
  • 添加自定义元数据:创建信封时,通过API添加自定义字段(如CustomerId),将客户ID/邮箱作为信封的元数据存储,方便后续检索
  • DocuSign默认会保留已完成的信封,只要账户有效且保留策略配置正确,即可满足存储要求

3. 通过API/Webhook查询特定客户ID/邮箱是否存在已签名文档

可行,两种实现方式可选:

  • API主动查询:使用DocuSign .NET SDK的ListStatusChangesAsync方法,通过过滤条件检索已完成的信封:
    var options = new EnvelopesApi.ListStatusChangesOptions
    {
        FromDate = DateTime.Now.AddYears(-5).ToString("yyyy-MM-dd"), // 限定查询时间范围
        Status = "completed",
        Email = userEmail // 按收件人邮箱过滤
        // 或按自定义字段过滤:CustomField = "CustomerId:12345"
    };
    var envelopes = await envelopesApi.ListStatusChangesAsync(yourAccountId, options);
    // 判断envelopes.Envelopes是否为空,即可知道是否存在已签名文档
    
  • Webhook(DocuSign Connect)被动通知:在DocuSign控制台配置Connect,当用户完成签名时,DocuSign会向你的C#项目后端发送回调通知,你可以在本地数据库记录客户ID/邮箱与信封ID的关联,后续直接查询本地记录更高效,同时可定期通过API同步DocuSign端数据

4. 删除指定已签名文档的选项

可行,但需注意操作限制:

  • 使用DocuSign .NET SDK的DeleteEnvelopeAsync方法,传入目标信封ID即可删除对应的已签名文档:
    await envelopesApi.DeleteEnvelopeAsync(yourAccountId, targetEnvelopeId);
    
  • 注意事项:删除操作不可逆;部分合规场景下(如金融、医疗行业)可能禁止删除已完成的签名文档,需提前确认账户权限及合规要求;可通过之前存储的客户ID/邮箱关联信息,定位到对应的信封ID执行删除操作

内容的提问来源于stack exchange,提问作者Ali Nayani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:03:23