Почему при настройке бесплатной доставки в 1C-Битрикс не учитывается валюта?

Я настраиваю оплату через ЮKассу в 1С Битрикс для интернет-магазина и столкнулась с проблемой: при оформлении заказа с бесплатной доставкой (самовывоз) параметр "currency" в запросе оказывается пустым. Это приводит к ошибке при создании платежа в ЮKассе. Если установить какую-либо стоимость доставки, валюта корректно указывается, запрос проходит, и платеж успешно создается.

Вот примеры логов из системы:

<pre><code>Sale\Handlers\PaySystem\YandexCheckoutHandler. InitiatePay: На стороне ЮKassa что-то пошло не так
04.12.2024 01:05:25</code></pre>

<pre><code>Sale\Handlers\PaySystem\YandexCheckoutHandler: response data: { "type" : "error", "id" : "01938e8e-8486-70c8-81ac-f3780a0785fd", "code" : "internal_server_error", "description" : "Internal server error" }
04.12.2024 01:05:25</code></pre>

<pre><code>Sale\Handlers\PaySystem\YandexCheckoutHandler: request data: {"description":"Оплата №9TK9\/1 заказа №9TK9 для zakypka@yandex.ru","amount":{"value":"3","currency":"RUB"},"capture":true,"metadata":{"BX_PAYMENT_NUMBER":290,"BX_PAYSYSTEM_CODE":"13","BX_HANDLER":"YANDEX_CHECKOUT","cms_name":"api_1c-bitrix"},"confirmation":{"type":"redirect","return_url":"https:\/\/site.com\/order\/payment\/?ORDER_ID=9TK9&PAYMENT_ID=9TK9\/1"},"receipt":{"customer":{"email":"zakypka@yandex.ru","phone":"+799999999"},"items":[{"description":"Стержень","amount":{"value":"3","currency":"RUB"},"vat_code":1,"quantity":"1","measure":"piece","payment_subject":"commodity","payment_mode":"full_payment"},{"description":"Доставка","amount":{"value":"0","currency":""},"vat_code":1,"quantity":"1","measure":"piece","payment_subject":"payment","payment_mode":"full_payment"}],"tax_system_code":"3"}}</code></pre>

Подскажите, как решить эту проблему с пустым параметром "currency" при бесплатной доставке?
  • 4 декабря 2024 г. 19:03
Ответы на вопрос 1
Проблема с пустым значением параметра "currency" в запросе к ЮKассе при использовании бесплатной доставки может быть связана с тем, как система 1С-Битрикс обрабатывает заказы с нулевой стоимостью доставки. В некоторых случаях, если сумма заказа не включает доставку (например, при самовывозе), это может приводить к отсутствию информации о валюте.

Вот несколько возможных способов решения этой проблемы:

1. **Проверка настроек доставки**:
   Убедитесь, что в настройках бесплатной доставки в 1С-Битрикс правильно указаны параметры. Возможно, есть поля, которые нужно заполнить для того, чтобы валюта корректно передавалась.

2. **Фиксация стоимости доставки**:
   Если возможно, рассмотрите возможность фиксации стоимости доставки на уровне, который позволит системе всегда возвращать эту стоимость с установленной валютой. Например, можно задать минимальную стоимость доставки (даже 0.01), чтобы избежать проблем при расчетах.

3. **Адаптация обработчика платежей**:
   Возможно, вам потребуется изменить код обработчика платежей (YandexCheckoutHandler) для того, чтобы он подставлял валюту, даже когда стоимость доставки равна нулю. Вам нужно будет проверить, в каких местах формируется запрос и добавить проверку на пустое значение валюты и присваивать ей значение по умолчанию (например, "RUB").

4. **Обновление версии модуля или платформы**:
   Если вы используете устаревшую версию 1С-Битрикс или модуля для ЮKассы, возможно, в более новых версиях были исправлены баги, касающиеся работы с валютами. Проверьте наличие обновлений и обновите систему, если это возможно.

5. **Обратитесь в техническую поддержку**:
   Если описанные выше шаги не помогли, рекомендуется обратиться в техническую поддержку 1С-Битрикс или к разработчикам модуля ЮKасса. Они смогут более детально проанализировать вашу систему и предложить конкретные решения.

6. **Логи и ошибки**:
   Также стоит внимательно изучить другие логи и ошибки, которые могут возникать на стороне 1С-Битрикс, чтобы понять, происходят ли какие-то другие сбои при обработке заказа.

Следуя этим рекомендациям, вы сможете устранить проблему с пустым значением параметра "currency" при бесплатной доставке.
Похожие вопросы