能否通过DocuSign UI发送信封后在自有应用中签署合同?
DocuSign嵌入式签署需求实现问题解答
核心问题
Recipient View API(用于生成嵌入自有网站的签署链接)要求收件人必须配置clientUserId——这个字段是DocuSign识别“嵌入式收件人”的唯一标识。当前通过DocuSign UI发送信封时,默认不会给收件人添加该字段,因此无法调用API生成所需链接。
可行解决方案
需求完全可以实现,关键是给目标收件人补充clientUserId字段,具体有两种路径:
路径1:创建信封时直接添加clientUserId
- 如果能调整信封创建流程:
- 改用DocuSign API创建信封,在构造signer对象时明确传入
clientUserId(值建议用你方系统的用户唯一ID,确保同一信封内不重复); - 若坚持用DocuSign UI,可通过模板配置或自定义字段的方式,给目标收件人预设
clientUserId(部分DocuSign账户支持该配置)。
- 改用DocuSign API创建信封,在构造signer对象时明确传入
路径2:给已发送信封的收件人补加clientUserId
如果信封已经通过UI发出,可调用DocuSign的更新收件人API补加字段,步骤如下:
- 调用现有
getRecipient接口获取目标收件人的recipientId; - 调用新增的更新接口,给该收件人添加
clientUserId; - 完成更新后,再调用
createRecipientView接口即可生成嵌入链接。
更新收件人的示例代码:
export const updateRecipientClientUserId = async (envelopeId: string, recipientId: string, clientUserId: string) => { try { const response = await fetch( `${process.env.DOCUSIGN_BASE_URI}accounts/${process.env.DOCUSIGN_API_ACCOUNT_ID}/envelopes/${envelopeId}/recipients`, { method: "PUT", headers: config().headers, body: JSON.stringify({ signers: [{ recipientId: recipientId, clientUserId: clientUserId }] }) } ); return await response.json(); } catch (error) { console.error("Error updating recipient clientUserId:", error); throw error; } };
当前代码调整点
调用createRecipientView时,需确保传入的clientUserId与收件人实际配置的完全一致,否则API会返回错误。
内容的提问来源于stack exchange,提问作者Ry2254
相关产品推荐
相关产品推荐

