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

如何通过Java代码实现DocuSign在用户签名后代为自动签名

实现DocuSign自动签名的Java方案

核心思路

通过DocuSign Java SDK创建信封时,将你自己配置为自动签名收件人,同时设置收件人路由顺序:让目标用户先完成手动签名,用户操作完成后,系统自动替你完成签名并结束整个流程。

具体实现步骤

1. 准备SDK依赖

如果使用Maven,添加DocuSign官方SDK依赖:

<dependency>
    <groupId>com.docusign</groupId>
    <artifactId>docusign-esign-java</artifactId>
    <version>6.2.0</version> <!-- 使用最新稳定版 -->
</dependency>

2. 初始化API客户端

配置API客户端并完成授权(推荐用JWT授权实现服务端无交互操作):

import com.docusign.esign.api.EnvelopesApi;
import com.docusign.esign.client.ApiClient;
import com.docusign.esign.client.Configuration;
import com.docusign.esign.model.*;

import java.io.File;
import java.io.FileInputStream;
import java.util.Base64;
import java.util.List;

public class DocuSignAutoSignHandler {
    public static void main(String[] args) throws Exception {
        // 基础配置
        String accountId = "你的DocuSign账户ID";
        String accessToken = "通过JWT/集成密钥生成的访问令牌";
        String basePath = "https://demo.docusign.net/restapi"; // 生产环境替换为https://www.docusign.net/restapi

        // 初始化API客户端
        ApiClient apiClient = new ApiClient(basePath);
        apiClient.addDefaultHeader("Authorization", "Bearer " + accessToken);
        Configuration.setDefaultApiClient(apiClient);
        EnvelopesApi envelopesApi = new EnvelopesApi();

3. 上传生成的PDF文档

读取你生成的PDF文件,转为DocuSign可识别的Document对象:

// 读取本地生成的PDF文件(替换为你的文件路径)
        File pdfFile = new File("generated_confirmation.pdf");
        byte[] pdfBytes = new byte[(int) pdfFile.length()];
        try (FileInputStream fis = new FileInputStream(pdfFile)) {
            fis.read(pdfBytes);
        }

        Document document = new Document();
        document.setDocumentBase64(Base64.getEncoder().encodeToString(pdfBytes));
        document.setName("确认文档.pdf");
        document.setDocumentId("1");

4. 配置收件人与签名规则

关键配置:将你的收件人设置为autoSign: true,并指定路由顺序确保用户先签:

// 1. 添加需要手动签名的用户收件人
        Signer userSigner = new Signer();
        userSigner.setEmail("target_user@example.com");
        userSigner.setName("目标用户姓名");
        userSigner.setRecipientId("1");
        userSigner.setRoutingOrder("1"); // 用户优先签署

        // 给用户添加签名位置标签(调整坐标匹配PDF内容)
        SignHere userSignHere = new SignHere();
        userSignHere.setDocumentId("1");
        userSignHere.setPageNumber("1");
        userSignHere.setXPosition("150");
        userSignHere.setYPosition("200");
        userSignHere.setRecipientId("1");

        // 2. 添加自动签名的自己
        Signer selfSigner = new Signer();
        selfSigner.setEmail("your_email@example.com");
        selfSigner.setName("你的姓名");
        selfSigner.setRecipientId("2");
        selfSigner.setRoutingOrder("2"); // 用户签完后触发自动签名
        selfSigner.setAutoSign(true); // 启用自动签名

        // 给自己添加签名位置标签
        SignHere selfSignHere = new SignHere();
        selfSignHere.setDocumentId("1");
        selfSignHere.setPageNumber("1");
        selfSignHere.setXPosition("400");
        selfSignHere.setYPosition("200");
        selfSignHere.setRecipientId("2");

        // 绑定签名标签到对应收件人
        Tabs userTabs = new Tabs();
        userTabs.setSignHereTabs(List.of(userSignHere));
        userSigner.setTabs(userTabs);

        Tabs selfTabs = new Tabs();
        selfTabs.setSignHereTabs(List.of(selfSignHere));
        selfSigner.setTabs(selfTabs);

        // 组装收件人列表
        Recipients recipients = new Recipients();
        recipients.setSigners(List.of(userSigner, selfSigner));

5. 创建并发送信封

设置信封状态为sent,直接触发发送流程:

// 构造信封定义
        EnvelopeDefinition envelope = new EnvelopeDefinition();
        envelope.setEmailSubject("请签署确认文档");
        envelope.setDocuments(List.of(document));
        envelope.setRecipients(recipients);
        envelope.setStatus("sent"); // 立即发送信封

        // 发送信封并获取结果
        EnvelopeSummary summary = envelopesApi.createEnvelope(accountId, envelope);
        System.out.println("信封已发送,ID: " + summary.getEnvelopeId());
    }
}

关键注意事项

  • 身份验证要求:你的DocuSign账户必须完成身份验证(如DocuSign ID、数字证书验证),否则自动签名会失败。
  • 签名位置准确性:务必调整SignHere标签的X/Y坐标、页码,确保签名出现在PDF的正确位置。
  • JWT授权稳定性:服务端操作推荐用JWT授权方式,可实现长期无交互的令牌管理。
  • 测试环境验证:先在DocuSign Demo环境验证流程,确认自动签名正常后再切换到生产环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:01:27