DocuSign используя Chilkat dll, как мне передать templateRoles в json?

#vb.net #docusignapi #chilkat

#vb.net #docusignapi #chilkat

Вопрос:

Я создаю демонстрационное приложение, которое динамически документирует файл передачи и подписывающее устройство, для этого мне нужно использовать docusign templateid и передавать детали, я могу передать файл, используя templateid, подписывающее устройство которого уже определено в самом шаблоне, теперь я хочу передать несколько подписывающих устройств динамически.Для этого необходимо использовать templateRoles.

  Dim json As New Chilkat.JsonObject
    json.UpdateString("documents[0].name", "Testing.pdf")
    json.UpdateString("documents[0].documentBase64", base64String)
    json.UpdateString("documents[0].documentId", "2")
    json.UpdateString("emailSubject", "DocuSign REST API Testing Sample")
    json.UpdateString("emailBlurb", "Create and send an envelope from a document.")
    json.UpdateString("templateId", "xxxxx-xxxxx-xxxxx-xxxx-xxxx")
    json.UpdateString("templateRoles", "{roleName: Signer 1, name: Aravind, email: aravind@gmail.com, recipientId: 1}") ' Here i pass template role for signer 1, and also need to pass multiple signer.
    json.UpdateString("status", "sent")

    rest.AddHeader("X-DocuSign-Authentication", "{ ""Username"":    ""DocuSign@example.com"",  ""Password"":""DocuSign_password"",  ""IntegratorKey"":""DocuSign_Integrator_Key"" }")
     

    rest.AddHeader("Content-Type", "application/json")
    rest.AddHeader("Accept", "application/json")

    Dim sbRequestBody As New Chilkat.StringBuilder
    json.EmitSb(sbRequestBody)


    Dim sbResponseBody As New Chilkat.StringBuilder

    success = rest.FullRequestSb("POST", "/restapi/v2.1/accounts/xxxxxx/envelopes", sbRequestBody, sbResponseBody)
    Dim respStatusCode As Integer = rest.ResponseStatusCode
  

Здесь я вставляю код для ссылки на ваш адрес электронной почты, пароль, все, что я изменяю, потому что это связано с целью безопасности.
Когда я передаю templateroles со значениями, я получаю ошибку.Для приведенного выше кода я получаю следующий возврат ошибки из api.

«ErrorCode»:»INVALID_REQUEST_PARAMETER», «message»:»Запрос содержал по крайней мере один недопустимый параметр. ‘recipientId’ не задан для получателя.»

Пожалуйста, помогите мне решить эту ошибку.

С уважением, Aravind

Ответ №1:

Вот код, использующий SDK:

 Imports System
Imports System.Collections.Generic
Imports DocuSign.eSign.Api
Imports DocuSign.eSign.Client
Imports DocuSign.eSign.Model
Imports Microsoft.AspNetCore.Mvc


    Private Function DoWork(ByVal signerEmail As String, ByVal signerName As String, ByVal ccEmail As String, ByVal ccName As String, ByVal accessToken As String, ByVal basePath As String, ByVal accountId As String, ByVal templateId As String) As String
        Dim config = New Configuration(New ApiClient(basePath))
        config.AddDefaultHeader("Authorization", "Bearer " amp; accessToken)
        Dim envelopesApi As EnvelopesApi = New EnvelopesApi(config)
        Dim envelope As EnvelopeDefinition = MakeEnvelope(signerEmail, signerName, ccEmail, ccName, templateId)
        Dim result As EnvelopeSummary = envelopesApi.CreateEnvelope(accountId, envelope)
        Return result.EnvelopeId
    End Function

