yethee
Repos
34
Followers
19
Following
5

Events

closed issue
null для поля client.phone не работает

Не могу удалить телефон у пользователя, не отправляется nil для части полей (у других полей работает, например в ErirAttributes)

$api->getAgencyClientsService()->update(
            UpdateAgencyClientsRequest::create()->setClients([
                AgencyClientUpdateItem::create()
                    ->setClientId(123456)
                    ->setPhone(null)
            ])
        );

в итоге в request вижу следующее:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://api.direct.yandex.com/v5/agencyclients">
   <SOAP-ENV:Body>
      <ns1:UpdateRequest>
         <Clients>
            <ClientId>123456</ClientId>
         </Clients>
      </ns1:UpdateRequest>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Created at 1 week ago
issue comment
null для поля client.phone не работает

Привет!

Поведение соответствует WSDL. Не допускается null в качестве значения для поля AgencyClientUpdateItem::Phone в текущей версии схемы.

    <xsd:complexType name="ClientBaseItem">
        <xsd:sequence>
            <xsd:element name="ClientInfo" type="xsd:string" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="Phone" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ClientUpdateItem">
        <xsd:complexContent>
            <xsd:extension base="gc:ClientBaseItem">
                <xsd:sequence>
                    <xsd:element name="Notification" type="gc:NotificationUpdate" minOccurs="0" maxOccurs="1"/>
                    <xsd:element name="Settings" type="gc:ClientSettingUpdateItem" minOccurs="0" maxOccurs="unbounded"/>
                    <xsd:element name="TinInfo" type="gc:TinInfoUpdate" minOccurs="0" maxOccurs="1" nillable="true"/>
                    <xsd:element name="ErirAttributes" type="gc:ErirAttributesUpdate" minOccurs="0" maxOccurs="1"
                                 nillable="true"/>
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

Источник: generalclients.xsd

У nullable полей в схеме есть атрибут nillable="true".

И в документации для поля AgencyClientUpdateItem::Phone указан тип string, без nullable.

Created at 1 week ago
yethee create tag 5.6.0
Created at 2 weeks ago

Prepare release 5.6.0

Created at 2 weeks ago

Update phpstan to 1.8.5

Update phpunit to 9.5.24

Update dependencies

Add support PHP 8.2

Add attribute #[AllowDynamicProperties] for the data contract classes

Sync with the latest version of API

Created at 2 weeks ago
yethee create tag 2.0.0
Created at 3 weeks ago

Replace inline type-hints with assertions

Created at 3 weeks ago
yethee create tag 1.4.1
Created at 4 weeks ago

Fix conflict between DocCommentSpacing and DuplicateSpaces rules

Created at 4 weeks ago
yethee create tag 1.4.0
Created at 4 weeks ago

Add rule SlevomatCodingStandard.Whitespaces.DuplicateSpaces

Bump version of slevomat/coding-standard

Created at 4 weeks ago
delete branch
yethee delete branch dev
Created at 1 month ago

Update vimeo/psalm to 4.27.0

Fix compat w/ php-vcr/php-vcr 1.6+

Created at 1 month ago
create branch
yethee create branch dev
Created at 1 month ago
issue comment
Новый закон маркировки рекламы

Добавил новый тег. Версия 5.5.0 совместима с последними изменениями в API Яндекс.Директа.

Created at 1 month ago
issue comment
Проблема с AccountManagementRequest

Закрываю issue, так как проблема не на уровне библиотеки, судя по всему.

Если появятся новые данные, можем открыть issue заново.

Created at 1 month ago
closed issue
Проблема с AccountManagementRequest

Здравствуйте! Не могу понять. Есть такой код:

$criteria = AccountSelectionCriteria::create()->setAccountIDS([123]); $payload = AccountManagementRequest::create()->setSelectionCriteria($criteria)->setAction('Get'); $response = $USER->getApiService()->accountManagement($payload);

Все работает отлично! Но как только добавляю в массив второй ID (456):

$criteria = AccountSelectionCriteria::create()->setAccountIDS([123, 456]);

то получаю ошибку:

Fatal error: Uncaught SoapFault: Параметры запроса указаны неверно

Тоже самое касается setLogins:

$criteria = AccountSelectionCriteria::create()->setLogins(['acc1', 'acc2']);

Пока указан один логин, все отлично. Как только добавляю второй - ошибка.

Я документации Яндекса указано, что можно указывать до 100 ID и до 50 логинов ( https://yandex.ru/dev/direct/doc/dg-v4/live/AccountManagement_Get.html ).

В чем может быть ошибка?

Created at 1 month ago

Prepare release 5.5.0

Created at 1 month ago
yethee create tag 5.5.0
Created at 1 month ago
closed issue
Новый закон маркировки рекламы

image Сегодня яндекс прислал.

Посмотрел на http://api.direct.yandex.com/v5/agencyclients , там появились поле AddRequest.TinInfo которое пока не обязательное. Этого поля нет в последних версиях этого пакета. Было бы клево перегенерить типы.

Created at 1 month ago

Sync with the latest version of API

close #47

Created at 1 month ago

Pin psalm to version 4.26.0

Sync with the latest version of API

Created at 1 month ago
issue comment
Проблема с AccountManagementRequest

С запросом все ок, на сервер уходит валидный XML.

Но в любом случае это странно, так как ошибка на уровне протокола обмена данными.

Полагаю, проблема все же не техническая, а связана с ограничениями рекламной системы. Судя по тому, что текст ошибки локализован - ответ получен от сервиса API. Попробуйте написать в техподдержку Директа. Например, через форму обратной связи.

Created at 2 months ago
issue comment
Проблема с AccountManagementRequest

В метод setAccountIDS или setLogins передается индексный массив?

По идее, тип исключения должен быть Biplane\YandexDirect\Exception\ApiException, а не SoapFault.

Можете попробовать опубликовать XML запроса к API, может это прояснит ситуацию. Только предварительно отредактируйте его (удалите id, логины). Данные можно получить с помощью метода getLastRequest(). HTTP заголовки не нужны.

$service = $USER->getApiService();

try {  
    $response = $service->accountManagement($payload);
} finally {
    echo $service->getLastRequest();
}
Created at 2 months ago

Do not install OpenSSH by default

Created at 2 months ago