Более 200 модулей для CS-Cart по единой подписке за 3 000 ₽ в месяц

Реквизиты и счета

Позволяет гибко настраивать и автоматически заполнять реквизиты покупателя с помощью сервиса DaData для выставления счёта. Добавляет возможность создавать формы для регистрации вендора или покупателя с полями реквизитов из настроек модуля
Укажите домен без http и слешей. Пример: domain.com
По подписке 5 800 
Последняя версия модуля Обновлено:
Есть вопросы по модулю? Напиши нам: HelpDesk Bot

Реквизиты и счета

Этот модуль входит в нашу Подписку.

Оформите подписку — и пользуйтесь всеми модулями без ограничений.

«Реквизиты и счета» помогает принимать заказы от юридических лиц, индивидуальных предпринимателей, физических лиц и самозанятых: собирать необходимые реквизиты, автоматически заполнять сведения об организациях через DaData и формировать счета на оплату.

Для чего нужен

Модуль упрощает работу с покупателями и продавцами, которым требуется указывать реквизиты при регистрации или оформлении заказа. Администратор самостоятельно определяет состав полей для каждого типа плательщика, места их отображения и обязательность заполнения.

Покупатели могут сохранять организации в профиле и выбирать их при повторных заказах, не вводя данные заново.

Основные возможности

  • Настройка отдельных наборов реквизитов для юридических лиц, ИП, физических лиц и самозанятых.
  • Выбор полей, которые нужно показывать при регистрации, оформлении заказа и формировании счёта.
  • Назначение обязательных полей для каждого типа плательщика.
  • Автозаполнение данных организации по ИНН или названию с помощью DaData.
  • Вывод реквизитов в профилях покупателей и продавцов, а также при оформлении заказа.
  • Создание, сохранение, редактирование и выбор организаций в разделе «Мои организации».
  • Формирование счёта на оплату с реквизитами покупателя и продавца.
  • Печать счёта, скачивание в PDF и отправка по электронной почте.
  • Вывод основных реквизитов организации в списке и карточке заказа.

Как работает

Администратор указывает API-ключ DaData, выбирает доступные типы плательщиков и настраивает поля реквизитов. Для каждого поля можно определить, где оно отображается, требуется ли обязательное заполнение и нужно ли включать его в счёт.

Для выставления счёта создаётся способ оплаты «MS: Выставить счёт» и заполняются реквизиты получателя. При оформлении заказа покупатель вводит данные вручную, выбирает сохранённую организацию или использует подсказку DaData. После размещения заказа счёт можно открыть для печати, скачать в PDF или отправить покупателю по электронной почте.

Остались вопросы по работе модуля?

Напишите нам.


Продукт:
  • Store Builder
  • Store Builder Ultimate
  • Multi-Vendor
  • Multi-Vendor Plus
  • Multi-Vendor Ultimate
Назначение:
  • Владельцам
  • Покупателям
Архитектура
:
  • Backend
  • Frontend
Локализации:
  • English
  • Русский
Совместимость:
  • 4.21.X
  • 4.20.X
  • 4.19.X
  • 4.18.X
  • 4.17.X
  • 4.16.X
  • 4.15.X
  • 4.14.X
  • 4.13.X
  • 4.12.X

Инструкция к модулю Реквизиты и счета

Что делает модуль

Модуль собирает реквизиты покупателя или продавца, сохраняет данные организации в заказе и формирует счёт на оплату. Поддерживаются четыре типа контрагентов: юридическое лицо, индивидуальный предприниматель, физическое лицо и самозанятый.

Для юридических лиц и ИП можно использовать подсказки DaData по ИНН или названию организации. Счёт можно распечатать, скачать в PDF и отправить покупателю по email.

Где находится модуль

  • Модули → Управление модулями → Реквизиты и счета — общие настройки, параметры счёта и состав полей для разных типов контрагентов.
  • Администрирование → Способы оплаты — способ оплаты с процессором MS: Выставить счет, реквизиты получателя и изображение печати.
  • Заказы → Просмотреть заказы — реквизиты в списке и карточке заказа, а также действия для отправки, печати и скачивания счёта.
  • Мои организации в личном кабинете покупателя — сохранённые организации, если эта возможность разрешена в настройках.

Настройка модуля

Раздел «Общие»

  • Ключ API — ключ сервиса DaData. Он нужен для подсказок и автоматического заполнения реквизитов по ИНН или названию организации. Без ключа поля остаются доступными для ручного ввода.
  • Отображать поля с реквизитами на странице оформления заказа — показывает покупателю блок реквизитов при оформлении заказа.
  • Отображать поля с реквизитами в профиле покупателя — добавляет реквизиты в профиль покупателя.
  • Отображать поля с реквизитами в профиле продавца — добавляет реквизиты в профиль продавца в Multi-Vendor.
  • Заполнять автоматически поля пользователя — повторно подставляет ранее введённые данные покупателя в форму реквизитов при оформлении заказа.
  • Создание и сохранение организаций в профиле — добавляет раздел «Мои организации», выбор сохранённой организации при оформлении заказа и возможность сохранить введённые реквизиты. Раздел доступен авторизованным покупателям.

Раздел «Счёт»

  • Отправлять счёт по почте — автоматически отправляет счёт покупателю, когда заказ получает статус O. Письмо отправляется на email из заказа и содержит PDF-вложение.
  • Показывать кнопки счёта на странице спасибо за заказ — выводит кнопки печати и скачивания PDF сразу после оформления заказа.
  • Показывать кнопки счёта на странице деталей заказа — выводит те же действия в заказе покупателя.
  • Открывать в новом окне — открывает печатную версию счёта в новой вкладке из деталей заказа.

Печать счёта доступна средствами браузера. Создание PDF и автоматическое PDF-вложение требуют работающего дополнения PDF-документы.

Поля для типов контрагентов

Отдельные разделы настроек предназначены для юридического лица, ИП, физического лица и самозанятого. В них можно управлять названием организации, ФИО, ИНН, ОГРН или ОГРНИП, КПП, адресами, банковскими реквизитами, паспортными и регистрационными данными, телефоном и email. Набор полей различается в зависимости от типа контрагента.

Для каждого поля доступны флаги:

  • Включить — использовать поле для выбранного типа контрагента.
  • Показать при регистрации — вывести поле в форме регистрации или профиле, где модуль добавляет реквизиты.
  • Показать при оформлении заказа — запросить поле в блоке реквизитов на checkout.
  • Выводить в счёте — включить заполненное значение в данные покупателя или получателя в счёте.
  • Обязательное — не разрешать отправить соответствующую форму без значения.