Private Function MakeEnvelope(ByVal signerEmail As String, ByVal signerName As String) As EnvelopeDefinition
    Dim buffer As Byte() = System.IO.File.ReadAllBytes(Config.docPdf)
    Dim envelopeDefinition As EnvelopeDefinition = New EnvelopeDefinition()
    envelopeDefinition.EmailSubject = "Please sign this document"
    Dim doc1 As Document = New Document()
    Dim doc1b64 As String = Convert.ToBase64String(buffer)
    doc1.DocumentBase64 = doc1b64
    doc1.Name = "Lorem Ipsum"
    doc1.FileExtension = "pdf"
    doc1.DocumentId = "3"
    envelopeDefinition.Documents = New List(Of Document) From {
        doc1
    }
    Dim signer1 As Signer = New Signer With {
        .Email = signerEmail,
        .Name = signerName,
        .ClientUserId = signerClientId,
        .RecipientId = "1"
    }
    Dim signHere1 As SignHere = New SignHere With {
        .AnchorString = "/sn1/",
        .AnchorUnits = "pixels",
        .AnchorXOffset = "10",
        .AnchorYOffset = "20"
    }
    Dim signer1Tabs As Tabs = New Tabs With {
        .SignHereTabs = New List(Of SignHere) From {
            signHere1
        }
    }
    signer1.Tabs = signer1Tabs
    Dim recipients As Recipients = New Recipients With {
        .Signers = New List(Of Signer) From {
            signer1
        }
    }
    envelopeDefinition.Recipients = recipients
    envelopeDefinition.Status = "sent"
    Return envelopeDefinition
End Function
  

Комментарии:

1. Не могли бы вы предоставить список ссылок, которые необходимо добавить, и пространство имен, а также. Docusign dll 4.3 я установил с помощью nuget, какие-либо другие необходимо установить? А также я получаю ошибку в MakeEnvelope — скриншот prntscr.com/ulknyp , нужно ли генерировать метод — щелкните правой кнопкой мыши и сгенерируйте

2. Обновил ответ выше для этого.

3. Очень, очень спасибо, все работает нормально, еще раз спасибо… я также могу отправить несколько файлов с несколькими подписавшими. Большое спасибо.

Ответ №2:

Попробуйте удалить recipientId: 1 из JSON в строке 8.

Но я настоятельно рекомендую вам пересмотреть свой выбор архитектуры. Вы используете устаревшую аутентификацию, которая не очень безопасна.

Вы могли бы использовать C # SDK, который является пакетом Nuget и работает так же хорошо с VB.NET и это помогло бы вам выполнять эти вызовы без использования JSON, а также с использованием современного OAuth, который намного более безопасен.

Комментарии:

1. Привет, спасибо за ответ, после удаления получателя: 1 из templateroles я получаю другую ошибку. {{«ErrorCode»:»INVALID_REQUEST_BODY»,»message»:»Тело запроса отсутствует или неправильно отформатировано. Не удалось выполнить приведение или преобразование из System. Строка в систему. Коллекции. Generic.List`1[API_REST. Models.v2_1.templateRole].»}} ——— И эта строка похожа на этот json. updateString(«templateRoles», «{[Имя роли: Signer1,имя: Aravind,email:aravind@gmail.com ]}»)

2. И не могли бы вы предоставить фрагмент кода в vb.net какой такой же, как приведенный выше код с использованием docusign sdk, включая то, какое пространство имен и ссылку также необходимо добавить? я уже установил docusign dll 4.3

3. json. updateString(«templateRoles», «{Имя роли: Подписчик 1, имя: Aravind, электронная почта: aravind@gmail.com , recipientId: 1}») ‘ Здесь я передаю роль шаблона для подписывающего 1, а также мне нужно передать несколько подписывающих. В этой строке каждый элемент должен быть в двойных кавычках, чтобы сделать этот JSON допустимым. Пожалуйста, исправьте и повторите попытку.

4. Привет, я изменен таким образом, все еще получая ту же ошибку — ошибка форматирования json. updateString(«templateRoles», «{«»Имя роли: Signer1″», «»Имя: Aravind»», «»Email:aravind@gmail.com «»}»)

5. Привет, я пробовал 2 разных способа, все еще получая ошибку формата json. updateString(«templateRoles», «{«»RoleName»»: «»Signer1″»,»»Name»»: «»Aravind»»,»»Email»»: «»aravind@gmail.com «»}»)— json. updateString(«templateRoles», «{«»Имя роли: Signer1″», «»Имя: Aravind»», «»Email:aravind@gmail.com «»}»)