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

如何从React.js前端填充DocuSign模板文档数据?

用DocuSign eSignature API从React表单填充模板字段

可用的API接口

有专门的接口可以实现这个需求:DocuSign eSignature的Envelopes: create接口。你可以基于预先创建的模板生成信封,同时将React表单的数据填充到模板的指定字段中。

注意:不能直接在React客户端调用DocuSign API——因为需要用到API密钥、集成密钥等敏感信息,必须通过自己的后端服务中转调用。

字段映射实现步骤

1. 模板准备(DocuSign控制台操作)

在DocuSign控制台创建模板时,给需要填充的字段设置唯一的Tab标签名(比如customer_fullname、billing_address),同时为签署方定义明确的角色名(比如Customer、Agent),这些名称是后续映射的关键。

2. 表单数据收集与提交(React端)

在React表单组件中收集用户输入的数据,提交时将数据发送到你的后端接口,而不是直接调用DocuSign API。示例代码:

import { useState } from 'react';
import axios from 'axios';

const SignForm = () => {
  const [formData, setFormData] = useState({
    customerName: '',
    customerEmail: '',
    billingAddress: ''
  });

  const handleChange = (e) => {
    setFormData({ ...formData, [e.target.name]: e.target.value });
  };

  const handleSubmit = async (e) => {
    e.preventDefault();
    try {
      await axios.post('/api/docusign/send', formData);
      alert('签署请求已发送');
    } catch (error) {
      console.error('提交失败:', error);
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <input name="customerName" onChange={handleChange} placeholder="姓名" required />
      <input name="customerEmail" onChange={handleChange} placeholder="邮箱" required type="email" />
      <textarea name="billingAddress" onChange={handleChange} placeholder="账单地址" required />
      <button type="submit">发送签署请求</button>
    </form>
  );
};

export default SignForm;

3. 后端映射与API调用

在你的后端服务中,将React传来的表单数据映射到DocuSign请求体的对应字段,调用Envelopes: create接口。示例请求体(Node.js环境):

const axios = require('axios');

const createEnvelope = async (formData) => {
  const docusignAuthToken = '你的授权Token'; // 通过OAuth或JWT获取
  const templateId = '你的模板ID';
  const accountId = '你的DocuSign账户ID';

  const payload = {
    status: 'sent', // 设为'draft'可保存草稿不发送
    templateId: templateId,
    templateRoles: [
      {
        email: formData.customerEmail,
        name: formData.customerName,
        roleName: 'Customer', // 必须和模板中定义的角色名完全匹配
        tabs: {
          textTabs: [
            {
              tabLabel: 'customer_fullname', // 必须和模板中设置的Tab标签名完全匹配
              value: formData.customerName
            },
            {
              tabLabel: 'billing_address',
              value: formData.billingAddress
            }
          ]
        }
      }
    ]
  };

  await axios.post(
    `https://demo.docusign.net/restapi/v2.1/accounts/${accountId}/envelopes`,
    payload,
    { headers: { Authorization: `Bearer ${docusignAuthToken}` } }
  );
};

关键注意事项

  • 角色名(roleName)和Tab标签名(tabLabel)必须与模板中的设置完全匹配,大小写敏感
  • 后端必须通过官方认证方式(JWT或OAuth)获取授权Token,不能在客户端暴露任何敏感凭证
  • 如果需要填充多种类型的字段(如复选框、日期),只需在tabs下对应添加checkboxTabs、dateTabs等数组即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:49:54