0

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

我的代码片段:

    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();
    }

但是表格会发送给收件人,而我没有填写任何值。字段为空白。我做错了吗?请帮忙。

4

1 回答 1

1

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

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

而复合模板可以做模板角色设计可以做的事情,而且它可以做很多其他的事情,比如如果您有多个服务器模板并且想要在一个信封中使用所有这些模板,那么您需要复合模板,或者当您想要混合时带有飞行中文档的服务器模板,那么您需要复合模板。复合模板的正确示例可在https://stackoverflow.com/a/20036349/3530898获得

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

于 2017-10-09T20:16:42.327 回答