Включайте обязательность только для полей, которые действительно показываются в нужной форме. После изменения набора полей проверьте каждый используемый тип контрагента отдельно.

Раздел «Прочие настройки»

  • Автозаполнение поля «Компания» — при регистрации продавца переносит в стандартное поле «Компания» значение из ФИО или из названия организации. Вариант Не использовать отключает перенос.
  • Использовать поля — определяет, какие типы контрагентов доступны в селекте: юридические лица, ИП, физические лица и самозанятые.
  • Отображать реквизиты организации в заказах — показывает в списке и карточке заказа краткий блок с названием, ИНН, телефоном и email.

Настройка способа оплаты и реквизитов получателя

  1. Откройте Администрирование → Способы оплаты и создайте или отредактируйте способ оплаты для выставления счёта.
  2. На вкладке настройки процессора выберите MS: Выставить счет.
  3. Заполните реквизиты получателя: тип контрагента, название, ИНН, регистрационные и банковские данные, адрес, руководителя и бухгалтера. В счёт попадают заполненные поля, для которых в настройках соответствующего типа контрагента разрешён вывод в счёте.
  4. При необходимости загрузите изображение печати и задайте его размер и положение.
  5. Сохраните способ оплаты и убедитесь, что он доступен нужным витринам и группам покупателей.

Для формирования счёта особенно важны название получателя, ИНН, расчётный счёт, наименование банка, БИК и корреспондентский счёт. Перед использованием способа оплаты проверьте печатную форму: модуль выводит в ней реквизиты получателя, реквизиты покупателя, состав заказа, доставку, налоги и итоговую сумму.

Параметры изображения печати

  • Изображение печати — графический файл, который модуль помещает рядом с подписями руководителя и бухгалтера в счёте.
  • Ширина печати (image_stamp_width) — ширина изображения в пикселях. Значение по умолчанию — 120.
  • Высота печати (image_stamp_height) — высота изображения в пикселях. Значение по умолчанию — 120.
  • Отступ слева для печати (image_stamp_left) — горизонтальное смещение изображения в пикселях. Значение по умолчанию — 130; увеличение сдвигает печать вправо.
  • Отступ сверху для печати (image_stamp_top) — вертикальное смещение изображения в пикселях. Значение по умолчанию — -20; отрицательное значение поднимает печать выше.

После изменения размера или отступов откройте печатную версию и PDF: браузерная печать и PDF-рендеринг могут немного отличаться.

Как проходит оформление заказа

  1. Покупатель выбирает оформление заказа от организации и тип контрагента.
  2. Покупатель выбирает сохранённую организацию или вводит реквизиты вручную. При настроенном ключе DaData поля с подсказками могут заполняться по ИНН или названию.
  3. После выбора способа оплаты MS: Выставить счет и оформления заказа модуль сохраняет реквизиты в заказе и устанавливает статус O.
  4. Покупатель печатает или скачивает счёт с доступной страницы заказа. Если включена автоматическая отправка, PDF-счёт также отправляется на email заказа.

Статусы, подтверждение оплаты и ограничения платёжного сценария

MS: Выставить счет — процессор для формирования счёта, а не интеграция с банком или платёжным шлюзом. Он не отправляет платёжный запрос во внешний сервис.

  • Статус заказа: при оформлении процессор устанавливает статус O. Поступление денег на расчётный счёт модуль не проверяет, поэтому после оплаты администратор меняет статус заказа вручную или средствами другой интеграции.
  • Тестовый режим: отсутствует, потому что модуль не соединяется с платёжным шлюзом. Проверка выполняется тестовым заказом и просмотром сформированного счёта.
  • Hold, capture и void: не поддерживаются. Модуль не блокирует и не списывает деньги.
  • Чеки, 54-ФЗ и DigitalKassa: модуль формирует счёт на оплату, но не фискальный чек и не данные для онлайн-кассы. Отдельных настроек фискализации в нём нет.

Merchant ID

У модуля нет настройки Merchant ID или merchant_id: идентификатор продавца не требуется, потому что модуль не создаёт платёж во внешнем шлюзе. Также не нужны Client ID и API token платёжного сервиса. Поле Ключ API относится только к DaData и используется для подсказок по реквизитам; оно не участвует в выставлении или подтверждении оплаты.

Webhook

Webhook для модуля не настраивается. В способе оплаты нет поля для webhook URL или callback URL, а процессор объявлен без callback-обработки и не принимает уведомления банка. Поэтому внешний сервис не может через этот модуль автоматически подтвердить оплату или изменить статус заказа: поступление денег и новый статус нужно проверять и фиксировать вручную либо отдельной интеграцией.

Возвраты

Модуль не создаёт операции возврата и не передаёт запросы refund в банк: в карточке заказа и настройках способа оплаты нет соответствующего действия. Возврат банковского перевода оформляется вне модуля по правилам магазина и банка. После возврата администратор вручную приводит статус и данные заказа в CS-Cart в соответствие с фактической операцией.

Операции со счётом в админке

В карточке заказа, оформленного через процессор MS: Выставить счет, доступны действия:

  • Отправить — сформировать PDF и отправить его на email из заказа.
  • Счёт на оплату — открыть печатную версию счёта.
  • Счёт на оплату (PDF) — сформировать и скачать PDF.

Если заказ оформлен другим способом оплаты, эти действия не формируют счёт данного модуля.

Как проверить работу

  1. Оставьте на checkout только необходимые типы контрагентов и поля; для тестовых обязательных полей задайте понятные требования.
  2. Если нужны подсказки DaData, укажите ключ API и проверьте поиск по ИНН или названию. Затем повторите ввод без подсказки, чтобы убедиться, что ручное заполнение доступно.
  3. Настройте способ оплаты MS: Выставить счет, заполните реквизиты получателя и загрузите печать.
  4. Оформите тестовый заказ от каждого используемого типа контрагента. Проверьте обязательность полей, сохранение организации и повторный выбор в разделе «Мои организации».
  5. Убедитесь, что заказ получил статус O, а реквизиты покупателя видны в карточке заказа.
  6. Сравните печатную версию и PDF: реквизиты сторон, товары, доставка, налоги, итоговая сумма и печать должны отображаться корректно.
  7. Проверьте ручную и автоматическую отправку счёта на реальный тестовый email. Если PDF не создаётся, сначала проверьте доступность дополнения PDF-документы.
  8. После имитации оплаты убедитесь, что статус заказа сам не меняется: для этого процессора ожидается ручное подтверждение оплаты.

