Loading
API de firma electrónica

API de firma electrónica

Puede utilizar las API de firma electrónica de forma independiente para llamar a las funciones Salesforce Contracts sin utilizar la interfaz de usuario. Estas API son altamente personalizables. Puede enviar uno o más documentos generados para la firma electrónica. Sus documentos generados pueden asociarse con objetos estándar o personalizados.

Para obtener información acerca de los permisos requeridos, consulte Conjuntos de permisos para DocuSign.

Para obtener información acerca de los límites reguladores de Apex, consulte Reguladores y límites de ejecución.

Para obtener información sobre las API de firma electrónica, consulte Recursos de firma electrónica.

Método Descripción
getRecipients

Utilice este método para ver una lista de destinatarios de documentos.

Para agregar una lógica personalizada a través de una clase personalizada:

  • Cree una clase Apex global que implemente ind_docgen_api.OpenInterface.

  • Agregue su lógica dentro del método invokeMethod().

  • Agregue la clase a su organización.

  • Llame a la API utilizando el parámetro customClass en la URL. Ejemplo:

    /connect/e-sign/recipients?sourceObjectId=<sourceObjectId>&recipientSelector=<recipientCustomClassName>

Para personalizar cómo se devuelven los destinatarios, implemente la interfaz ind_docgen_api.OpenInterface en una clase Apex global. Esta es una implementación de muestra que obtiene todos los contactos con el saludo "Sr.":

public class GetEsignRecipients implements ind_docgen_api.OpenInterface {

    private static final String ERROR_UNSUPPORTED = 'Unsupported method. Only method [getRecipients] is supported.';
    private static final String ERROR_NO_RECIPIENTS = 'Recipient data not found';

    public Boolean invokeMethod(String methodName, Map<String, Object> inputMap, Map<String, Object> outMap) {
        system.debug(inputMap);
        Boolean success;

        if (methodName == 'getRecipients') {
            success = getRecipients(inputMap, outMap);
        }  else {
            throw new CustomGetRecipientsException(ERROR_UNSUPPORTED);
        }

        System.debug('invokeMethod:outMap -> ' + outMap);
        System.debug('invokeMethod:success -> ' + success);
        return success;
    }

    private Boolean getRecipients(Map<String, Object> input, Map<String, Object> output) {
        Boolean success = false;

        Id sourceObjectId = (Id) input.get('sourceObjectId');
        
        List<Map<String, Object>> recipients = new List<Map<String, Object>>();
        
        Map<String, Object> recipient = new Map<String, Object>();
        recipient.put('name', 'John Peter');
        recipient.put('email', 'johnxxxx@gmail.com');
        recipient.put('id', '1');
        
        Map<String, Object> additionalFields = new Map<String, Object>();
        additionalFields.put('routingOrder', '1');
        additionalFields.put('routingNumber', '1');
        additionalFields.put('signerRole', '1');
        additionalFields.put('recipientType','Signer'); // Case Sensitive
        additionalFields.put('recipientLocale','English (U.S.)');
        //We need to send recipientLocale as same as What we see in the Salesforce UI While Manually Adding Recipient Locale 
        recipient.put('additionalFields', additionalFields);
        recipients.add(recipient);    
             
        output.put('recipients', recipients);
        
        success = true;
        System.debug('getRecipients:output -> ' + output);
        System.debug('getRecipients:success -> ' + success);
        
        return success;

    }
    
    class CustomGetRecipientsException extends Exception {

    }
}

recipientSelector y sourceObjectId son parámetros opcionales. El parámetro sourceObjectId se pasa como entrada a la clase Apex y se consume según sea necesario.

Para configurar la clase personalizada utilizando metadatos, agregue un registro en el objeto Configuración de firma electrónica con estos valores:

  • Proveedor: Docusignar

  • Tipo de grupo: Tipo de grupo

  • Tipo de configuración: Clase personalizada Destinatarios

  • Valor de configuración: Su nombre de clase personalizado. >.

getDocuments

Utilice este método para ver una lista de documentos enviados para firma electrónica.

Si el parámetro IsAssociatedWithClm es:

  • true: la API obtiene documentos de contrato.

  • false: la API obtiene documentos solo desde Notas y Archivos adjuntos.

Para agregar una lógica personalizada a través de una clase personalizada:

  • Cree una clase Apex global que implemente ind_docgen_api.OpenInterface.

  • Agregue su lógica dentro del método invokeMethod().

  • Agregue la clase a su organización.

  • Llame a la API utilizando el parámetro customClass en la URL. Ejemplo:

    /connect/e-sign/documents?sourceObjectId=<sourceObjectId>&documentSelector=<customClassName>

