如何在Salesforce中以编程方式取消DocuSign信封?



我正在使用DocuSign For Salesforce应用程序。作为我们工作流程的一部分,我们在满足某些条件时创建信封,但如果不再满足条件,我需要能够通过Apex触发器使信封无效。

DocuSign应用程序的文档详细介绍了如何创建信封,但没有提到通过Apex取消信封。

我知道可以在Salesforce之外使用API,但如果可能的话,我希望将整个过程保留在Salesforce中。

这是一个简单的客户端,您可以使用它从apex取消信封。

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;}
    }
}

我不相信DocuSign for Salesforce应用程序有取消信封的能力,你可以通过DocuSign控制台取消信封,或者自己编写API调用来取消。

如果您可以通过Apex发出http请求,那么您应该能够轻松地编写此代码。要使信封无效,您可以对/accounts/{accountId}/envelopes/{envelopeId} URI进行PUT。下面是调用的样子:

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"
}

DocuSign for Salesforce管理的包能够取消信封。然而,如何做到这一点是有限制的。

当托管包被安装时,会创建一个名为Void Envelope的定制按钮。这目前只适用于DocuSign Status记录。

在Salesforce管理包的DocuSign中没有以编程方式取消信封的选项。

我不是Salesforce触发器或APEX类方面的专家,但是您可以设置一个触发器或按钮,当您的信用部门将服务标记为"不再可用"时,它将重定向到适当的DocuSign状态记录,其中Void Envelope按钮驻留。

或者,你可以像@Ergin建议的那样构建自己的API工作流。

最新更新