我正在使用DocuSign For Salesforce应用。作为我们工作流程的一部分,我们在满足某些条件时创建包络,但如果不再满足条件,我需要能够通过Apex触发器使包络无效。
DocuSign应用程序的文档详细介绍了如何创建信封,但没有提到通过Apex取消信封。
我知道可以在Salesforce之外使用API,但我希望尽可能将整个流程保留在Salesforce中。
答案 0 :(得分:1)
这是一个简单的客户端,您可以使用它来从顶点取消信封。
public with sharing class DocusignClient {
private static final String USERNAME = Label.docusign_username;
private static final String PASSWORD = Label.docusign_password;
private static final String INTEGRATOR_KEY = label.docusign_integratorKey;
private static final String ACCOUNT_ID = label.docusign_accountId;
// for production use 'www.docusign.net/restapi/v2'
// for sandbox use 'https://demo.docusign.net/restapi/v2'
private static final String BASE_URL = label.docusign_baseurl;
private static final String AUTH_TEMPLATE = '<DocuSignCredentials><Username>{0}</Username><Password>{1}</Password><IntegratorKey>{2}</IntegratorKey></DocuSignCredentials>';
private static final String STATUS_VOID = 'voided';
public HttpResponse voidEnvelope(String envelopeId, String voidReason){
String endpoint = String.format('{0}/accounts/{1}/envelopes/{2}', new String[]{BASE_URL, ACCOUNT_ID, envelopeId});
DocusignStatusRequest statusUpdate = new DocusignStatusRequest();
statusUpdate.status = STATUS_VOID;
statusUpdate.voidedReason = voidReason;
// initialize the api client for the desired environment
Http h = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint(endpoint);
request.setMethod('PUT');
request.setHeader('X-DocuSign-Authentication', String.format(AUTH_TEMPLATE, new String[]{USER_NAME,PASS_WORD,INTEGRATOR_KEY}));
request.setBody(JSON.serialize(statusUpdate));
return h.send(request);
}
public class DocusignStatusRequest{
public String status {get; set;}
public String voidedReason {get; set;}
}
}
答案 1 :(得分:0)
我不相信DocuSign for Salesforce应用程序能够使信封无效,您可以通过DocuSign控制台取消信封,也可以自己编写API调用以使其无效。
如果您可以通过Apex发出http请求,那么您应该可以轻松编写代码。要使信封无效,请为PUT
URI设置/accounts/{accountId}/envelopes/{envelopeId}
。这是电话的样子:
PUT https://{server}/restapi/{apiVersion}/accounts/{accountId}/envelopes/{envelopeId}
X-DocuSign-Authentication: <DocuSignCredentials><Username>{name}</Username><Password>{password}</Password><IntegratorKey>{integrator_key}</IntegratorKey></DocuSignCredentials>
Accept: application/json
Content-Type: application/json
{
"status":"voided",
"voidedReason":"voided for incorrect recipient"
}
答案 2 :(得分:0)
DocuSign for Salesforce托管软件包能够取消信封。但是,如何实现这一目标存在局限性。
安装托管包时,会创建一个名为 Void Envelope 的自定义按钮。目前仅适用于 DocuSign状态记录。
没有选项以编程方式使DocuSign for Salesforce托管包中的信封无效。
我不是Salesforce触发器或APEX类的专家,但您可以设置触发器或按钮,以便当您的信用部门将服务标记为“不再可用”时,它将重定向到相应的DocuSign状态记录 Void Envelope 按钮所在的位置。
或者,您可以像@Ergin建议的那样构建自己的API工作流程。