[英]Can't pass in a full name on the signer when creating the envelope definition
使用与 docusign 站点上的快速入门项目几乎相同的设置来创建信封定义。 在我尝试在签名者 object 上添加全名之前,没有任何问题,
Signer signer = new Signer
{
Email = recipientEmail,
Name = fullName,
FirstName = recipientFirstName,
LastName = recipientLastName,
RecipientId = "1",
RoutingOrder = "1",
};
无论出于何种原因,当名称中有空格时,我都会得到 500 的回报。 我正在使用最新的 nuget(5.8.0)。 如果我拿出空间,那么一切都很好。 除非我不应该使用这个字段,否则我应该如何传递签名者的全名?
添加我目前正在使用的完整代码,
public string GetSigningUrl(FileItem fileItem, string recipientEmail, string recipientFirstName, string recipientLastName)
{
string clientUserId = Guid.NewGuid().ToString();
EnvelopesApi envelopeApi = CreateEnvelopeApi();
EnvelopeSummary envelopeSummary = CreateEnvelope(fileItem, recipientEmail, recipientFirstName, recipientLastName, envelopeApi, clientUserId);
RecipientViewRequest viewRequest = MakeRecipientViewRequest(recipientEmail, recipientFirstName, clientUserId);
return envelopeApi.CreateRecipientView(_docuSignAuthorizationService.AccountID, envelopeSummary.EnvelopeId, viewRequest).Url;
}
protected EnvelopeDefinition CreateEnvelopDefinition(FileItem fileItem, string recipientEmail, string recipientFirstName, string recipientLastName, ref EnvelopesApi envelopesApi, string clientUserId = null)
{
Document document = new Document
{
DocumentBase64 = Convert.ToBase64String(fileItem.Data),
Name = "Lorem Ipsum", //fileItem.FileName,
FileExtension = "pdf", //fileItem.ContentType,
DocumentId = "1"
};
Document[] documents = new Document[] { document };
Signer signer = new Signer
{
Email = recipientEmail,
Name = $"{recipientFirstName} {recipientLastName}",
//FullName = $"{recipientFirstName} {recipientLastName}",
RecipientId = "1",
RoutingOrder = "1",
};
if (clientUserId != null)
signer.ClientUserId = clientUserId;
// signing field on the document
SignHere signHereTab = new SignHere
{
DocumentId = "1",
PageNumber = "1",
RecipientId = "1",
TabLabel = "Sign Here Tab",
XPosition = "195",
YPosition = "147"
};
SignHere[] signHereTabs = new SignHere[] { signHereTab };
signer.Tabs = new Tabs { SignHereTabs = new List<SignHere>(signHereTabs) };
Signer[] signers = new Signer[] { signer };
Recipients recipients = new Recipients { Signers = new List<Signer>(signers) };
EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition
{
EmailSubject = "Please sign the document",
Documents = new List<Document>(documents),
Recipients = recipients,
Status = "sent"
};
if (envelopesApi == null)
envelopesApi = CreateEnvelopeApi();
return envelopeDefinition;
}
protected EnvelopeSummary CreateEnvelope(FileItem fileItem, string recipientEmail, string recipientFirstName, string recipientLastName, EnvelopesApi envelopesApi = null, string clientUserId = null)
{
EnvelopeDefinition envelopeDefinition = CreateEnvelopDefinition(fileItem, recipientEmail, recipientFirstName, recipientLastName, ref envelopesApi, clientUserId);
EnvelopeSummary results = envelopesApi.CreateEnvelope(_docuSignAuthorizationService.AccountID, envelopeDefinition);
return results;
}
签名者 object 中有 4 个字段,我们知道这有点令人困惑,但我试图解释一下:
姓名- 法定全名,可包含中间名,最多 100 个字符,必填字段
FullName - DocuSign 在内部使用它来组合 first+last。
FirstName - 只有名字,最多 50 个字符,可选字段。
LastName - 只有姓氏,最多 50 个字符,可选字段。
我尝试使用最新的 nuget for C# 在所有这些字段中使用空格,如果你这样做了,我没有收到任何错误 - 你能分享你使用的值吗? 可能是其他原因
原来我将错误的值传递给收件人视图请求,这导致了失败,因为名称与创建的信封中的值不匹配。
下面是现在那里的更改,在输入到 UserName 之前的值只是来自常量而不是来自我的请求数据的假值。
RecipientViewRequest viewRequest = new RecipientViewRequest
{
AuthenticationMethod = "none",
Email = signerEmail,
UserName = signerName,
ClientUserId = clientUserId,
ReturnUrl = _docuSignConfig.RedirectUrl
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.