diadocsdk-csharp
diadocsdk-csharp copied to clipboard
Подписание документов новых и старых старых форматов
Генирую XML с помощью класса, но для Udt_05_01 и rezru не подходит
Как правильно составить для старых форматов
При том что 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"
Класс предусмотрен только для 820 формата. Для старых форматов нужно генерить xml самостоятельно. По поводу xml. У вас приведен xml для rezru. Для utd_05_01_01 корневой элемент должен быть UniversalTransferDocumentBuyerTitle
Класс предусмотрен только для 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, но возвращает ошибку
А если писать так
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.
Добрый день! Для обоих вариантов SignerStatus должно быть одно из значений:
- SellerEmployee = 1;
- InformationCreatorEmployee = 2;
- OtherOrganizationEmployee = 3;
- AuthorizedPerson= 4;
И SignerPowers обязательное. 2-ой вариант не рекомендуем использовать, т.к. метод GenerateAcceptanceCertificateXmlForBuyer устаревший и с 1-го октября планируем его отключить.
Добрый день! Для обоих вариантов SignerStatus должно быть одно из значений:
- SellerEmployee = 1;
- InformationCreatorEmployee = 2;
- OtherOrganizationEmployee = 3;
- AuthorizedPerson= 4;
И SignerPowers обязательное. 2-ой вариант не рекомендуем использовать, т.к. метод GenerateAcceptanceCertificateXmlForBuyer устаревший и с 1-го октября планируем его отключить.
так для generateTileXMl возвращает The 'AcceptanceCertificate552BuyerTitleInfo' element is not declared
что подразумевает он не заточен под такой титула, разве нет?
AcceptanceCertificate552BuyerTitleInfo - это старый протоконтракт для метода GenerateAcceptanceCertificate552XmlForBuyer. Для GenerateTitleXml нужно передавать UserContractData, соответствующий 552 формату. XSD-схема контракта, необходимого для генерации титула, может быть получена с помощью ссылки, доступной в поле UserDataXsdUrl контракта DocumentTitle, который можно получить с помощью метода https://diadoc-sdk.readthedocs.io/ru/latest/http/GetDocumentTypes.html
AcceptanceCertificate552BuyerTitleInfo - это старый протоконтракт для метода GenerateAcceptanceCertificate552XmlForBuyer. Для GenerateTitleXml нужно передавать UserContractData, соответствующий 552 формату. XSD-схема контракта, необходимого для генерации титула, может быть получена с помощью ссылки, доступной в поле UserDataXsdUrl контракта DocumentTitle, который можно получить с помощью метода https://diadoc-sdk.readthedocs.io/ru/latest/http/GetDocumentTypes.html
AcceptanceCertificate552BuyerTitleInfo - разве не он должен формироваться в XML, вроде UserContractData аналогичное описание как этот класс для rez_ru