繁体   English   中英

创建信封定义时无法在签名者上传递全名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM