diadocsdk-csharp icon indicating copy to clipboard operation
diadocsdk-csharp copied to clipboard

Подписание документов новых и старых старых форматов

Open alkrot opened this issue 3 years ago • 7 comments

image

Генирую XML с помощью класса, но для Udt_05_01 и rezru не подходит

Как правильно составить для старых форматов image

При том что GenerateTileXMl вроде как по документации работать для любых версий документа

Еще были ошибки со статус то что нужно указать 5 но в SDK У SignerStatus нет перечисления со значением 5

XML для подписи акта

<?xml version="1.0" encoding="utf-8"?>
<AcceptanceCertificateBuyerTitleInfo>
  <Signer>
    <SignerDetails>
      <Surname>Гатауллин</Surname>
      <FirstName>Алмаз</FirstName>
      <JobTitle>Программист</JobTitle>
      <Inn>9662915670</Inn>
    </SignerDetails>
    <SignerCertificateThumbprint>F4D414AFB7BD70DC4E89020839E0C7AEC5EA417A</SignerCertificateThumbprint>
  </Signer>
</AcceptanceCertificateBuyerTitleInfo>
System.Exception: "BaseUrl=https://diadoc-api.kontur.ru, PathAndQuery=/GenerateTitleXml?boxId=a41d989fd47d46d981a592b683892137%40diadoc.ru&documentTypeNamedId=XmlAcceptanceCertificate&documentFunction=default&documentVersion=utd_05_01_05&titleIndex=1&editingSettingId&letterId=6aa9b3e0-5958-47bf-b89e-b91bf48878ea&documentId=9af5040c-6300-4d97-9c61-5c8131f7622d, AdditionalMessage=Invalid data UserContractData:
Line: 2, Position: 2, /AcceptanceCertificateBuyerTitleInfo[1]: The 'AcceptanceCertificateBuyerTitleInfo' element is not declared., StatusCode=BadRequest, DiadocErrorCode: Http.BadRequest"

alkrot avatar Apr 27 '21 06:04 alkrot

Класс предусмотрен только для 820 формата. Для старых форматов нужно генерить xml самостоятельно. По поводу xml. У вас приведен xml для rezru. Для utd_05_01_01 корневой элемент должен быть UniversalTransferDocumentBuyerTitle

NataliaShumikhina avatar Apr 28 '21 13:04 NataliaShumikhina

Класс предусмотрен только для 820 формата. Для старых форматов нужно генерить xml самостоятельно. По поводу xml. У вас приведен xml для rezru. Для utd_05_01_01 корневой элемент должен быть UniversalTransferDocumentBuyerTitle

var token = diadoc.AuthenticateWithKey(thumbprint);
            var content = diadoc.GetEntityContent(token, boxId, messageId, docEntityId);
            var tuple = SearchType(diadoc, token, boxId, messageId, docEntityId);
            var docType = tuple.Item1;
            var funName = tuple.Item2;
            var versionName = tuple.Item3;
            var titleIndex = tuple.Item4;


            AcceptanceCertificate552BuyerTitleInfo acceptanceCertificate552Buyer = new AcceptanceCertificate552BuyerTitleInfo()
            {
                AcceptanceDate = DateTime.Now.ToShortDateString(),
                OperationContent = operationContent
            };

            acceptanceCertificate552Buyer.AddSigner(new ExtendedSigner()
            {
                BoxId = boxId,
                SignerCertificate = File.ReadAllBytes(certFilePath),
                SignerDetails = new ExtendedSignerDetails()
                {
                    SignerStatus = SignerStatus.BuyerEmployee,
                    SignerType = SignerType.LegalEntity,
                    Inn = inn,
                    FirstName = firstName,
                    Surname = lastName,
                    Patronymic = middleName,
                    JobTitle = position
                }
            });

            var generated = diadoc.GenerateTitleXml(token, boxId, docType, funName, versionName, titleIndex, acceptanceCertificate552Buyer.SerializeToXml(), letterId: messageId, documentId: docEntityId);
Diadoc.Api.Http.HttpClientException: "BaseUrl=https://diadoc-api.kontur.ru, PathAndQuery=/GenerateTitleXml?boxId=a41d989fd47d46d981a592b683892137%40diadoc.ru&documentTypeNamedId=XmlAcceptanceCertificate&documentFunction=default&documentVersion=rezru_05_01_02&titleIndex=1&editingSettingId&letterId=9c8442ca-e769-402f-8152-8ccf004bc1f3&documentId=3bf1d7e2-1e05-43fb-9c66-c193f380fc33, AdditionalMessage=Invalid data UserContractData:
Line: 2, Position: 2, /AcceptanceCertificate552BuyerTitleInfo[1]: The 'AcceptanceCertificate552BuyerTitleInfo' element is not declared., StatusCode=BadRequest, DiadocErrorCode: Http.BadRequest"

