如何从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
相关产品推荐
相关产品推荐

