基于Salesforce遗留版DocuSign,如何用Apex生成独立签名URL?
遗留版DocuSign eSignature for Salesforce生成独立签名URL方案
核心思路
遗留版中,DocuSign信封关联的收件人记录(dfds__Recipient__c)自带原生签名URL字段,无需依赖Salesforce内部会话,直接提取该字段即可得到外部可访问的独立链接。
具体实现步骤
创建信封并关联eSignature Contract
调用遗留版原生方法dfds__docusign_createenvelope,传入eSignature Contract ID作为sourceId,该方法支持直接以此作为信封数据源,完全兼容原有Quote Template生成的PDF文档:Id opportunityId = '传入的Opportunity ID'; // 替换为实际获取的ID // 执行你已有的eSignature Contract创建逻辑,获取其ID Id eSignatureContractId = createESignatureContract(opportunityId); // 调用遗留版方法创建并发送信封 dfds__Envelope__c envelope = dfds__docusign_createenvelope( eSignatureContractId, true, // 设置为true立即发送信封 false, null, null );提取独立签名URL
信封创建完成后,查询关联的收件人记录,读取dfds__Signing_URL__c字段值,该值即为DocuSign原生签名链接,可直接给外部用户打开使用:List<dfds__Recipient__c> signers = [ SELECT dfds__Signing_URL__c, dfds__Email__c FROM dfds__Recipient__c WHERE dfds__Envelope__c = :envelope.Id AND dfds__Recipient_Type__c = 'Signer' ]; // 按需筛选目标签名人的URL,比如按邮箱匹配 String externalSignUrl; for(dfds__Recipient__c signer : signers) { if(signer.dfds__Email__c == '目标签名人邮箱') { externalSignUrl = signer.dfds__Signing_URL__c; break; } }
关键注意事项
- 确保Apex类拥有
dfds__Recipient__c对象及dfds__Signing_URL__c字段的读权限 - 只有信封处于已发送状态时,
dfds__Signing_URL__c才会生成有效链接,草稿状态下该字段为空 - 多签名人场景下,需根据收件人标识(邮箱、姓名等)筛选对应签名URL
内容的提问来源于stack exchange,提问作者Mark Mulholland
相关产品推荐
相关产品推荐

