Указанный вами получатель не является действительным получателем указанного конверта. - PullRequest
0 голосов
/ 13 июля 2020

С помощью следующего кода я могу прочитать шаблон из своей учетной записи и отправить электронное письмо с этим шаблоном.

EnvelopesApi envelopesApi1 = createEnvelopesApi(basePath,
    prop.getProperty("authenticationToken"));
EnvelopeDefinition envelope1 = makeEnvelope(signerEmail, signerName);
EnvelopeSummary result = envelopesApi1.createEnvelope(accountId, envelope1);

//   session.setEnvelopeId(result.getEnvelopeId());
DoneExample.createDefault("Cusotm title")
    .withJsonObject(result)
    .withMessage("The envelope has been created and sent!<br/>Envelope ID "
        + result.getEnvelopeId() + ".")
    .addToModel(model);

Но мое приложение - это встроенное приложение, поэтому требуется утверждение over application Следовательно, я попытался интегрировать то же самое в свое встроенное приложение, но получаю сообщение об ошибке. Мой код ниже.

// Next, create the top level envelope definition and populate it.
EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition();
envelopeDefinition.setEmailSubject("Please sign this document!!");
envelopeDefinition.setEmailBlurb("this is the custom mail content");
             
//envelopeDefinition.setDocuments(Arrays.asList(document));
envelopeDefinition.setTemplateId("6fcd32d8-91f6-4f4f-90f8-8b54eb71bfb8");
envelopeDefinition.setTemplateRoles(Arrays.asList(signer1));
// Add the recipient to the envelope object
Recipients recipients = new Recipients();
//recipients.setSigners(Arrays.asList(signer));
//envelopeDefinition.setRecipients(recipients);
envelopeDefinition.setStatus("sent");
// requests that the envelope be created and sent.
             
            
// Step 2. Call DocuSign to create and send the envelope
ApiClient apiClient = new ApiClient(basePath);
apiClient.setAccessToken(accessToken, tokenExpirationSeconds);
EnvelopesApi envelopesApi = new EnvelopesApi(apiClient);
EnvelopeSummary results = envelopesApi.createEnvelope(accountId, envelopeDefinition);
String envelopeId = results.getEnvelopeId();

// Step 3. The envelope has been created.
//         Request a Recipient View URL (the Signing Ceremony URL)
RecipientViewRequest viewRequest = new RecipientViewRequest();
// Set the url where you want the recipient to go once they are done signing
// should typically be a callback route somewhere in your app.
viewRequest.setReturnUrl(baseUrl + "/ds-return");
viewRequest.setAuthenticationMethod(authenticationMethod);
viewRequest.setEmail(signerEmail);
viewRequest.setUserName(signerName);
viewRequest.setClientUserId(clientUserId);
// call the CreateRecipientView API
ViewUrl results1 = envelopesApi.createRecipientView(accountId, envelopeId, viewRequest);

// Step 4. The Recipient View URL (the Signing Ceremony URL) has been received.
//         The user's browser will be redirected to it.
String redirectUrl = results1.getUrl();

redirect = new RedirectView(redirectUrl);
redirect.setExposeModelAttributes(false);
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    if (input != null) {
        try {
            input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
}
return redirect;

}

Здесь я получаю ошибку, указанную ниже.

com.docusign.esign.client.ApiException: 
   Error while requesting server, received a non successful 
   HTTP code 400 with response Body: 
   '{"errorCode":"UNKNOWN_ENVELOPE_RECIPIENT",
     "message":"The recipient you have identified is not a valid
         recipient of the specified envelope."}'

at com.docusign.esign.client.ApiClient.invokeAPI(ApiClient.java:1177) 
   ~[docusign-esign-java-3.2.0.jar:na]
at com.docusign.esign.api.EnvelopesApi.createRecipientView(EnvelopesApi.java:1262) 
   ~[docusign-esign-java-3.2.0.jar:na]
