CreateEnvelope() выдает исключение. Нет сообщения

#c# #docusignapi

#c# #docusignapi

Вопрос:

Я пытаюсь создать и отправить конверт в демонстрационной среде, используя docusign C # API. Я использую JWT в качестве моего потока OAuth2. Я могу правильно получить код доступа, необходимый для авторизации моей встроенной подписи.

Функция CreateEnvelope завершается с ошибкой и выдает исключение. Исключение не показывает никакой информации, кроме того, что функция завершилась с ошибкой. Образ исключения

Кто-нибудь сталкивался с подобной ситуацией раньше? Я предоставил фрагмент кода ниже. Есть ли что-то явно неправильное в том, как я, возможно, пытаюсь создать конверт?

     public static void DocusignFormatter()
    {
        EnvelopeDefinition envDef = new EnvelopeDefinition();
        Document doc = new Document();
        doc.DocumentBase64 = System.Convert.ToBase64String(pdfFileInfo.fileBytes);
        doc.Name = pdfFileInfo.DocName;
        doc.DocumentId = "1";
        
        envDef.Documents = new List<Document>();
        envDef.Documents.Add(doc);
        envDef.Recipients = new Recipients();
        envDef.Recipients.Signers = new List<Signer>();

        for (int i = 0; i < signatureFields.Count; i  )
        {
            Signer signer = new Signer();
            signer.Email = docRegistrant.Email;
            signer.Name = docApplicants[i].FirstName   " "   docApplicants[i].LastName;
            signer.RecipientId = $"{i 1}";
            signer.Tabs = new Tabs();
            signer.Tabs.SignHereTabs = new List<SignHere>();
            List<MyPdfSignatureField> fields;
            signatureFields.TryGetValue(i, out fields);
            foreach (MyPdfSignatureField field in fields)
            {
                SignHere signHere = new SignHere();
                signHere.DocumentId = "1";
                signHere.PageNumber = field.PageNum.ToString();
                signHere.RecipientId = i.ToString();
                signHere.XPosition = field.XLocation.ToString();
                signHere.YPosition = field.YLocation.ToString();
                signer.Tabs.SignHereTabs.Add(signHere);
            }
            envDef.Recipients.Signers.Add(signer);
        }
        envDef.Status = "created";
        


        ApiClient apiClient = new ApiClient(DocusignHelpers.OAuthBasePath);

        Configuration cfi = new Configuration(apiClient);
        

        cfi.AddDefaultHeader("Authorization", "Bearer "   DocusignHelpers.AccessToken);
        cfi.AccessToken = DocusignHelpers.AccessToken;
        cfi.Password = DocusignHelpers.Password;


        EnvelopesApi envelopesApi = new EnvelopesApi(cfi);

        EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(DocusignHelpers.AccountId, envDef);
  

Пойманные значения исключения

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

1. Добавление обработчика исключений и публикация внутреннего стека помогут. Также поможет использование анализатора, такого как wireshark или fiddler, и получение статуса в ответе, который обычно равен 200 OK и 400/500, если есть ошибка. Один из способов изолировать проблему — закомментировать часть вашего кода (например, где вы добавляете заголовки), чтобы определить, где возникает проблема.

2. Внутреннее исключение равно нулю, но код ответа был равен 400. Возможно, мой URL неверен

3. Перед HTTP-запросом / ответом, который вы увидите в данных анализатора, выполняется проверка подлинности TCP с использованием TLS. TLS 1/0/1.1 был прекращен в июне этого года, и вы должны использовать TLS 1.2 или более позднюю версию. Ошибка 400, вероятно, связана с использованием TLS неправильной версии. Убедитесь, что вы используете последнюю версию API (dll), которые поддерживают TLS 1.2. Также Windows по умолчанию будет использовать TLS 1.0, если вы специально не укажете TLS 1.2. Режим шифрования подписи также должен поддерживаться TLS 1.2. Смотрите : en.wikipedia.org/wiki/Transport_Layer_Security

Ответ №1:

вам не хватает этой строки:

 envDef.EmailSubject = "Test, please sign.";
  

Но это не причина исключения, поскольку вы создали его в режиме «created» (черновик), но это будет проблемой, как только вы попытаетесь его отправить.

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

Ответ №2:

Я решил эту проблему, друзья.

Мой URL api был неверным.

Моя основная путаница заключалась в том, что конечные точки аутентификации имеют отдельный базовый URL, отличный от остальной части RESTful API.

URL авторизации для демо-версии был: https://account-d.docusign.com

Клиентский объект API на самом деле имеет статические поля, которые содержат URL-адреса для разных платформ demo, prod, staging.

В итоге я использовал

 ApiClient.Demo_REST_BasePath = "https://demo.docusign.net/restapi"
  

Спасибо всем за ответы и помощь