Loading
API di firma elettronica

API di firma elettronica

È possibile utilizzare le API di firma elettronica in modo indipendente per chiamare le funzionalità Salesforce Contracts senza utilizzare l'interfaccia utente. Queste API sono estremamente personalizzabili. È possibile inviare uno o più documenti generati per la firma elettronica. I documenti generati possono essere associati a oggetti standard o personalizzati.

Per informazioni sulle autorizzazioni richieste, vedere Insiemi di autorizzazioni.

Per informazioni sui limiti del governor Apex, vedere Execution Governors and Limits.

Per informazioni sulle API di firma elettronica, vedere Risorse sulla firma elettronica

Metodo Descrizione
getRecipients

Utilizzare questo metodo per visualizzare un elenco di destinatari dei documenti.

Per aggiungere una logica personalizzata tramite una classe personalizzata:

  • Creare una classe Apex globale che implementa ind_docgen_api.OpenInterface.

  • Aggiungere la logica all'interno del metodo invokeMethod().

  • Aggiungere la classe all'organizzazione.

  • Chiamare l'API utilizzando il parametro customClass nell'URL. Esempio:

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

Per personalizzare la modalità di restituzione dei destinatari, implementare l'interfaccia ind_docgen_api.OpenInterface in una classe Apex globale. Di seguito è riportato un esempio di implementazione che recupera tutti i referenti con il saluto "Signore":

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 e sourceObjectId sono parametri facoltativi. Il parametro sourceObjectId viene passato come input alla classe Apex e consumato come richiesto.

Per configurare la classe personalizzata utilizzando i metadati, aggiungere un record nell'oggetto Configurazione firma elettronica con i seguenti valori:

  • Venditore: Documento

  • Tipo di gruppo: Tipo gruppo

  • Tipo di configurazione: Destinatari Classe personalizzata

  • Configura valore: Nome della classe personalizzata. >.

getDocuments

Utilizzare questo metodo per visualizzare un elenco dei documenti inviati per la firma elettronica.

Se il parametro IsAssociatedWithClm è:

  • true: l'API recupera i documenti di contratto.

  • false: l'API recupera i documenti solo da Note e allegati.

Per aggiungere una logica personalizzata tramite una classe personalizzata:

  • Creare una classe Apex globale che implementa ind_docgen_api.OpenInterface.

  • Aggiungere la logica all'interno del metodo invokeMethod().

  • Aggiungere la classe all'organizzazione.

  • Chiamare l'API utilizzando il parametro customClass nell'URL. Esempio:

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

Per personalizzare la modalità di restituzione dei documenti per la firma elettronica, implementare l'interfaccia ind_docgen_api.OpenInterface in una classe Apex globale. Di seguito è riportato un esempio di implementazione che recupera i documenti dai record ContentVersion collegati al sourceObjectId specificato:

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 è un parametro facoltativo.

Per configurare la classe personalizzata utilizzando i metadati, aggiungere un record nell'oggetto Configurazione firma elettronica con i seguenti valori:

  • Venditore: Documento

  • Tipo di gruppo: Tipo gruppo

  • Tipo di configurazione: Classe personalizzata Documenti

  • Configura valore: Nome della classe personalizzata.

Non è necessario passare il nome della classe personalizzata nell'URL API.

getNotificationSettings

Utilizzare questo metodo per visualizzare le impostazioni dei promemoria e delle notifiche di scadenza. sourceObjectId è un parametro obbligatorio che restituisce le rispettive impostazioni di notifica per un oggetto.

L'API legge le impostazioni di notifica da queste impostazioni di configurazione:

  • Se sono abilitate solo le autorizzazioni DocGen, l'API legge le impostazioni di notifica dall'impostazione Configurazione busta di firma elettronica.

  • Se sono abilitate sia le autorizzazioni DocGen che CLM (Salesforce Contracts) e il tipo di oggetto è contract, l'API legge le impostazioni di notifica dalle impostazioni di configurazione del tipo di contratto.

  • Se sono abilitate sia le autorizzazioni DocGen che CLM (Salesforce Contracts) e il tipo di oggetto non è contratto, l'API legge le impostazioni di notifica dalle impostazioni di configurazione della busta di firma elettronica.

sendEnvelope Utilizzare questo metodo per abilitare una nuova transazione DocuSign.
voidEnvelope Utilizzare questo metodo per annullare o far scadere le buste associate a un oggetto.
updateEnvelope Utilizzare questo metodo per inviare una richiesta ad hoc a DocuSign per aggiornare lo stato della busta.
 
Caricamento
Salesforce Help | Article