....

1 Ответ

0 голосов
/ 13 июля 2020

Есть два способа решить эту проблему: один - это мой альтернативный способ ниже, а второй - как предложил Ларри в комментарии, просто добавьте clientUserId к подписывающему получателю при отправке конверта.

Для встроенный знак, нам нужно go для CompositeTemplate

private EnvelopeDefinition makeEnvelope(String signerEmail, String signerName, String clientUserId, WorkArguments args) throws IOException {
            CarbonCopy cc1 = new CarbonCopy();
            cc1.setEmail("mail");
            cc1.setName("name");
            cc1.setRoleName(EnvelopeHelpers.CC_ROLE_NAME);
            cc1.setRecipientId("2");
    
            // create a composite template for the server template
            CompositeTemplate compTemplate1 = new CompositeTemplate();
            compTemplate1.setCompositeTemplateId("1");
            ServerTemplate serverTemplates = new ServerTemplate();
            serverTemplates.setSequence("1");
            serverTemplates.setTemplateId("dafgs345-546sdf4-3546sdfqew");
            compTemplate1.setServerTemplates(Arrays.asList(serverTemplates));
    
            // Add the roles via an inlineTemplate object
            InlineTemplate inlineTemplate = new InlineTemplate();
            inlineTemplate.setSequence("1");
            inlineTemplate.setRecipients(EnvelopeHelpers.createRecipients(createSigner(signerEmail,signerName,clientUserId), cc1));
            compTemplate1.setInlineTemplates(Arrays.asList(inlineTemplate));
    
            // The signer recipient for the added document with a tab definition
            Tabs signer1Tabs = EnvelopeHelpers.createSingleSignerTab("**signature_1**", ANCHOR_OFFSET_Y, ANCHOR_OFFSET_X);
            signer1Tabs.textTabs(Arrays.asList(
                    createText("text", "453", "110","Customized data"),
                    createText("numbersOnly", "453", "130", "147896")));
            Signer signer1AddedDoc = createSigner(signerEmail, signerName,clientUserId);
            signer1AddedDoc.setAccessCode("12345");
            signer1AddedDoc.setTabs(signer1Tabs);
    
            // Create the HTML document
            byte[] htmlDoc = EnvelopeHelpers.createHtmlFromTemplateFile(HTML_DOCUMENT_FILE_NAME, "args", args);
    
            // Create a composite template for the added document and add the recipients via an inlineTemplate
            CompositeTemplate compTemplate2 = new CompositeTemplate();
            compTemplate2.setCompositeTemplateId("2");
            InlineTemplate inlineTemplate2 = new InlineTemplate();
            inlineTemplate2.setSequence("2");
            inlineTemplate2.setRecipients(EnvelopeHelpers.createRecipients(signer1AddedDoc, cc1));
            compTemplate2.setInlineTemplates(Arrays.asList(inlineTemplate2));
            compTemplate2.setDocument(EnvelopeHelpers.createDocument(htmlDoc, HTML_DOCUMENT_NAME,
                    DocumentType.HTML.getDefaultFileExtention(), "1"));
    
            EnvelopeDefinition env = new EnvelopeDefinition();
            env.setStatus(EnvelopeHelpers.ENVELOPE_STATUS_SENT);
            env.setCompositeTemplates(Arrays.asList(compTemplate1, compTemplate2));
            return env;
}

, а затем мы можем вызвать api

            EnvelopeDefinition envelope = makeEnvelope(signerEmail, signerName, clientUserId, args);

            EnvelopeSummary envelopResults = envelopesApi2.createEnvelope(accountId, envelope);
            RecipientViewRequest viewRequest1 = makeRecipientViewRequest(args);
            ViewUrl viewUrl = envelopesApi2.createRecipientView(accountId, envelopResults.getEnvelopeId(), viewRequest1);
            return new RedirectView(viewUrl.getUrl());
...