Para personalizar cómo se devuelven los documentos para eSignature, implemente la interfaz ind_docgen_api.OpenInterface en una clase Apex global. A continuación se incluye un ejemplo de implementación que obtiene documentos de registros ContentVersion vinculados al sourceObjectId concreto:

public class GetEsignDocuments implements ind_docgen_api.OpenInterface {
    private static final String ERROR_UNSUPPORTED = 'Unsupported method. Only method [getDocuments] is supported.';

    public Boolean invokeMethod(String methodName, Map<String, Object> request, Map<String, Object> outMap) {
        Boolean success = true;
        if (methodName == 'getDocuments') {
            success = executeAction(request, outMap);
        } else {
             throw new CustomGetDocumentsException(ERROR_UNSUPPORTED);
         }
        return success;
    }

    private Boolean executeAction(Map<String, Object> inputMap, Map<String, Object> outMap) {
        Boolean success = false;
        System.debug('getDocuments:inputMap -> ' + inputMap);
        Id contractId = (Id)inputMap.get('sourceObjectId');
        
        // Fetch contract master document
        ContentDocument contentDocument = getMasterContractDocument(contractId);
        
        List<Map<String, Object>> documents = new List<Map<String, Object>>();
        Map<String, Object> document = new Map<String, Object>();
        document.put('fileExtension', contentDocument.FileExtension);
        document.put('name',contentDocument.Title);
        String contentVersionId = Id.valueOf(contentDocument.LatestPublishedVersionId);
        document.put('sourceId', contentVersionId);
        document.put('sourceType','Content');
        
        Map<String, String> additionalFields = new Map<String, String>();
        additionalFields.put('documentId', '1');
        document.put('additionalFields', additionalFields);
        documents.add(document);
        outMap.put('documents', documents);

        success = true;
        System.debug('getDocuments:outMap -> ' + outMap);
        System.debug('getDocuments:success -> ' + success);
        return success;
    }
    
    private ContentDocument getMasterContractDocument(Id contractId) {
        // Fetch latest contract document version
        ContractDocumentVersion latestCdv = [SELECT Id FROM ContractDocumentVersion WHERE contractId=:contractId ORDER BY VersionNumber DESC LIMIT 1];
        
        // Fetch latest contendocumentId associated with latest contract document version
        ContractDocVerContentDoc contractDoc = [SELECT ContentDocumentId FROM ContractDocVerContentDoc WHERE ContractDocumentVersionId=:latestCdv.Id LIMIT 1];
        
        // Load content document details
        ContentDocument contentDocument = [SELECT FileExtension, FileType, Id, LatestPublishedVersionId, Title FROM ContentDocument WHERE Id=:contractDoc.ContentDocumentId LIMIT 1];
        return contentDocument;    
    }

    class CustomGetDocumentsException extends Exception {

    }
}

documentSelector es un parámetro opcional.

Para configurar la clase personalizada utilizando metadatos, agregue un registro en el objeto Configuración de firma electrónica con estos valores:

  • Proveedor: Docusignar

  • Tipo de grupo: Tipo de grupo

  • Tipo de configuración: Clase personalizada Documentos

  • Valor de configuración: Su nombre de clase personalizado.

No necesita pasar el nombre de clase personalizado en la URL de API.

getNotificationSettings

Utilice este método para ver la configuración de recordatorios y notificaciones de caducidad. sourceObjectId es un parámetro obligatorio que devuelve la configuración de notificación respectiva para un objeto.

La API lee los parámetros de notificación desde estos parámetros de configuración:

  • Si solo se activan los permisos DocGen, la API lee los parámetros de notificación desde el parámetro Configuración de sobre de firma electrónica.

  • Si los permisos DocGen y CLM (Salesforce Contracts) están activados y el tipo de objeto es contract, la API lee los parámetros de notificación desde los parámetros de Configuración de tipo de contrato.

  • Si los permisos DocGen y CLM (Salesforce Contracts) están activados y el tipo de objeto no es contract, la API lee los parámetros de notificación desde los parámetros de Configuración de sobre de firma electrónica.

sendEnvelope Utilice este método para activar una nueva transacción de DocuSign.
voidEnvelope Utilice este método para hacer caducar o anular sobres asociados con un objeto.
updateEnvelope Utilice este método para enviar una solicitud ad hoc a DocuSign para actualizar el estado del sobre.
 
Cargando
Salesforce Help | Article