AgencyClients.addPassportOrganization(). (close #65)ApiServiceFactoryBuilder::setSoapOptions().ApiServiceFactory добавлен необязательный аргумент,
для переопределения опций для SoapClient.soap_options будет удалена из конфига в версии 6.0.
Вместо этого следует напрямую конфигурировать ApiServiceFactory.ConfigBuilder::setSoapOptions() будет удален в версии 6.0.Businesses (PR #62)TypeError,
когда соединение с сервером было разорвано (в этом случае SoapClient::__getLastResponse()
возвращает null).Biplane\YandexDirect\ApiServiceFactory.
[BC break] Изначально фабрика была добавлена ещё в 5.0.0-beta1,
но под другим именем Biplane\YandexDirect\Api\ApiSoapClientFactory.Biplane\YandexDirect\ApiServiceFactoryBuilder.Biplane\YandexDirect\ReportServiceFactoryBiplane\YandexDirect\Exception\DownloadReportException.
Данное исключение может быть выброшено в том случае, когда запрос к сервису Reports
завершился с ошибкой. Например, когда HTTP-код 502.Biplane\YandexDirect\Exception\ReportNotReadyExceptionОбновлены сервисы для совместимости с последней версией API 5, включая изменения от 2021-11-22.
Изменена сигнатура конструктора Biplane\YandexDirect\ApiServiceFactory
- public function __construct(?Runner $runner = null, ?TransactionNumberGenerator $transactionNumberGenerator = null, ?int $soapCallTimeout = null)
+ public function __construct(?Runner $runner = null, ?TransactionNumberGenerator $transactionNumberGenerator = null, ?int $soapCallTimeout = null, ?SoapLogger $logger = null, ?SoapLogContextFactory $logContextFactory = null)
Для Biplane\YandexDirect\Api\V4\YandexAPIService идентификатор запроса читается
из HTTP-заголовков ответа, так же как для сервисов API 5.
[BC break] Изменена сигнатура метода ApiSoapClientV5::getUnits(). Теперь метод возвращает null,
когда нет информации по баллам.
- public function getUnits(): Units
+ public function getUnits(): ?Units
В объект Biplane\YandexDirect\Api\Units добавлен метод getUsedLogin, который возвращает
значение заголовка Units-Used-Login.
[BC break] Для следующих классов изменено пространство имен.
- Biplane\YandexDirect\Api\V5\Report
+ Biplane\YandexDirect\Api\V5\Reports
DateRangeTypeEnumFieldEnumFilterOperatorEnumReportRequestReportResult[BC break] У класса Biplane\YandexDirect\Api\V5\Reports\ReportRequest удалены все методы
изменяющие состояние. Для сборки запроса рекомендуется использовать Biplane\YandexDirect\Api\V5\Reports\ReportRequestBuilder
[BC break] Переработан Biplane\YandexDirect\Api\V5\Reports\ReportResult.
getStream()getData() переименован в getAsString()save() переименован в saveToFile(). Ранее метод первым аргументом принимал строку или resource,
теперь только строку - путь к файлу, куда сохранить результат.[BC break] Сервис Biplane\YandexDirect\Api\V5\Reports теперь совместим с PSR-18.
(PR #37)
По умолчанию используется php-http/discovery
для поиска реализации HTTP-клиента. Но это поведение можно изменить при инициализации ReportServiceFactory.
Для метода getReady() удалена поддержка переопределения интервала для проверки готовности отчёта.
Теперь всегда полагаемся на данные заголовка retryIn.
- public function getReady(ReportRequest $reportRequest, ?int $retryInterval = null): ReportResult
+ public function getReady(Reports\ReportRequest $reportRequest): Reports\ReportResult
[BC break] Интерфейс TransactionNumberGeneratorInterface переименован в TransactionNumberGenerator.
Для реализаций изменено пространство имен:
- Biplane\YandexDirect\Api\Finance\CallbackTransactionNumberGenerator
+ Biplane\YandexDirect\Api\Finance\TransactionNumberGenerator\CallbackTransactionNumberGenerator
- Biplane\YandexDirect\Api\Finance\ClockTransactionNumberGenerator
+ Biplane\YandexDirect\Api\Finance\TransactionNumberGenerator\ClockTransactionNumberGenerator
[BC break] Изменено пространство имен для ApiSoapClient
- Biplane\YandexDirect\Api
+ Biplane\YandexDirect\Soap
ClientInterface будет удален в будущем. Используйте SoapLogger для полученния данных
по запросу/ответу.DumpListener будет удален в будущем. Вместо этого используйте SoapLogger.Biplane\YandexDirect\Api\V5\Reports::download() будет удален в будущем.
Вместо этого используйте Biplane\YandexDirect\Api\V5\Reports\ReportResult::saveToFile().Biplane\YandexDirect\EventsBiplane\YandexDirect\Event\FailCallEventBiplane\YandexDirect\Event\PostCallEventBiplane\YandexDirect\Event\PreCallEventBiplane\YandexDirect\Exception\ReportDefinitionException.Biplane\YandexDirect\Exception\LogicException.Biplane\YandexDirect\Exception\NetworkException.
Вместо этого следует использовать SoapFault.Biplane\YandexDirect\Exception\RequestException.
Вместо этого следует использовать Biplane\YandexDirect\Exception\ApiException или SoapFault.Biplane\YandexDirect\Api\V5\Report\AttributionModelEnum.
Вместо него следует использовать Biplane\YandexDirect\Api\V5\Contract\AttributionModelEnum.Biplane\YandexDirect\Api\V5\Report\FormatEnum.Biplane\YandexDirect\Api\V5\Report\ReportDefinitionBuilder.
Вместо него следует использовать Biplane\YandexDirect\Api\V5\Reports\ReportDefinition.Добавлена возможность применения стратегии для повторного вызова метода API при ошибках.
(альтернативная реализация Invoker из версии 4.x).
По умолчанию данный функционал не используется. Для активации необходимо сконфигурировать
Runner и фабрику сервисов:
use Biplane\YandexDirect\Api\ApiSoapClientFactory;
use Biplane\YandexDirect\Runner\Runner;
use Biplane\YandexDirect\Runner\Runner\RetryStrategy\ExponentialRetryStrategy;
$maxRetries = 3;
$runner = new Runner(new ExponentialRetryStrategy(), $maxRetries);
$apiServiceFactory = new ApiSoapClientFactory($runner);
Обновлены сервисы для совместимости с последней версией API 5, включая изменения от 2021-09-03.
[BC break] Код для сервисов и DTO генерируется для PHP 7.1+,
strict_types[BC break] Изменена сигнатура конструктора класса ApiSoapClientFactory.
- public function __construct(?TransactionNumberGeneratorInterface $transactionNumberGenerator = null, ?int $soapCallTimeout = null)
+ public function __construct(?Runner $runner = null, ?TransactionNumberGeneratorInterface $transactionNumberGenerator = null, ?int $soapCallTimeout = null)
Из Biplane\YandexDirect\Api\V5\Report\FieldEnum удалены следующие методы:
generateConversionRateFieldName()generateConversionsFieldName()generateCostPerConversionFieldName()generateGoalsRoiFieldName()generateRevenueFieldName()В них нет необходимости, не используются при сборке запроса на новый отчет.
Biplane\YandexDirect\Api\Finance\TransactionNumberGeneratorInterface позволяет
переопределить логику генерации значения для параметра operation_num для финансовых методов.ApiException теперь наследуется от RuntimeException, вместо RequestException.ApiException будет выброшено только в том случае,
когда ошибка относится к API. В остальных случаях (ошибки транспорта, парсинга XML и т.п.)
будет выброшено исключение с типом SoapFault.Biplane\YandexDirect\User будет удален в 6.0, в пользу Biplane\YandexDirect\Config
и Biplane\YandexDirect\Api\ApiSoapClientFactory.Biplane\YandexDirect\UserBuilder будет удален в 6.0.Biplane\YandexDirect\EventListener\LoggerListener будет удален в 6.0.Biplane\YandexDirect\Helper\Invoker, который предоставлял логику повторных запросов
при временных ошибках.invoker, retry_factor, retry_max_attempts и retry_max_delay для User.Client-Login. (PR #52)
Нормализация логина производится только для аккаунтов Яндекс.Client-Login можно указать логин в формате email адреса. (PR #51)Scrubber::scrubSoapHeaders()Reports (close #50)#[AllowDynamicProperties] для совместимости с PHP 8.2Offset явно не задан для Page, то запрос к сервису Reports
не будет содержать этот параметр.SoapFault.
Warning: Undefined property: SoapFault::$detail
Symfony\Component\Serializer\Exception\NotEncodableValueException.TABLET_ADJUSTMENT и DESKTOP_ONLY_ADJUSTMENT[BC break] Полностью переработана логика генерации кода по данным WSDL. Для устранения конфликтов со схемами WSDL. Эти изменения частино ломают обратную совместимость, так как до этого некоторые DTO некорректно были отображены в PHP.
SortOrderEnum.
- Biplane\YandexDirect\Api\V5\Contract\SortOrderEnum
+ Biplane\YandexDirect\Api\V5\Reports\SortOrderEnum
IteratorAggregate.null через сеттер.Biplane\YandexDirect\Api\V5\Reports\FilterItem::create() (Close #44)SoapOptions::default().
Теперь WSDL включен по умолчанию.AgencyClients.addPassportOrganizationMember(). (close #70)Member-Authorization добавлена схема авторизации Bearer (fix #68)Member-Authorization,
чтобы токен не светился в логах.member_token для поддержки заголовка Member-Authorization (fix #65, #66)Reports, для согласованности с остальными сервисами API v5.Для API v5 запросов используются новые адреса,
- https://api.direct.yandex.com/v5
+ https://api.direct.yandex.com/v501
UNIFIED_CAMPAIGN (close #57)Исправлено преобразование данных из XML к типу float, когда в схеме указан тип xsd:decimal.
SoapClient в этом случае возвращает значение с типом string, что приводило к TypeError:
TypeError: Return value of Biplane\YandexDirect\Api\V5\Contract\ClientGetItem::getAccountQuality() must be of the type float or null, string returned
Reports заголовок Client-Login добавлялся не зависимо от того,
был ли задан логин в конфиге или нет.
Данный заголовок обязателен только когда запрос выполняется от имени агенства.null, приводившие к исключению TypeError.SoapOptions, которые позволяет переопределить
некоторые опции (compression и cache_wsdl) для SoapClient.Units больше не реализует интерфейс JsonSerializable.Units.В Biplane\YandexDirect\Api\V5\Report\FieldEnum добавлены методы,
которые позволяют сгенерировать поля для отчета, содержащие переменные.
generateConversionRateFieldName(int $goalId, string $attributionModel): stringgenerateConversionsFieldName(int $goalId, string $attributionModel): stringgenerateCostPerConversionFieldName(int $goalId, string $attributionModel): stringgenerateGoalsRoiFieldName(int $goalId, string $attributionModel): stringgenerateRevenueFieldName(int $goalId, string $attributionModel): stringBiplane\YandexDirect\Api\V5\Report\AttributionModelEnum и Biplane\YandexDirect\Api\V5\Report\FieldEnum
обновлены константы, добавлены недостающие и некоторые удалены, для полного соответствия
спецификации сервиса Report.ApiSoapClientV5::getRequestId() теперь не выбрасывает исключение,
когда HTTP-ответ не содержит заголовок RequestId. Вместо этого будет возвращена пустая строка.How can I help you explore Laravel packages today?