Loading
API электронной подписи

API электронной подписи

API электронной подписи можно использовать самостоятельно для вызова функций Salesforce Contracts без использования пользовательского интерфейса. Эти API можно сильно настроить. Вы можете отправить один или несколько созданных документов для электронной подписи. Созданные документы могут быть связаны со стандартными или настраиваемыми объектами.

Чтобы узнать о необходимых полномочиях, см. Наборы полномочий для DocuSign.

Чтобы узнать об ограничениях управляющего Apex, см. раздел «Управляющие и ограничения выполнения».

Дополнительную информацию об API электронной подписи см. в разделе Ресурсы электронной подписи.

Метод Описание
getRecipients

Используйте этот метод для просмотра списка получателей документов.

Для добавления настраиваемой логики посредством настраиваемого класса:

  • Создайте глобальный класс Apex, внедряющий ind_docgen_api.OpenInterface.

  • Добавьте логику в метод invokeMethod().

  • Добавьте класс в организацию.

  • Вызов API посредством параметра customClass в URL-адресе. Пример:

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

Чтобы настроить способ возврата получателей, внедрите интерфейс ind_docgen_api.OpenInterface в глобальный класс Apex. Ниже указан пример внедрения, извлекающего все контакты с приветствием «Мистер»:

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 и sourceObjectId являются дополнительными параметрами. Параметр sourceObjectId передается в качестве ввода в класс Apex и расходуется при необходимости.

Чтобы настроить настраиваемый класс посредством метаданных, добавьте запись в объект конфигурации электронной подписи со следующими значениями:

  • Поставщик: Докусин

  • Тип группы: Тип группы

  • Тип конфигурации: Настраиваемый класс получателей

  • Настройка значения: Имя настраиваемого класса. >.

getDocuments

Используйте этот метод для просмотра списка документов, отправленных для электронной подписи.

Если параметр IsAssociatedWithClm:

  • true: API извлекает документы контракта.

  • false: API извлекает документы только из примечаний и вложений.

Для добавления настраиваемой логики посредством настраиваемого класса:

  • Создайте глобальный класс Apex, внедряющий ind_docgen_api.OpenInterface.

  • Добавьте логику в метод invokeMethod().

  • Добавьте класс в организацию.

  • Вызов API посредством параметра customClass в URL-адресе. Пример:

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

Чтобы настроить способ возврата документов для eSignature, внедрите интерфейс ind_docgen_api.OpenInterface в глобальный класс Apex. Ниже указан пример внедрения, извлекающего документы из записей ContentVersion, связанных с данным sourceObjectId:

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 является дополнительным параметром.

Чтобы настроить настраиваемый класс посредством метаданных, добавьте запись в объект конфигурации электронной подписи со следующими значениями:

  • Поставщик: Докусин

  • Тип группы: Тип группы

  • Тип конфигурации: Настраиваемый класс документов

  • Настройка значения: Имя настраиваемого класса.

Имя настраиваемого класса в URL-адресе API передавать не нужно.

getNotificationSettings

Используйте этот метод для просмотра параметров напоминания и уведомления об истечении срока действия. SourceObjectId является обязательным параметром, возвращающим соответствующие параметры уведомлений для объекта.

API считывает параметры уведомлений из следующих параметров конфигурации:

  • Если включены только полномочия DocGen, API считывает параметры уведомлений в параметре «Конфигурация конверта электронной подписи».

  • Если полномочия DocGen и CLM (Salesforce Contracts) включены, а тип объекта - Contract, API считывает параметры уведомлений в параметрах конфигурации типа Contract.

  • Если полномочия DocGen и CLM (Salesforce Contracts) включены, а тип объекта не является контрактом, API считывает параметры уведомлений в параметрах конфигурации конверта электронной подписи.

sendEnvelope Используйте этот метод для включения новой транзакции DocuSign.
voidEnvelope Используйте этот метод для истечения срока действия или аннулирования конвертов, связанных с объектом.
updateEnvelope Используйте этот метод для отправки специального запроса в DocuSign для обновления статуса конверта.
 
Загрузка
Salesforce Help | Article