如何以编程方式使Salesforce中的DocuSign信封无效?

时间:2014-07-28 19:34:02

标签: salesforce docusignapi

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

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

我知道可以在Salesforce之外使用API​​,但我希望尽可能将整个流程保留在Salesforce中。

3 个答案:

答案 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工作流程。