История изменений

v4.4.3 от 10.09.2026

[*] Обновлены код, шаблоны и интеграционные файлы модуля.

[*] Обновлены описание, инструкция и changelog модуля.

v4.4.2 от 2026-03-17

[*] Обновлён шаблон модуля.

v4.4.1 от 2026-01-30

[*] Для настройки "Отображать реквизиты организации в заказах" добавлены короткое название и подсказка.

[!] Исправлена ошибка, возникавшая при включении реквизитов продавца.

[+] Добавлен отдельный раздел "Банковские реквизиты".

v4.4.0 от 2025-09-02

[+] Добавлен отдельный блок выбора организации при оформлении заказа.

[+] Для всех типов контрагентов добавлены поля электронной почты и телефона.

[+] Добавлено сохранение организаций, введённых вручную при оформлении заказа.

[*] Улучшено отображение блока: добавлены стили CSS и изменена HTML-структура.

[!] Исправлено заполнение полей при выборе организации, если их значения содержат символ апострофа.

[!] Исправлена ошибка на странице оформления заказа для неавторизованных пользователей.

[!] Исправлена переменная оформления заказа от имени юридического лица.

[!] Исправлен выбор реквизитов в профиле пользователя.

[+] Добавлено отображение реквизитов в заказах.

[-] Убрано дублирование информации о способе оплаты при оформлении заказа от имени юридического лица.

[!] На странице "Мои организации" восстановлено отображение организаций типа "Самозанятый".

[+] Добавлено получение списка подсказок организаций через API сервиса dadata.ru.

[!] Исправлено сохранение организаций типов "Физическое лицо" и "Самозанятый".

[!] Исправлена ошибка JavaScript.

v4.3.17 от 2024-07-24

[!] Исправлены ошибки, выявленные при тестировании.

v4.3.16 от 2024-07-08

[!] Исправлены языковые переменные.

v4.3.15 от 2024-03-27

[!] Исправлено дублирование AJAX-запросов при выборе способа доставки.

v4.3.14 от 2023-12-22

[!] Исправлено автозаполнение полей на странице подробной информации о заказе и при повторной оплате.

v4.3.13 от 2023-11-02

[!] Исправлена отправка счёта при изменении статуса заказа, оплаченного другим способом.

[!] Исправлено заполнение реквизитов компании в счёте.

[+] Добавлена настройка для отключения автоматического заполнения платёжных полей на странице оформления заказа.

v4.3.12 от 2023-09-30

[*] Изменено английское название модуля.

[*] Название процессора вынесено в языковую переменную.

[+] Добавлены настройки поля ИНН для физических лиц и самозанятых.

[*] Изменены настройки по умолчанию для физических лиц, самозанятых, юридических лиц и индивидуальных предпринимателей.

v4.3.11 от 2023-08-25

[*] Процессор "MS: Выставить счёт" перенесён из группы "Платёжные системы" в группу "Российские способы оплаты".

[+] На вкладке "Счёт" добавлены настройка "Открывать в новом окне" и пояснение о модуле "PDF-документы".

[*] Обновлён логотип компании.

[*] Обновлена иконка модуля.

[*] Изменены языковые переменные.

[+] Выполнена стандартизация модуля.

[*] Короткие PHP-теги заменены на полную форму v4.3.10 от 2023-06-13.

[+] Добавлена проверка наличия модуля "PDF-документы" при включении настройки "Отправлять счёт по почте".

v4.3.9 от 2023-04-12

[+] Добавлены поля для самозанятых.

[*] Изменены поля по умолчанию для индивидуальных предпринимателей.

v4.3.8 от 2023-03-31

[*] Обновлена иконка модуля.

v4.3.7 от 2022-12-26

[+] Выполнена стандартизация модуля.

v4.3.6 от 2022-12-20

[*] Изменены настройки модуля.

v4.3.5 от 2022-10-09

[+] Выполнена стандартизация модуля.

v4.3.4 от 2022-06-10

[*] Поле ИНН сделано необязательным для физических лиц.

[*] Автозаполнение отключено для физических лиц.

v4.3.3 от 2022-06-09

[+] Добавлено преобразование суммы в текстовую запись.

v4.2.3 от 2022-06-09

[+] Для юридических лиц добавлено поле "Сфера деятельности".

v4.2.2 от 2022-06-03

[+] Добавлено отображение ИНН в счёте.

v4.2.1 от 2022-06-02

[+] Добавлена настройка для скрытия типа контрагента в списке выбора.

v4.2.0 от 2022-01-12

[+] Добавлена настройка автозаполнения поля компании из другого поля.

v4.1.0 от 2021-09-02

[+] В административной части сайта добавлена информация об оплате в подробной информации о заказе.

[!] Исправлена инициализация DaData при выборе другого способа оплаты во время загрузки страницы оформления заказа.

[!] Исправлены стили всплывающего окна DaData на странице оформления заказа.

v4.0.4 от 2021-08-28

[+] Добавлены настройки способа оплаты для позиционирования печати в счёте.

[!] Исправлено отображение печати в счёте в CS-Cart.

v4.0.3 от 2021-08-26

[!] Исправлена ошибка при редактировании заказа.

v4.0.2 от 2014-04-16

[*] ------------------.

