Docusign复合模板预填充选项卡值

时间:2017-10-09 19:03:57

标签: docusignapi docusigncompositetmplts

我正在使用Docusign Java Rest客户端库。我有一个简单文本字段的服务器模板。我想从我的程序中发送带有预先填充数据的esignature请求,以便收件人不必填写这些字段。

我的代码段:

    EnvelopeDefinition envDef = new EnvelopeDefinition();
    envDef.setEmailSubject("ATTACHMENT TESTING");

    List<CompositeTemplate> compositeTemplates = new ArrayList<>();
    envDef.setCompositeTemplates(compositeTemplates);

    CompositeTemplate t1 = new CompositeTemplate();

    List<ServerTemplate> serverTemplates = new ArrayList<>();
    t1.setServerTemplates(serverTemplates);

    ServerTemplate st = new ServerTemplate();
    st.setSequence("1");
    st.setTemplateId("8as3232a-ea84-448d-852b-7617bf4d1759");
    serverTemplates.add(st);

    CompositeTemplate t2 = new CompositeTemplate();

    List<InlineTemplate> inlineTemplates = new ArrayList<>();
    t2.setInlineTemplates(inlineTemplates);

    InlineTemplate it = new InlineTemplate();
    it.setSequence("2");
    inlineTemplates.add(it);

    Document doc = new Document();
    doc.setDocumentId("2");
    doc.setName("SSN Copy");
    doc.setRemoteUrl("https://images.pexels.com/photos/10656/c4f497772338464a5d4e4109966e02f7.jpg");
    doc.setFileExtension("jpeg");
    t2.setDocument(doc);

    compositeTemplates.add(t1);
    compositeTemplates.add(t2);

    List<TemplateRole> templateRoles = new ArrayList<>();
    TemplateRole templateRole = new TemplateRole();

    templateRole.setRoleName("Customer");
    templateRole.setName(currentUser.getDisplayName());
    templateRole.setEmail(currentUser.getEmail());

    /********Prepopulating data to fields.
    Tabs tabs = new Tabs();

    Text text1 = new Text();
    text1.setTabLabel("firstName");
    text1.setValue("Adams");
    tabs.getTextTabs().add(text1);

    Text text2 = new Text();
    text2.setTabLabel("lastName");
    text2.setValue("Johnson");
    tabs.getTextTabs().add(text2);

    templateRole.setTabs(tabs);

    templateRoles.add(templateRole);

    // assign template role(s) to the envelope
    envDef.setTemplateRoles(templateRoles);

    envDef.setStatus("sent");

    // instantiate a new EnvelopesApi object
    EnvelopesApi envelopesApi = new EnvelopesApi();

    // call the createEnvelope() API
    try {
        EnvelopeSummary envelopeSummary = envelopesApi.createEnvelope(accountId, envDef);
    } catch (ApiException e) {
        e.printStackTrace();
    }

但表格是收件人,没有任何价值我填写。字段是空白的。我做错了吗?请帮忙。

1 个答案:

答案 0 :(得分:1)

您正在混合两种不同的DocuSign设计模式,即您不应混合使用Composite Template和TemplateRole。

如果您有一个服务器模板,并且希望从应用程序中预填充签名者信息和/或模板中存在的任何DocuSign选项卡信息,则需要模板角色。

虽然复合模板可以做一个模板设计可以做的事情,但它可以做很多其他的事情,比如你有多个服务器模板,并希望在一个信封中使用所有这些,那么你需要复合模板,或者当你想要将服务器模板与飞行中文档混合,那么您需要复合模板。复合模板的正确示例位于https://stackoverflow.com/a/20036349/3530898

在您的情况下,如果您只有一个服务器模板,并且您的信封中的文档仅由您的服务器模板提供,那么您只需要使用TemplateRole。我无法理解传递文件SSN Copy的用途是什么,是客户需要签署的文件吗?