如何通过Docusign API在嵌入式签名中添加多个签名者

西瓦

我是docusign api的新手。我正在尝试使用docu sign api在我的应用程序中实现嵌入式文档签名。我的要求是在单个文件上签名两个人。我已经看到了一些示例,我获得了单用户签名的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();
});
阿米特·基斯特

在您的代码中,您有

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

DocuSign多个嵌入式签名者

DocuSign API嵌入式签名iFrame

DocuSign API:嵌入式签名仪式的 webhook 通知

Docusign API-嵌入式签名的麻烦

Docusign嵌入式签名到期

Docusign 嵌入式签名 - 如何增加嵌入式 url 的到期时间?

如何获得由DocuSign中的代理商/中介指定的签名人的嵌入式签名URL?

DocuSign嵌入式签名的隐式身份验证

DocuSign 嵌入式签名工作流程

如何通过DocuSign API查看签名的信封文档?

通过Docusign API发送签名时如何标记任何文档

DocuSign API:使用强制(嵌入式)收件人的“无效签名凭据”错误

DocuSign-本机应用程序中的嵌入式签名

Docusign | 嵌入式签名| 谁和何时生成“签名URL”?

Docusign | 嵌入式签名| 发件人如何与收件人/签名人共享“收件人签名URL”?

如何通过API向Docusign模板添加表格?

DocuSign创建一个长期存在的嵌入式签名URL?

在docusign中使用jwt身份验证进行嵌入式签名

无需模板即可在docusign中进行嵌入式签名

如何通过Docusign API将动态图像添加到Docusign文档

用于添加/删除签名者的DocuSign API Webhook?

您如何通过 DocuSign UI 添加文档元数据?

docusign REST API如何在对PHP签名后将签名者返回到url

无法确定任务“运行嵌入式签名测试”的通过/失败

DocuSign:以下如何通过电子邮件请求签名。缺少多种方法

Docusign嵌入式签名-会话过期时,我可以给出一个不同的返回URL来显示吗?

Docusign API:同一仪式中的多个签名

DocuSign API - 如何让其他签名者或审阅者更改已完成的文档?

如何在SPA中实施Docusign而不要求最终用户通过DocuSign进行身份验证