2017-01-18 6 views
0

Я пробовал простой пример, чтобы получить pdf-документ, подписанный в documentSign, но я запускаю ошибку UNKNOWN_ENVELOPE_RECIPIENT, пытаясь заставить ViewUrl перенаправить пользователя.Docusign ViewUrl: UNKNOWN_ENVELOPE_RECIPIENT error

Вот код, который я использую для создания конверта с pdf-документом.

string recipientName = "Tester"; 
    string recipientEmail = "[email protected]"; 
    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! 

Полная ошибка:

DocuSign.eSign.Client.ApiException was unhandled by user code
ErrorCode=400 HResult=-2146233088 Message=Error calling CreateRecipientView: { "errorCode": "UNKNOWN_ENVELOPE_RECIPIENT",
"message": "The recipient you have identified is not a valid recipient of the specified envelope." }

+0

Вы действительно определили clientUserID получателя при создании этого конверта? Триплет имени, email @ и clientUserID должен соответствовать информации получателя, предоставленной во время создания конверта, чтобы успешно создать представление получателя. –

+0

@ LuisScott: спасибо, мне пришлось добавить signer.ClientUserId = "1000". Вы должны преобразовать свой комментарий в ответ – webber

ответ

2

Как Луис указывает в комментарии выше, необходимо указать clientUserId свойство для подписавшего в Создать конверт запрос, если вы хотите быть в состоянии для последующего получения URL-адреса «Просмотр» для этого Получателя:

signer.clientUserId = 1000; 

Вы можете использовать et the clientUserId property для любого значения, которое вы выбрали. Я использовал в этом примере, потому что это значение, которое использует ваш код в сообщении Post Recipient View.

ClientUserId = "1000", // must match clientUserId set in step #2! 

(clientUserId, имя и электронной значения свойств, указанные в сообщение Получатель Вид запрос должен точно соответствовать значениям, которые вы указали для получателя в Создание конвертов.)