Пытался сгенерировать xml, но возвращает ошибку

alkrot avatar May 12 '21 08:05 alkrot

А если писать так

            AcceptanceCertificate552BuyerTitleInfo acceptanceCertificateBuyerTitleInfo = new AcceptanceCertificate552BuyerTitleInfo();
            acceptanceCertificateBuyerTitleInfo.OperationContent = operationContent;
            acceptanceCertificateBuyerTitleInfo.AcceptanceDate = DateTime.Now.ToShortDateString();
            acceptanceCertificateBuyerTitleInfo.Signers.Add(new ExtendedSigner()
            {
                BoxId = boxId,
                SignerCertificate = File.ReadAllBytes(certFilePath),
                SignerDetails = new ExtendedSignerDetails()
                {
                    Inn = inn,
                    SignerType = SignerType.LegalEntity,
                    SignerStatus = SignerStatus.BuyerEmployee
                }
            });

            acceptanceCertificateBuyerTitleInfo.DocumentCreator = "Directum";

            var generate = diadoc.GenerateAcceptanceCertificate552XmlForBuyer(token, acceptanceCertificateBuyerTitleInfo, boxId, messageId, docEntityId);

То ошибка такая, хотя перечисление доступно

Diadoc.Api.Http.HttpClientException: "BaseUrl=https://diadoc-api.kontur.ru, PathAndQuery=/GenerateAcceptanceCertificateXmlForBuyer?boxId=a41d989fd47d46d981a592b683892137%40diadoc.ru&sellerTitleMessageId=9c8442ca-e769-402f-8152-8ccf004bc1f3&sellerTitleAttachmentId=3bf1d7e2-1e05-43fb-9c66-c193f380fc33&documentVersion=rezru_05_01_02, AdditionalMessage=Invalid data UserContractData:
Line: 4, Position: 52, /AcceptanceCertificate552BuyerTitle[1]/Signers[1]/SignerDetails[1]/@SignerStatus: The 'SignerStatus' attribute is invalid - The value 'BuyerEmployee' is invalid according to its datatype 'Integer' - The string 'BuyerEmployee' is not a valid Integer value.

alkrot avatar May 12 '21 10:05 alkrot

Добрый день! Для обоих вариантов SignerStatus должно быть одно из значений:

  • SellerEmployee = 1;
  • InformationCreatorEmployee = 2;
  • OtherOrganizationEmployee = 3;
  • AuthorizedPerson= 4;

И SignerPowers обязательное. 2-ой вариант не рекомендуем использовать, т.к. метод GenerateAcceptanceCertificateXmlForBuyer устаревший и с 1-го октября планируем его отключить.

aeremina88 avatar May 13 '21 14:05 aeremina88

Добрый день! Для обоих вариантов SignerStatus должно быть одно из значений:

  • SellerEmployee = 1;
  • InformationCreatorEmployee = 2;
  • OtherOrganizationEmployee = 3;
  • AuthorizedPerson= 4;

И SignerPowers обязательное. 2-ой вариант не рекомендуем использовать, т.к. метод GenerateAcceptanceCertificateXmlForBuyer устаревший и с 1-го октября планируем его отключить.

так для generateTileXMl возвращает The 'AcceptanceCertificate552BuyerTitleInfo' element is not declared

что подразумевает он не заточен под такой титула, разве нет?

alkrot avatar May 14 '21 07:05 alkrot

AcceptanceCertificate552BuyerTitleInfo - это старый протоконтракт для метода GenerateAcceptanceCertificate552XmlForBuyer. Для GenerateTitleXml нужно передавать UserContractData, соответствующий 552 формату. XSD-схема контракта, необходимого для генерации титула, может быть получена с помощью ссылки, доступной в поле UserDataXsdUrl контракта DocumentTitle, который можно получить с помощью метода https://diadoc-sdk.readthedocs.io/ru/latest/http/GetDocumentTypes.html

ichechulina avatar May 17 '21 10:05 ichechulina

AcceptanceCertificate552BuyerTitleInfo - это старый протоконтракт для метода GenerateAcceptanceCertificate552XmlForBuyer. Для GenerateTitleXml нужно передавать UserContractData, соответствующий 552 формату. XSD-схема контракта, необходимого для генерации титула, может быть получена с помощью ссылки, доступной в поле UserDataXsdUrl контракта DocumentTitle, который можно получить с помощью метода https://diadoc-sdk.readthedocs.io/ru/latest/http/GetDocumentTypes.html

AcceptanceCertificate552BuyerTitleInfo - разве не он должен формироваться в XML, вроде UserContractData аналогичное описание как этот класс для rez_ru

alkrot avatar May 27 '21 12:05 alkrot