如何通过docusign api在嵌入式符号中添加多个签名者

问题描述 投票:2回答:1

我是docusign api的新手。我正在尝试使用docu sign api在我的应用程序中实现emebbed docment签名。我的要求是需要在单个文件上签署两个人。我已经看到了一些例子,我得到了单用户签名的URL,但我没有得到正确的解决方案。请帮我。提前致谢

这是我的示例代码

var docusign = require('docusign-esign');
var async = require('async');
var integratorKey  = '*************',  
email            = '***********',
password         = '***********',      
recipientName    = '*********',   
recipientEmail   = '**********';
recipientName1    = '***********', 
recipientEmail1   = '*************'; 
var basePath = "https://demo.docusign.net/restapi";
const SignTest1File = "sample.pdf";
var envelopeId = '';
var apiClient = new docusign.ApiClient();
apiClient.setBasePath(basePath);
var creds = JSON.stringify({
 Username: email,
 Password: password,
 IntegratorKey: integratorKey
});
apiClient.addDefaultHeader("X-DocuSign-Authentication", creds);
docusign.Configuration.default.setDefaultApiClient(apiClient);
async.waterfall([
 function login (next) {
  var authApi = new docusign.AuthenticationApi();
  var loginOps = new authApi.LoginOptions();
  loginOps.setApiPassword("true");
  loginOps.setIncludeAccountIdGuid("true");
  authApi.login(loginOps, function (err, loginInfo, response) {
    if (err) {
      return next(err);
    }
    if (loginInfo) {
      var loginAccounts = loginInfo.getLoginAccounts();
      console.log("LoginInformation: " + JSON.stringify(loginAccounts));
      next(null, loginAccounts);
    }
  });
},
function createAndSendEnvelopeWithEmbeddedRecipient (loginAccounts, next) {
  var fileBytes = null;
  try {
    var fs = require('fs'),
    path = require('path');
    fileBytes = fs.readFileSync(path.resolve('controllers/'+SignTest1File));
  } catch (ex) {
    console.log("Exception: " + ex);
  }
  var envDef = new docusign.EnvelopeDefinition();
  envDef.setEmailSubject("Please sign this doc");
  var doc = new docusign.Document();
  var base64Doc = new Buffer(fileBytes).toString('base64');
  doc.setDocumentBase64(base64Doc);
  doc.setName("sample.pdf");
  doc.setDocumentId("1");
  var docs = [];
  docs.push(doc);
  envDef.setDocuments(docs);
  var signer = new docusign.Signer();
  signer.setName(recipientName);
  signer.setEmail(recipientEmail);
  signer.setRecipientId("1");
  signer.setClientUserId("1234");  
  var signHere = new docusign.SignHere();
  signHere.setDocumentId("1");
  signHere.setPageNumber("1");
  signHere.setRecipientId("1");
  signHere.setXPosition("100");
  signHere.setYPosition("100");
  var signHereTabs = [];
  signHereTabs.push(signHere);
  var tabs = new docusign.Tabs();
  tabs.setSignHereTabs(signHereTabs);
  signer.setTabs(tabs);
  envDef.setRecipients(new docusign.Recipients());    
  envDef.getRecipients().setSigners([]);
  envDef.getRecipients().getSigners().push(signer);
  envDef.setStatus("sent");
  var envelopesApi = new docusign.EnvelopesApi();
  envelopesApi.createEnvelope(loginAccounts[0].accountId, envDef, null, function(error, envelopeSummary, response) {
    if (error) {
      return next(error);
    }
    if (envelopeSummary) {
      console.log("EnvelopeSummary: " + JSON.stringify(envelopeSummary));
      envelopeId = envelopeSummary.envelopeId;
      next(null, envelopeId, loginAccounts);
    }
  });
},
function requestRecipientView (envelopeId, loginAccounts, next) {
  const returnUrl = "http://www.docusign.com/developer-center";
  var recipientView = new docusign.RecipientViewRequest();
  recipientView.setUserName(recipientName);
  recipientView.setEmail(recipientEmail);
  recipientView.setReturnUrl(returnUrl);
  recipientView.setAuthenticationMethod("email");
  recipientView.setClientUserId("1234"); 
  var envelopesApi = new docusign.EnvelopesApi();
  envelopesApi.createRecipientView(loginAccounts[0].accountId, envelopeId, recipientView, function(error, viewUrl, response) {
    if (error) {
      return next(error);
    }
    if (viewUrl) {
      console.log("RecipientViewUrl = " + JSON.stringify(viewUrl));
      next()
    }
  });
}
], function end (error) {
 if (error) {
  console.log('Error: ', error);
  process.exit(1);
 }
 process.exit();
});
nodes docusignapi
1个回答
2
投票

在你的代码中,你有

envDef.getRecipients().getSigners().push(signer);

目前你只推动这个系列中的一个签名者。使用name, email, routingorder and clientUserId and its associated tabs创建一个新的签名者。然后将这个新的签名者也推送到签名者集合,这样你就可以在一个信封中添加多个签名者。在创建嵌入式签名URL时,您需要正确引用要为其创建URL的名称,电子邮件和clientUserId,另请注意,如果工作流未到达该签名者,则无法为收件人生成收件人URL。

© www.soinside.com 2019 - 2024. All rights reserved.