Docusign ViewUrl:UNKNOWN_ENVELOPE_RECIPIENT 错误

web*_*ber 0 docusignapi

我正在尝试一个简单的示例来获取在 docuSign 中签名的 pdf,但是在尝试获取 ViewUrl 来重定向用户时遇到了 UNKNOWN_ENVELOPE_RECIPIENT 错误。

这是我用来创建带有 pdf 文档的信封的代码。

    string recipientName = "Tester";
    string recipientEmail = "test@me.com";
    string accountId = AuthenticateDocuSign();
    byte[] fileBytes = File.ReadAllBytes(@"C:\temp\test.pdf");


    EnvelopeDefinition envDef = new EnvelopeDefinition();
    envDef.EmailSubject = "[DocuSign C# SDK] - Please sign this doc";

    // Add a document to the envelope
    DocuSign.eSign.Model.Document doc = new DocuSign.eSign.Model.Document();
    doc.DocumentBase64 = System.Convert.ToBase64String(fileBytes);
    doc.Name = "TestFile.pdf";
    doc.DocumentId = "1";

    envDef.Documents = new List<DocuSign.eSign.Model.Document>();
    envDef.Documents.Add(doc);

    // Add a recipient to sign the documeent
    Signer signer = new Signer();
    signer.Email = recipientEmail;
    signer.Name = recipientName;
    signer.RecipientId = "1";

    // Create a |SignHere| tab somewhere on the document for the recipient to sign
    signer.Tabs = new Tabs();
    signer.Tabs.SignHereTabs = new List<SignHere>();
    SignHere signHere = new SignHere();
    signHere.DocumentId = "1";
    signHere.PageNumber = "1";
    signHere.RecipientId = "1";
    signHere.XPosition = "100";
    signHere.YPosition = "100";
    signer.Tabs.SignHereTabs.Add(signHere);

    envDef.Recipients = new Recipients();
    envDef.Recipients.Signers = new List<Signer>();
    envDef.Recipients.Signers.Add(signer);

    // set envelope status to "sent" to immediately send the signature request
    envDef.Status = "sent";

    // |EnvelopesApi| contains methods related to creating and sending Envelopes (aka signature requests)
    EnvelopesApi envelopesApi = new EnvelopesApi();

    EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(accountId, envDef);

    RecipientViewRequest viewOptions = new RecipientViewRequest()
    {
        ReturnUrl = returnURL,
        ClientUserId = "1000",  // must match clientUserId set in step #2!
        AuthenticationMethod = "email",
        UserName = recipientName,
        Email = recipientEmail, 
    };
    ViewUrl recipientView = envelopesApi.CreateRecipientView(accountId, envelopeSummary.EnvelopeId, viewOptions); // EXCEPTION!
Run Code Online (Sandbox Code Playgroud)

完整错误:

DocuSign.eSign.Client.ApiException 未由用户代码处理
ErrorCode=400 HResult=-2146233088 Message=调用 CreateRecipientView 时出错: { "errorCode": "UNKNOWN_ENVELOPE_RECIPIENT",
"message": "您识别的收件人不是以下的有效收件人指定的信封。” }

Kim*_*ndl 5

正如 Luis 在上面的评论中指出的那样,如果您希望随后能够检索该收件人的“查看”URL,则 必须在创建信封请求中为签名者指定clientUserId属性:

signer.clientUserId = 1000;
Run Code Online (Sandbox Code Playgroud)

您可以将clientUserId属性设置为您选择的任何值 - 我在本示例中使用了1000 ,因为这是您的代码在“发布收件人查看”请求中使用的值。

ClientUserId = "1000",  // must match clientUserId set in step #2!
Run Code Online (Sandbox Code Playgroud)

(这您在“发布收件人查看”请求中指定的clientUserIdnameemail属性值必须与您在“创建信封”请求中为收件人指定的值完全匹配。)