Інтеграція DocuSign з Oracle Visual Builder

pic

DocuSign — це платформа для електронних підписів, яка дозволяє користувачам безпечно підписувати, надсилати та керувати документами онлайн. Вона допомагає бізнесам та окремим особам усунути необхідність у фізичних документах, надаючи юридично обов'язкові електронні підписи.

А що, якщо ми хочемо завантажити документи в Oracle Visual Builder, надіслати їх в DocuSign для підписання, а потім завантажити підписаний документ назад в Oracle Visual Builder? Давайте крок за кроком розглянемо цей процес.

Ми будемо використовувати DocuSign Node.js SDK для виконання трьох API викликів:

  1. Створення Конверту
  2. Отримання статусу Конверту
  3. Завантаження підписаного документа

Щоб використовувати будь-яке з цих API, спочатку потрібно отримати токен аутентифікації JWT.
Для цього вам знадобляться DOCUSIGNCLIENTID, DOCUSIGNUSERID та приватний ключ.

Спочатку перейдіть за посиланням: https://developers.docusign.com/ і створіть обліковий запис розробника, якщо у вас його ще немає.

Далі перейдіть у розділ "My Apps & Keys".

pic

Прокрутіть вниз і під розділом “Integrations” знайдете “Apps & Keys”.

pic

User ID - це ваш “DOCUSIGNUSERID”.

pic

Після цього натискайте на "Add App and Integration Key".

pic

pic

Ви побачите “Integration Key”, який є вашим “DOCUSIGNCLIENTID”.

Далі, під “Service Integration” натискайте кнопку “Generate RSA” і збережіть ваш приватний ключ у файл .pem на вашому локальному комп'ютері.

Останнє, що вам потрібно - це базова URL-адреса, яка виглядає так: “https://demo.docusign.net/restapi”.

І тепер ви готові до автентифікації за допомогою JWT.

const authenticateWithJWT = async () => {  

 const apiClient = new docusign.ApiClient();  

 apiClient.setBasePath(process.env.DOCUSIGN_BASE_URL);  

 const privateKey = fs.readFileSync('./private.pem', 'utf8');  

 try {  
 const results = await apiClient.requestJWTUserToken(  
 process.env.DOCUSIGN_CLIENT_ID,  
 process.env.DOCUSIGN_USER_ID,  
 "signature",  
 privateKey,  
 3600  
 );  

 apiClient.addDefaultHeader("Authorization", `Bearer ${results.body.access_token}`);  

 return apiClient;  
 } catch (error) {  
 console.error("Authentication error:", error);  
 throw error;  
 }  
};

Для створення конверту в DocuSign після генерації токена:

const createEnvelope = async (apiClient,envelopeBody) => {  
 const envelopesApi = new docusign.EnvelopesApi(apiClient);  

 const envelopeDefinition = envelopeBody;  
 try {  
 const envelopeSummary = await envelopesApi.createEnvelope(process.env.DOCUSIGN_ACCOUNT_ID, {  
 envelopeDefinition,  
 });  


 const envelopeId = envelopeSummary.envelopeId;  
 return {"envelopeId" : envelopeId};  
 } catch (error) {  
 console.error("Error creating envelope:", error);  
 throw error;  
 }  
};  


/* Приклад тіла конверту */  

/* {  
 "documents": [  
 {  
 "documentBase64": //ваш документ у форматі base64,  
 "documentId": "1",  
 "fileExtension": "pdf",  
 "name": "document"  
 }  
 ],  
 "emailSubject": "Test From Nodejs",  
 "recipients": {  
 "signers": [  
 {  
 "email": //електронна пошта підписанта,  
 "name": //ім'я підписанта,  
 "recipientId": "1"  
 }  
 ]  
 },  
 "status": "sent"  
}  
*/

Щоб отримати підписаний документ з DocuSign:

async function getDocumentFromEnvelope(envelopeId,documentId) {  
 const { DOCUSIGN_ACCOUNT_ID } = process.env;  

 // Ініціалізація API клієнта  
 const apiClient = await authenticateWithJWT();  

 // Ініціалізація API Envelopes  
 const envelopesApi = new docusign.EnvelopesApi(apiClient);  

 try {  
 // Отримуємо документ з конверту  
 const documentBytes = await envelopesApi.getDocument(  
 DOCUSIGN_ACCOUNT_ID, // Ваш ідентифікатор облікового запису  
 envelopeId, // Ідентифікатор конверту  
 documentId // Ідентифікатор документа (зазвичай '1' для першого документа)  
 );  


 const base64String = documentBytes.toString('base64');  


 return {"documentBase64" : base64String};  

 } catch (error) {  
 console.error('Error retrieving document:', error.response?.text || error.message);  
 return 'Error retrieving document:', error.response?.text || error.message;  
 }  
}

Щоб отримати статус конверту з DocuSign:

async function envelopeStatus(envelopeId) {  
 try {  
 // Автентифікація за допомогою JWT  
 const apiClient = await authenticateWithJWT();  

 // Отримуємо ідентифікатор облікового запису DocuSign  
 const { DOCUSIGN_ACCOUNT_ID } = process.env;  

 // Ініціалізація API Envelopes

const envelopesApi = new docusign.EnvelopesApi(apiClient);  

 // Отримання статусу конверту  
 const envelope = await envelopesApi.getEnvelope(DOCUSIGN_ACCOUNT_ID, envelopeId);  

 console.log(`Статус конверту: ${envelope.status}`);  

 // Відправка відповіді  
 return { status: envelope.status };  

 } catch (error) {  
 console.error('Помилка при отриманні статусу конверту:', error.response?.text || error.message);  

 // Відправка відповіді про помилку  
 return { status: 'Не вдалося отримати статус конверту' }  

 }  
}

Тепер ви можете створити з’єднання сервісів у вашому Oracle Visual Builder, додати ваші API, а потім за допомогою File Picker завантажити документ, перетворити його в base64 та відправити до DocuSign.

pic

Сподіваюся, це було корисно 😄

Перекладено з: Integrating DocuSign with Oracle Visual Builder

Leave a Reply

Your email address will not be published. Required fields are marked *