[*] Proxy requests using the StreamAdapter now properly use request_fulluri (#632).

[*] Added the ability to set scalars as POST fields (#628).

[*] 4.0.1 - 2014-04-04.

[*] The HTTP status code of a response is now set as the exception code of.

[*] RequestException objects.

[*] 303 redirects will now correctly switch from POST to GET requests.

[*] The default parallel adapter of a client now correctly uses the MultiAdapter.

[*] HasDataTrait now initializes the internal data array as an empty array so.

[*] that the toArray() method always returns an array.

[*] 4.0.0 - 2014-03-29.

[*] For information on changes and upgrading, see:.

[*] https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40.

[*] Added `GuzzleHttp\batch()` as a convenience function for sending requests in.

[*] parallel without needing to write asynchronous code.

[*] Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`.

[*] You can now pass a callable or an array of associative arrays where each.

[*] associative array contains the "fn", "priority", and "once" keys.

[*] 4.0.0.rc-2 - 2014-03-25.

[*] Removed `getConfig()` and `setConfig()` from clients to avoid confusion.

[*] around whether things like base_url, message_factory, etc. should be able to.

[*] be retrieved or modified.

[*] Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface.

[*] functions.php functions were renamed using snake_case to match PHP idioms.

[*] Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and.

[*] `GUZZLE_CURL_SELECT_TIMEOUT` environment variables.

[*] Added the ability to specify custom `sendAll()` event priorities.

[*] Added the ability to specify custom stream context options to the stream.

[*] adapter.

[*] Added a functions.php function for `get_path()` and `set_path()`.

[*] CurlAdapter and MultiAdapter now use a callable to generate curl resources.

[*] MockAdapter now properly reads a body and emits a `headers` event.

[*] Updated Url class to check if a scheme and host are set before adding ":".

[*] and "//". This allows empty Url (e.g., "") to be serialized as "".

[*] Parsing invalid XML no longer emits warnings.

[*] Curl classes now properly throw AdapterExceptions.

[*] Various performance optimizations.

[*] Streams are created with the faster `Stream\create()` function.

[*] Marked deprecation_proxy() as internal.

[*] Test server is now a collection of static methods on a class.

[*] 4.0.0-rc.1 - 2014-03-15.

[*] See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40.

[*] 3.8.1 - 2014-01-28.

[*] Bug: Always using GET requests when redirecting from a 303 response.

[*] Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in.

[*] `Guzzle\Http\ClientInterface::setSslVerification()`.

[*] Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL.

[*] Bug: The body of a request can now be set to `"0"`.

[*] Sending PHP stream requests no longer forces `HTTP/1.0`.

[*] Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of.

[*] each sub-exception.

[*] Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than.

[*] clobbering everything).

[*] Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators).

[*] Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`.

[*] For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`.

[*] Now properly escaping the regular expression delimiter when matching Cookie domains.

[*] Network access is now disabled when loading XML documents.

[*] 3.8.0 - 2013-12-05.

[*] Added the ability to define a POST name for a file.

[*] JSON response parsing now properly walks additionalProperties.

[*] cURL error code 18 is now retried automatically in the BackoffPlugin.

[*] Fixed a cURL error when URLs contain fragments.

[*] Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were.

[*] CurlExceptions.

[*] CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e).

[*] Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS`.

[*] Fixed a bug that was encountered when parsing empty header parameters.

[*] UriTemplate now has a `setRegex()` method to match the docs.

[*] The `debug` request parameter now checks if it is truthy rather than if it exists.

[*] Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin.

[*] Added the ability to combine URLs using strict RFC 3986 compliance.

[*] Command objects can now return the validation errors encountered by the command.

[*] Various fixes to cache revalidation (#437 and 29797e5).

[*] Various fixes to the AsyncPlugin.

[*] Cleaned up build scripts.

[*] 3.7.4 - 2013-10-02.

[*] Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430).

[*] Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp.

[*] (see https://github.com/aws/aws-sdk-php/issues/147).

[*] Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots.

[*] Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420).

[*] Updated the bundled cacert.pem (#419).

[*] OauthPlugin now supports adding authentication to headers or query string (#425).

[*] 3.7.3 - 2013-09-08.

[*] Added the ability to get the exception associated with a request/command when using `MultiTransferException` and.

[*] `CommandTransferException`.

[*] Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description.

[*] Schemas are only injected into response models when explicitly configured.

[*] No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of.

[*] an EntityBody.

[*] Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator.

[*] Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`.

[*] Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody().

[*] Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin.

[*] Bug fix: Visiting XML attributes first before visiting XML children when serializing requests.

[*] Bug fix: Properly parsing headers that contain commas contained in quotes.

[*] Bug fix: mimetype guessing based on a filename is now case-insensitive.

[*] 3.7.2 - 2013-08-02.

[*] Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander.

[*] See https://github.com/guzzle/guzzle/issues/371.

[*] Bug fix: Cookie domains are now matched correctly according to RFC 6265.

[*] See https://github.com/guzzle/guzzle/issues/377.

[*] Bug fix: GET parameters are now used when calculating an OAuth signature.

[*] Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted.

[*] `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched.

[*] `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input.

[*] See https://github.com/guzzle/guzzle/issues/379.

[*] Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See.

[*] https://github.com/guzzle/guzzle/pull/380.

[*] cURL multi cleanup and optimizations.

[*] 3.7.1 - 2013-07-05.

[*] Bug fix: Setting default options on a client now works.

[*] Bug fix: Setting options on HEAD requests now works. See #352.

[*] Bug fix: Moving stream factory before send event to before building the stream. See #353.

[*] Bug fix: Cookies no longer match on IP addresses per RFC 6265.

[*] Bug fix: Correctly parsing header parameters that are in `<>` and quotes.

[*] Added `cert` and `ssl_key` as request options.

[*] `Host` header can now diverge from the host part of a URL if the header is set manually.

[*] `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter.

[*] OAuth parameters are only added via the plugin if they aren't already set.

[*] Exceptions are now thrown when a URL cannot be parsed.

[*] Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails.

[*] Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin.

[*] 3.7.0 - 2013-06-10.

[*] See UPGRADING.md for more information on how to upgrade.

[*] Requests now support the ability to specify an array of $options when creating a request to more easily modify a.

[*] request. You can pass a 'request.options' configuration setting to a client to apply default request options to.

[*] every request created by a client (e.g. default query string variables, headers, curl options, etc.).

[*] Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`.

[*] See `Guzzle\Http\StaticClient::mount`.

[*] Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests.

[*] created by a command (e.g. custom headers, query string variables, timeout settings, etc.).

[*] Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the.

[*] headers of a response.

[*] Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key.

[*] (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`).

[*] ServiceBuilders now support storing and retrieving arbitrary data.

[*] CachePlugin can now purge all resources for a given URI.

[*] CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource.

[*] CachePlugin now uses the Vary header to determine if a resource is a cache hit.

[*] `Guzzle\Http\Message\Response` now implements `\Serializable`.

[*] Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters.

[*] `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable.

[*] Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()`.

[*] Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size.

[*] `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message.

[*] Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older.

[*] Symfony users can still use the old version of Monolog.

[*] Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`.

[*] Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`.

[*] Several performance improvements to `Guzzle\Common\Collection`.

[*] Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:.

[*] createRequest, head, delete, put, patch, post, options, prepareRequest.

[*] Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`.

[*] Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`.

[*] Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to.

[*] `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a.

[*] resource, string, or EntityBody into the $options parameter to specify the download location of the response.

[*] Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a.

[*] default `array()`.

[*] Added `Guzzle\Stream\StreamInterface::isRepeatable`.

[*] Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use.

[*] $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or.

[*] $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.

[*] Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`.

[*] Removed `Guzzle\Http\ClientInterface::expandTemplate()`.

[*] Removed `Guzzle\Http\ClientInterface::setRequestFactory()`.

[*] Removed `Guzzle\Http\ClientInterface::getCurlMulti()`.

[*] Removed `Guzzle\Http\Message\RequestInterface::canCache`.

[*] Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`.

[*] Removed `Guzzle\Http\Message\RequestInterface::isRedirect`.

[*] Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.

[*] You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting.

[*] `Guzzle\Common\Version::$emitWarnings` to true.

[*] Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use.

[*] `$request->getResponseBody()->isRepeatable()` instead.

[*] Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use.

[*] `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.

[*] Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.

[*] Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.

[*] Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated.

[*] Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand.

[*] These will work through Guzzle 4.0.

[*] Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params].

[*] Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.

[*] Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.

[*] Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.

[*] Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.

[*] Marked `Guzzle\Common\Collection::inject()` as deprecated.

[*] Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');`.

[*] CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a.

[*] CacheStorageInterface. These two objects and interface will be removed in a future version.

[*] Always setting X-cache headers on cached responses.

[*] Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin.

[*] `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface.

[*] $request, Response $response);`.

[*] `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`.

[*] `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`.

[*] Added `CacheStorageInterface::purge($url)`.

[*] `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin.

[*] $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,.

[*] CanCacheStrategyInterface $canCache = null)`.

[*] Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`.

[*] 3.6.0 - 2013-05-29.

[*] ServiceDescription now implements ToArrayInterface.

[*] Added command.hidden_params to blacklist certain headers from being treated as additionalParameters.

[*] Guzzle can now correctly parse incomplete URLs.

[*] Mixed casing of headers are now forced to be a single consistent casing across all values for that header.

[*] Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution.

[*] Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().

[*] Specific header implementations can be created for complex headers. When a message creates a header, it uses a.

[*] HeaderFactory which can map specific headers to specific header classes. There is now a Link header and.

[*] CacheControl header implementation.

[*] Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate.

[*] Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti().

[*] Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in.

[*] Guzzle\Http\Curl\RequestMediator.

[*] Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.

[*] Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface.

[*] Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders().

[*] Removed Guzzle\Parser\ParserRegister::get(). Use getParser().

[*] Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().

[*] All response header helper functions return a string rather than mixing Header objects and strings inconsistently.

[*] Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle.

[*] directly via interfaces.

[*] Removed the injecting of a request object onto a response object. The methods to get and set a request still exist.

[*] but are a no-op until removed.

[*] Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a.

[*] `Guzzle\Service\Command\ArrayCommandInterface`.

[*] Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response.

[*] on a request while the request is still being transferred.

[*] The ability to case-insensitively search for header values.

[*] Guzzle\Http\Message\Header::hasExactHeader.

[*] Guzzle\Http\Message\Header::raw. Use getAll().

[*] Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object.

[*] instead.

[*] `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess.

[*] Added the ability to cast Model objects to a string to view debug information.

[*] 3.5.0 - 2013-05-13.

[*] Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times.

[*] Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove.

[*] itself from the EventDispatcher).

[*] Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values.

[*] Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too.

[*] Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a.

[*] non-existent key.

[*] Bug: All __call() method arguments are now required (helps with mocking frameworks).

[*] Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference.

[*] to help with refcount based garbage collection of resources created by sending a request.

[*] Deprecating ZF1 cache and log adapters. These will be removed in the next major version.

[*] Deprecating `Response::getPreviousResponse()` (method signature still exists, but it's deprecated). Use the.

[*] HistoryPlugin for a history.

[*] Added a `responseBody` alias for the `response_body` location.

[*] Refactored internals to no longer rely on Response::getRequest().

[*] HistoryPlugin can now be cast to a string.

[*] HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests.

[*] and responses that are sent over the wire.

[*] Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects.

[*] 3.4.3 - 2013-04-30.

[*] Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response.

[*] Added a check to re-extract the temp cacert bundle from the phar before sending each request.

[*] 3.4.2 - 2013-04-29.

[*] Bug fix: Stream objects now work correctly with "a" and "a+" modes.

[*] Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present.

[*] Bug fix: AsyncPlugin no longer forces HEAD requests.

[*] Bug fix: DateTime timezones are now properly handled when using the service description schema formatter.

[*] Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails.

[*] Setting a response on a request will write to the custom request body from the response body if one is specified.

[*] LogPlugin now writes to php://output when STDERR is undefined.

[*] Added the ability to set multiple POST files for the same key in a single call.

[*] application/x-www-form-urlencoded POSTs now use the utf-8 charset by default.

[*] Added the ability to queue CurlExceptions to the MockPlugin.

[*] Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send).

[*] Configuration loading now allows remote files.

[*] 3.4.1 - 2013-04-16.

[*] Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti.

[*] handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost.

[*] Exceptions are now properly grouped when sending requests in parallel.

[*] Redirects are now properly aggregated when a multi transaction fails.

[*] Redirects now set the response on the original object even in the event of a failure.

[*] Bug fix: Model names are now properly set even when using $refs.

[*] Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax.

[*] Added support for oauth_callback in OAuth signatures.

[*] Added support for oauth_verifier in OAuth signatures.

[*] Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection.

[*] 3.4.0 - 2013-04-11.

[*] Bug fix: URLs are now resolved correctly based on https://datatracker.ietf.org/doc/html/rfc3986#section-5.2. #289.

[*] Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289.

[*] Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263.

[*] Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.

[*] Bug fix: Added `number` type to service descriptions.

[*] Bug fix: empty parameters are removed from an OAuth signature.

[*] Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header.

[*] Bug fix: Fixed "array to string" error when validating a union of types in a service description.

[*] Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream.

[*] Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin.

[*] Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs.

[*] The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections.

[*] Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if.

[*] the Content-Type can be determined based on the entity body or the path of the request.

[*] Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder.

[*] Added support for a PSR-3 LogAdapter.

[*] Added a `command.after_prepare` event.

[*] Added `oauth_callback` parameter to the OauthPlugin.

[*] Added the ability to create a custom stream class when using a stream factory.

[*] Added a CachingEntityBody decorator.

[*] Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized.

[*] The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar.

[*] You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies.

[*] POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This.

[*] means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use.

[*] POST fields or files (the latter is only used when emulating a form POST in the browser).

[*] Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest.

[*] 3.3.1 - 2013-03-10.

[*] Added the ability to create PHP streaming responses from HTTP requests.

[*] Bug fix: Running any filters when parsing response headers with service descriptions.

[*] Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing.

[*] Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across.

[*] response location visitors.

[*] Bug fix: Removed the possibility of creating configuration files with circular dependencies.

[*] RequestFactory::create() now uses the key of a POST file when setting the POST file name.

[*] Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set.

[*] 3.3.0 - 2013-03-03.

[*] A large number of performance optimizations have been made.

[*] Bug fix: Added 'wb' as a valid write mode for streams.

[*] Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned.

[*] Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()`.

[*] BC: Removed `Guzzle\Http\Utils` class.

[*] BC: Setting a service description on a client will no longer modify the client's command factories.

[*] BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using.

[*] the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'.

[*] BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to.

[*] lowercase.

[*] Operation parameter objects are now lazy loaded internally.

[*] Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses.

[*] Added support for instantiating responseType=class responseClass classes. Classes must implement.

[*] `Guzzle\Service\Command\ResponseClassInterface`.

[*] Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These.

[*] additional properties also support locations and can be used to parse JSON responses where the outermost part of the.

[*] JSON is an array.

[*] Added support for nested renaming of JSON models (rename sentAs to name).

[*] CachePlugin.

[*] Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error.

[*] Debug headers can now added to cached response in the CachePlugin.

[*] 3.2.0 - 2013-02-14.

[*] CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients.

[*] URLs with no path no longer contain a "/" by default.

[*] Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url.

[*] BadResponseException no longer includes the full request and response message.

[*] Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface.

[*] Adding getResponseBody() to Guzzle\Http\Message\RequestInterface.

[*] Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription.

[*] Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list.

[*] xmlEncoding can now be customized for the XML declaration of a XML service description operation.

[*] Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value.

[*] aggregation and no longer uses callbacks.

[*] The URL encoding implementation of Guzzle\Http\QueryString can now be customized.

[*] Bug fix: Filters were not always invoked for array service description parameters.

[*] Bug fix: Redirects now use a target response body rather than a temporary response body.

[*] Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded.

[*] Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives.

[*] 3.1.2 - 2013-01-27.

[*] Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the.

[*] response body. For example, the XmlVisitor now parses the XML response into an array in the before() method.

[*] Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent.

[*] CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444).

[*] Fixed a bug where redirect responses were not chained correctly using getPreviousResponse().

[*] Setting default headers on a client after setting the user-agent will not erase the user-agent setting.

[*] 3.1.1 - 2013-01-20.

[*] Adding wildcard support to Guzzle\Common\Collection::getPath().

[*] Adding alias support to ServiceBuilder configs.

[*] Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface.

[*] 3.1.0 - 2013-01-12.

[*] BC: CurlException now extends from RequestException rather than BadResponseException.

[*] BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse().

[*] Added getData to ServiceDescriptionInterface.

[*] Added context array to RequestInterface::setState().

[*] Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http.

[*] Bug: Adding required content-type when JSON request visitor adds JSON to a command.

[*] Bug: Fixing the serialization of a service description with custom data.

[*] Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing.

[*] an array of successful and failed responses.

[*] Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection.

[*] Added Guzzle\Http\IoEmittingEntityBody.

[*] Moved command filtration from validators to location visitors.

[*] Added `extends` attributes to service description parameters.

[*] Added getModels to ServiceDescriptionInterface.

[*] 3.0.7 - 2012-12-19.

[*] Fixing phar detection when forcing a cacert to system if null or true.

[*] Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()`.

[*] Cleaning up `Guzzle\Common\Collection::inject` method.

[*] Adding a response_body location to service descriptions.

[*] 3.0.6 - 2012-12-09.

[*] CurlMulti performance improvements.

[*] Adding setErrorResponses() to Operation.

[*] composer.json tweaks.

[*] 3.0.5 - 2012-11-18.

[*] Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin.

[*] Bug: Response body can now be a string containing "0".

[*] Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert.

[*] Bug: QueryString::fromString now properly parses query string parameters that contain equal signs.

[*] Added support for XML attributes in service description responses.

[*] DefaultRequestSerializer now supports array URI parameter values for URI template expansion.

[*] Added better mimetype guessing to requests and post files.

[*] 3.0.4 - 2012-11-11.

[*] Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value.

[*] Bug: Cookies can now be added that have a name, domain, or value set to "0".

[*] Bug: Using the system cacert bundle when using the Phar.

[*] Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures.

[*] Enhanced cookie jar de-duplication.

[*] Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added.

[*] Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies.

[*] Added the ability to create any sort of hash for a stream rather than just an MD5 hash.

[*] 3.0.3 - 2012-11-04.

[*] Implementing redirects in PHP rather than cURL.

[*] Added PECL URI template extension and using as default parser if available.

[*] Bug: Fixed Content-Length parsing of Response factory.

[*] Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams.

[*] Adding ToArrayInterface throughout library.

[*] Fixing OauthPlugin to create unique nonce values per request.

[*] 3.0.2 - 2012-10-25.

[*] Magic methods are enabled by default on clients.

[*] Magic methods return the result of a command.

[*] Service clients no longer require a base_url option in the factory.

[*] Bug: Fixed an issue with URI templates where null template variables were being expanded.

[*] 3.0.1 - 2012-10-22.

[*] Models can now be used like regular collection objects by calling filter, map, etc.

[*] Models no longer require a Parameter structure or initial data in the constructor.

[*] Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator`.

[*] 3.0.0 - 2012-10-15.

[*] Rewrote service description format to be based on Swagger.

[*] Now based on JSON schema.

[*] Added nested input structures and nested response models.

[*] Support for JSON and XML input and output models.

[*] Renamed `commands` to `operations`.

[*] Removed dot class notation.

[*] Removed custom types.

[*] Broke the project into smaller top-level namespaces to be more component friendly.

[*] Removed support for XML configs and descriptions. Use arrays or JSON files.

[*] Removed the Validation component and Inspector.

[*] Moved all cookie code to Guzzle\Plugin\Cookie.

[*] Magic methods on a Guzzle\Service\Client now return the command un-executed.

[*] Calling getResult() or getResponse() on a command will lazily execute the command if needed.

[*] Now shipping with cURL's CA certs and using it by default.

[*] Added previousResponse() method to response objects.

[*] No longer sending Accept and Accept-Encoding headers on every request.

[*] Only sending an Expect header by default when a payload is greater than 1MB.

[*] Added/moved client options:.

[*] curl.blacklist to curl.option.blacklist.

[*] Added ssl.certificate_authority.

[*] Added a Guzzle\Iterator component.

[*] Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin.

[*] Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin).

[*] Added a more robust caching plugin.

[*] Added setBody to response objects.

[*] Updating LogPlugin to use a more flexible MessageFormatter.

[*] Added a completely revamped build process.

[*] Cleaning up Collection class and removing default values from the get method.

[*] Fixed ZF2 cache adapters.

[*] 2.8.8 - 2012-10-15.

[*] Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did.

[*] 2.8.7 - 2012-09-30.

[*] Bug: Fixed config file aliases for JSON includes.

[*] Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests.

[*] Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload.

[*] Bug: Hardening request and response parsing to account for missing parts.

[*] Bug: Fixed PEAR packaging.

[*] Bug: Fixed Request::getInfo.

[*] Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail.

[*] Adding the ability for the namespace Iterator factory to look in multiple directories.

[*] Added more getters/setters/removers from service descriptions.

[*] Added the ability to remove POST fields from OAuth signatures.

[*] OAuth plugin now supports 2-legged OAuth.

[*] 2.8.6 - 2012-09-05.

[*] Added the ability to modify and build service descriptions.

[*] Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command.

[*] Added a `json` parameter location.

[*] Now allowing dot notation for classes in the CacheAdapterFactory.

[*] Using the union of two arrays rather than an array_merge when extending service builder services and service params.

[*] Ensuring that a service is a string before doing strpos() checks on it when substituting services for references.

[*] in service builder config files.

[*] Services defined in two different config files that include one another will by default replace the previously.

[*] defined service, but you can now create services that extend themselves and merge their settings over the previous.

[*] The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like.

[*] '_default' with a default JSON configuration file.

[*] 2.8.5 - 2012-08-29.

[*] Bug: Suppressed empty arrays from URI templates.

[*] Bug: Added the missing $options argument from ServiceDescription::factory to enable caching.

[*] Added support for HTTP responses that do not contain a reason phrase in the start-line.

[*] AbstractCommand commands are now invokable.

[*] Added a way to get the data used when signing an Oauth request before a request is sent.

[*] 2.8.4 - 2012-08-15.

[*] Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin.

[*] Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable.

[*] Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream.

[*] Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream.

[*] Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5()).

[*] Added additional response status codes.

[*] Removed SSL information from the default User-Agent header.

[*] DELETE requests can now send an entity body.

[*] Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries.

[*] Added the ability of the MockPlugin to consume mocked request bodies.

[*] LogPlugin now exposes request and response objects in the extras array.

[*] 2.8.3 - 2012-07-30.

[*] Bug: Fixed a case where empty POST requests were sent as GET requests.

[*] Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body.

[*] Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new.

[*] Added multiple inheritance to service description commands.

[*] Added an ApiCommandInterface and added `getParamNames()` and `hasParam()`.

[*] Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything.

[*] Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles.

[*] 2.8.2 - 2012-07-24.

[*] Bug: Query string values set to 0 are no longer dropped from the query string.

[*] Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()`.

[*] Bug: `+` is now treated as an encoded space when parsing query strings.

[*] QueryString and Collection performance improvements.

[*] Allowing dot notation for class paths in filters attribute of a service descriptions.

[*] 2.8.1 - 2012-07-16.

[*] Loosening Event Dispatcher dependency.

[*] POST redirects can now be customized using CURLOPT_POSTREDIR.

[*] 2.8.0 - 2012-07-15.

[*] BC: Guzzle\Http\Query.

[*] Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl).

[*] Changed isEncodingValues() and isEncodingFields() to isUrlEncoding().

[*] Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool).

