点击DocuSign URL按钮后如何更新Salesforce Opportunity字段?
解决Opportunity详情页DocuSign Gen按钮触发字段更新的问题
直接修改URL按钮的参数没法实现字段更新——URL按钮本质只是跳转请求,没有执行数据更新的能力。给你两个可行方案,按需选择:
方案一:点击按钮先更新字段,再跳转DocuSign Gen
适合需要提前设置固定字段值(比如给xyz__c标记"已触发文档生成")的场景:
- 新建Apex控制器,负责更新字段并生成跳转链接
public class DSGRedirectController { public PageReference redirectToDSG() { String oppId = ApexPages.currentPage().getParameters().get('oppId'); if(String.isNotBlank(oppId)) { Opportunity opp = [SELECT Id, xyz__c FROM Opportunity WHERE Id = :oppId LIMIT 1]; // 替换成你要设置的xyz__c具体值 opp.xyz__c = '文档生成中'; update opp; } // 复用你原来的DocuSign Gen URL逻辑 String sitePrefix = Site.getPrefix(); String dsgUrl = (sitePrefix == '/s' ? '/apex/dfsle__gendocumentgenerator' : sitePrefix + '/apex/dfsle__gendocumentgenerator'); PageReference dsgPage = new PageReference(dsgUrl); dsgPage.getParameters().put('sId', oppId); dsgPage.getParameters().put('templateId', 'a0KAs000003F4b4MAC'); dsgPage.getParameters().put('recordId', oppId); dsgPage.getParameters().put('title', 'AAF-Template'); return dsgPage; } }
- 创建Visualforce页面,绑定这个控制器(用来触发控制器逻辑)
<apex:page controller="DSGRedirectController" action="{!redirectToDSG}" />
- 修改原URL按钮的目标地址,指向这个新建的Visualforce页面,传递Opportunity ID:
{!URLFOR($Page.DSGRedirectPage, null, [oppId = Opportunity.Id])}
方案二:文档生成完成后更新关联字段(比如documentid__c)
如果documentid__c是要存储DocuSign生成的文档ID,就得用DocuSign Gen的回调机制,等文档生成成功后再更新:
- 新建Apex Rest类,接收DocuSign的回调数据并更新字段
@RestResource(urlMapping='/DSGCallback/*') global class DSGCallbackController { @HttpPost global static void handleCallback() { RestRequest req = RestContext.request; Map<String, Object> callbackData = (Map<String, Object>)JSON.deserializeUntyped(req.requestBody.toString()); // 从回调数据里提取关联的Opportunity ID和生成的文档ID String oppId = (String)callbackData.get('sId'); String docId = (String)callbackData.get('documentId'); if(String.isNotBlank(oppId) && String.isNotBlank(docId)) { Opportunity opp = new Opportunity(Id = oppId, documentid__c = docId); update opp; } } }
把这个Rest API的URL(格式类似
https://你的Salesforce域名/services/apexrest/DSGCallback)配置到DocuSign Gen模板的回调设置里,确保DocuSign有权访问该地址。权限配置:给按钮用户分配Apex类的访问权限,以及Opportunity的编辑权限,避免更新操作失败。
内容的提问来源于stack exchange,提问作者Dips
相关产品推荐
相关产品推荐

