Я настраиваю оплату через Ю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" при бесплатной доставке?
Проблема с пустым значением параметра "currency" в запросе к ЮKассе при использовании бесплатной доставки может быть связана с тем, как система 1С-Битрикс обрабатывает заказы с нулевой стоимостью доставки. В некоторых случаях, если сумма заказа не включает доставку (например, при самовывозе), это может приводить к отсутствию информации о валюте. Вот несколько возможных способов решения этой проблемы: 1. **Проверка настроек доставки**: Убедитесь, что в настройках бесплатной доставки в 1С-Битрикс правильно указаны параметры. Возможно, есть поля, которые нужно заполнить для того, чтобы валюта корректно передавалась. 2. **Фиксация стоимости доставки**: Если возможно, рассмотрите возможность фиксации стоимости доставки на уровне, который позволит системе всегда возвращать эту стоимость с установленной валютой. Например, можно задать минимальную стоимость доставки (даже 0.01), чтобы избежать проблем при расчетах. 3. **Адаптация обработчика платежей**: Возможно, вам потребуется изменить код обработчика платежей (YandexCheckoutHandler) для того, чтобы он подставлял валюту, даже когда стоимость доставки равна нулю. Вам нужно будет проверить, в каких местах формируется запрос и добавить проверку на пустое значение валюты и присваивать ей значение по умолчанию (например, "RUB"). 4. **Обновление версии модуля или платформы**: Если вы используете устаревшую версию 1С-Битрикс или модуля для ЮKассы, возможно, в более новых версиях были исправлены баги, касающиеся работы с валютами. Проверьте наличие обновлений и обновите систему, если это возможно. 5. **Обратитесь в техническую поддержку**: Если описанные выше шаги не помогли, рекомендуется обратиться в техническую поддержку 1С-Битрикс или к разработчикам модуля ЮKасса. Они смогут более детально проанализировать вашу систему и предложить конкретные решения. 6. **Логи и ошибки**: Также стоит внимательно изучить другие логи и ошибки, которые могут возникать на стороне 1С-Битрикс, чтобы понять, происходят ли какие-то другие сбои при обработке заказа. Следуя этим рекомендациям, вы сможете устранить проблему с пустым значением параметра "currency" при бесплатной доставке.