[*] Changed the aggregation functions of QueryString to be static methods.

[*] Can now use fromString() with querystrings that have a leading ?

[*] cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters.

[*] Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body.

[*] Cookies are no longer URL decoded by default.

[*] Bug: URI template variables set to null are no longer expanded.

[*] 2.7.2 - 2012-07-02.

[*] BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser.

[*] BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty().

[*] CachePlugin now allows for a custom request parameter function to check if a request can be cached.

[*] Bug fix: CachePlugin now only caches GET and HEAD requests by default.

[*] Bug fix: Using header glue when transferring headers over the wire.

[*] Allowing deeply nested arrays for composite variables in URI templates.

[*] Batch divisors can now return iterators or arrays.

[*] 2.7.1 - 2012-06-26.

[*] Minor patch to update version number in UA string.

[*] Updating build process.

[*] 2.7.0 - 2012-06-25.

[*] BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes.

[*] BC: Removed magic setX methods from commands.

[*] BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method.

[*] Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable.

[*] Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity).

[*] Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace.

[*] Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin.

[*] Added the ability to set POST fields and files in a service description.

[*] Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method.

[*] Adding a command.before_prepare event to clients.

[*] Added BatchClosureTransfer and BatchClosureDivisor.

[*] BatchTransferException now includes references to the batch divisor and transfer strategies.

