diadoc / diadocsdk-csharp

Official Diadoc SDK for C#
MIT License
34 stars 64 forks source link

Отправка извещения на подтверждения во входящем документе УПД #1008

Closed ArinaArs closed 1 year ago

ArinaArs commented 1 year ago

День добрый! есть входящий документ УПД с функцией СЧФДОП ид сообщения MessageId = 'cab411e5-9951-44e2-b6ea-942f9f2c2b1a' есть Entities с типом InvoiceConfirmation на родительский entity (ParentEntityId = 'f1a8f33a-a952-4161-9777-ffae42751a04' , EntityId= '37c1c6d2-6cbe-4a97-99dc-49609b949caa' )
Пытаемся на него сформировать и отправить извещение о получении подтверждения

var извещение = ДиадокСервис.GenerateReceiptXml(_Токен, _BoxId, 'cab411e5-9951-44e2-b6ea-942f9f2c2b1a', '37c1c6d2-6cbe-4a97-99dc-49609b949caa', new Signer() { SignerCertificate = _сертификат SignerDetails = _подпись });

получаем ошибку BaseUrl=https://diadoc-api.kontur.ru:443, PathAndQuery=/GenerateReceiptXml?boxId=xxxxx@diadoc.ru&messageId=cab411e5-9951-44e2-b6ea-942f9f2c2b1a&attachmentId=37c1c6d2-6cbe-4a97-99dc-49609b949caa, AdditionalMessage=ErrorCode: DocumentService.InvalidDocumentType (Http.Conflict), StatusCode=Conflict, DiadocErrorCode: DocumentService.InvalidDocumentType

Удаленный сервер возвратил ошибку: (409) Конфликт.

Что не так ?

Если можно пример отправки титула покупателя входящего УПД

ArinaArs commented 1 year ago

вопрос решился , отправлять извещение о получении подтверждения уже не надо .

И оставлю для будущих поколений пример формирования и отправки титула покупателя входящего УПД

var криптография = new WinApiCrypt(); var диадокСервис = new DiadocApi(_КлючРазработчика, _АдресСервиса, криптография); var пользователь = диадокСервис.GetMyUser(_Токен);

        var _титулПокупателя = new Utd820.UniversalTransferDocumentBuyerTitle()
        {

            DocumentCreator = _нашЯщик.Organization.FullName
            , OperationContent = "Принято без претензий"
            , AcceptanceDate = DateTime.Today.ToShortDateString()
            , Signers = new object[]
            {
                new DataXml.ExtendedSignerDetails_BuyerTitle820()
                {
                    SignerOrganizationName = _нашЯщик.Organization.FullName,
                    Inn = _нашЯщик.Organization.Inn,
                    FirstName = пользователь.FirstName,
                    LastName = пользователь.LastName,
                    Position = _Должность,
                    SignerType = DataXml.ExtendedSignerDetailsBaseSignerType.LegalEntity,
                    SignerPowers = DataXml.ExtendedSignerDetails_BuyerTitle820SignerPowers.MadeAndSignOperation,
                    SignerStatus = DataXml.ExtendedSignerDetails_BuyerTitle820SignerStatus.BuyerEmployee
                }
        }

        };

        var файлДляОтправки = ДиадокСервис.GenerateTitleXml(
                    _Токен
                  , _нашЯщик.BoxId
                  , _документ.TypeNamedId
                  , _документ.Function
                  , _документ.Version
                  , 1 /*titleIndex – числовой идентификатор титула документа для покупателя = 1*/
                  , _титулПокупателя.SerializeToXml()
                  , false
                  , null
                  , сообщение.MessageId
                  , родительскийЭлемент.EntityId
                    );

        var титулПокупателяДляОтправки = new RecipientTitleAttachment()
        {
            ParentEntityId = родительскийЭлемент.EntityId
            , NeedReceipt = false
            , SignedContent = new SignedContent()
            {
                Content = файлДляОтправки.Content
                , Signature = Криптография.Sign(файлДляОтправки.Content, _БайтыСертификата)

            }

        };

        var путьОтправки = new MessagePatchToPost()
        {
            BoxId = _нашЯщик.BoxId,
            MessageId = сообщение.MessageId
        };

        путьОтправки.AddUniversalTransferDocumentBuyerTitle(титулПокупателяДляОтправки);

        ДиадокСервис.PostMessagePatch(_Токен, путьОтправки);