[*] Fixed some tests so that they pass more reliably.

[*] Added Guzzle\Common\Log\ArrayLogAdapter.

[*] 2.6.6 - 2012-06-10.

[*] BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin.

[*] BC: Removing Guzzle\Service\Command\CommandSet.

[*] Adding generic batching system (replaces the batch queue plugin and command set).

[*] Updating ZF cache and log adapters and now using ZF's composer repository.

[*] Bug: Setting the name of each ApiParam when creating through an ApiCommand.

[*] Adding result_type, result_doc, deprecated, and doc_url to service descriptions.

[*] Bug: Changed the default cookie header casing back to 'Cookie'.

[*] 2.6.5 - 2012-06-03.

[*] BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource().

[*] BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from.

[*] BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data.

[*] BC: Renaming methods in the CookieJarInterface.

[*] Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations.

[*] Making the default glue for HTTP headers ';' instead of ','.

[*] Adding a removeValue to Guzzle\Http\Message\Header.

[*] Adding getCookies() to request interface.

[*] Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber().

[*] 2.6.4 - 2012-05-30.

[*] BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class.

[*] BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand.

[*] Bug: Fixing magic method command calls on clients.

[*] Bug: Email constraint only validates strings.

[*] Bug: Aggregate POST fields when POST files are present in curl handle.

[*] Bug: Fixing default User-Agent header.

[*] Bug: Only appending or prepending parameters in commands if they are specified.

[*] Bug: Not requiring response reason phrases or status codes to match a predefined list of codes.

[*] Allowing the use of dot notation for class namespaces when using instance_of constraint.

[*] Added any_match validation constraint.

[*] Added an AsyncPlugin.

[*] Passing request object to the calculateWait method of the ExponentialBackoffPlugin.

[*] Allowing the result of a command object to be changed.

[*] Parsing location and type sub values when instantiating a service description rather than over and over at runtime.

[*] 2.6.3 - 2012-05-23.

[*] [BC] Guzzle\Common\FromConfigInterface no longer requires any config options.

[*] [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields.

[*] You can now use an array of data when creating PUT request bodies in the request factory.

[*] Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable.

[*] [Http] Adding support for Content-Type in multipart POST uploads per upload.

[*] [Http] Added support for uploading multiple files using the same name (foo[0], foo[1]).

[*] Adding more POST data operations for easier manipulation of POST data.

[*] You can now set empty POST fields.

[*] The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files.

[*] Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate.

[*] CS updates.

[*] 2.6.2 - 2012-05-19.

[*] [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method.

[*] 2.6.1 - 2012-05-19.

[*] [BC] Removing 'path' support in service descriptions. Use 'uri'.

[*] [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache.

[*] [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it.

[*] [BC] Removing Guzzle\Common\XmlElement.

[*] All commands, both dynamic and concrete, have ApiCommand objects.

[*] Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits.

[*] Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored.

[*] Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible.

[*] 2.6.0 - 2012-05-15.

[*] [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder.

[*] [BC] Executing a Command returns the result of the command rather than the command.

[*] [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed.

[*] [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args.

[*] [BC] Moving ResourceIterator* to Guzzle\Service\Resource.

[*] [BC] Completely refactored ResourceIterators to iterate over a cloned command object.

[*] [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate.

[*] [BC] Guzzle\Guzzle is now deprecated.

[*] Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject.

[*] Adding Guzzle\Version class to give version information about Guzzle.

[*] Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate().

[*] Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data.

[*] ServiceDescription and ServiceBuilder are now cacheable using similar configs.

[*] Changing the format of XML and JSON service builder configs. Backwards compatible.

[*] Cleaned up Cookie parsing.

[*] Trimming the default Guzzle User-Agent header.

[*] Adding a setOnComplete() method to Commands that is called when a command completes.

[*] Keeping track of requests that were mocked in the MockPlugin.

[*] Fixed a caching bug in the CacheAdapterFactory.

[*] Inspector objects can be injected into a Command object.

[*] Refactoring a lot of code and tests to be case insensitive when dealing with headers.

[*] Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL.

[*] Adding the ability to set global option overrides to service builder configs.

[*] Adding the ability to include other service builder config files from within XML and JSON files.

[*] Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method.

[*] 2.5.0 - 2012-05-08.

[*] Major performance improvements.

[*] [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated.

[*] [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component.

[*] [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}".

[*] Added the ability to passed parameters to all requests created by a client.

[*] Added callback functionality to the ExponentialBackoffPlugin.

[*] Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies.

[*] Rewinding request stream bodies when retrying requests.

[*] Exception is thrown when JSON response body cannot be decoded.

[*] Added configurable magic method calls to clients and commands. This is off by default.

[*] Fixed a defect that added a hash to every parsed URL part.

[*] Fixed duplicate none generation for OauthPlugin.

[*] Emitting an event each time a client is generated by a ServiceBuilder.

[*] Using an ApiParams object instead of a Collection for parameters of an ApiCommand.

[*] cache.* request parameters should be renamed to params.cache.*.

[*] Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle.

[*] Added the ability to disable type validation of service descriptions.

[*] ServiceDescriptions and ServiceBuilders are now Serializable.

[+] Добавлена поддержка CS-Cart 4.13.2.

v4.0.1 от 2021-08-24

[!] Исправлено отображение полей типа date.

[!] Исправлено сохранение даты в настройках способа оплаты.

v4.0.0 от 2021-08-23

[+] Модуль адаптирован для CS-Cart, а не только для Multi-Vendor.

[+] Добавлена форма на странице оформления заказа и соответствующие настройки.

[+] Добавлена настройка для скрытия данных в счёте.

[+] Добавлены кнопки получения счёта на странице завершения заказа.

[+] Добавлены настройки отображения кнопок получения счёта.

[+] Возвращены поля ФИО для индивидуальных предпринимателей и физических лиц.

[*] Изменён артикул модуля.

[*] Изменены языковые переменные.

[!] Исправлены поля типа date.

[!] Исправлено отображение кнопок счёта для другого способа оплаты в подробной информации о заказе.

[!] Исправлено отображение обязательных полей после смены типа контрагента.

v3.1.1 от 2021-08-04

[-] Удалены поля ФИО для индивидуальных предпринимателей и физических лиц.

[!] Исправлено отображение обязательных полей после смены типа контрагента.

v3.1.0 от 2021-08-03

[+] Добавлены поля ФИО для индивидуальных предпринимателей.

[+] Добавлены дополнительные поля для физических лиц.

[!] Исправлены стили полей типа date.

v3.0.0 от 2021-07-01

[+] Добавлен новый тип контрагента "Физическое лицо".

[+] Добавлены настройки отображаемых полей.

[+] Добавлена настройка для включения и отключения полей с реквизитами покупателя.

[+] Добавлена английская локализация.

v2.0.0 от 2021-04-24

[+] Добавлен способ оплаты для выставления счёта по данным, собранным модулем.

[*] Изменён артикул модуля.

v1.0.0 от 2021-04-24

[+] Первое издание.

Обозначения:

[+] Добавлено

[-] Удалено

[*] Изменено

[!] Исправлена ошибка

Отзывы

Здесь можно поделиться своим мнением и оценить нашу работу.

Ваши отзывы помогают нам стать лучше и предлагать вам еще более качественный сервис.

Похожие модули