Подключение Яндекс Пэй в 1С-Битрикс

Бесплатный модуль

Чтобы оплачивать покупки при помощи Яндекс Пэй и Сплит в 1С-Битрикс, нужно установить специальный модуль. Модуль предоставляется ООО «Яндекс» бесплатно.

Внимание

Описанные функциональные возможности доступны в модуле версии 1.4.6 и выше. Версия 1С-Битрикс должна быть не ниже 19.0.0.

Подробнее о модуле читайте на сайте партнера.

Возможности модуля

Полный возврат

Частичный возврат

Частичный возврат по одной позиции

Получение ссылки на оплату

Получение прямого QR

Получение обратного QR

Установка модуля

Вы можете установить модуль Яндекс Пэй из Маркетплейс 1С-Битрикс:

  1. Откройте страницу модуля одним из способов:

    • перейдите по прямой ссылке на страницу в браузере;
    • в 1С-Битрикс перейдите в Магазин → Настройки → Платежные системы, нажмите на значок стрелки на кнопке Добавить платежную систему и выберите опцию Установить из маркетплейса. В появившемся списке выберите «Официальный модуль Яндекс Пэй».
  2. Под названием модуля «Официальный модуль Яндекс Пэй» нажмите кнопку Установить.

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

  4. В новом окне браузера откроется панель управления указанного сайта. В списке обновлений будет доступна установка модуля «Официальный модуль Яндекс Пэй». Нажмите кнопку Загрузить и примите условия лицензионных соглашений.

  5. После скачивания модуля в том же окне появится возможность установить решение — нажмите кнопку Установить.

Регистрация в Яндекс Пэй

  1. Последовательно авторизуйтесь в Яндекс ID и личном кабинете Яндекс Пэй по шагам в разделе Регистрация.

  2. В личном кабинете на вкладке Сервисы заполните данные о вашем магазине.

  3. Перейдите в раздел Настройки и в выпадающем списке сверху выберите нужный магазин.

  4. Скопируйте Merchant ID и API-ключ. Эти данные понадобятся вам при добавлении платежной системы в 1С-Битрикс.

    Примечание

    Если вы не использовали API-ключ до этого, сначала его необходимо выпустить. О том, как это сделать, читайте в разделе Выпуск API-ключа.

  5. На странице Сайт для получения уведомлений об оплатах укажите Callback URL: https://#DOMAIN#/bitrix/services/yandexpay.pay/trading/, где #DOMAIN# — адрес сайта в Битриксе.

Добавление платежной системы

  1. В 1С-Битрикс зайдите в Магазин → Настройки → Платежные системы. В правом верхнем углу нажмите кнопку Добавить платежную систему.

  2. Заполните основные параметры платежной системы:

    Параметр

    Значение

    Обработчик

    Яндекс Пэй (yandexpay)

    Название

    Яндекс Пэй

    Доступные методы оплаты на платежной форме Яндекс Пэй

    Выберите Пэй и Сплит, чтобы в вашем магазине были доступны оба способа оплаты.

    Кодировка

    UTF-8

    Merchant ID

    Укажите Merchant ID магазина, для которого вы настраиваете платежную систему.

    API-ключ

    Укажите API-ключ, полученный в личном кабинете Яндекс Пэй.

    Примечание

    Если Merchant ID и API-ключ в параметрах платежной системы уже были заполнены, нажмите ссылку Показать все, отключите опцию По умолчанию и введите новые значения.

    Время жизни ссылки (в секундах)

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

    Доступный диапазон значений, в секундах: от 180 до 604 800, значение по умолчанию — 1800.

    Примечание

    После того, как пользователь перешел по ссылке, на завершение оплаты дополнительно отводится 15 минут. Если в течение отведенного времени оплата не произошла, заказ считается не оплаченным.

    Остальные параметры заполните самостоятельно по необходимости.

    Если вы хотите разделить кнопки оплат для Пэй и Сплит

    Чтобы полная оплата и Сплит на сайте магазина были доступны через отдельные кнопки, добавьте платежную систему дважды:

    • с названием Яндекс Пэй и методом оплаты Пэй — для Пэй;
    • с названием Яндекс Сплит и методом оплаты Сплит — для Сплит.
  3. Внизу страницы нажмите кнопку Применить, чтобы продолжить настройку платежной системы, или Сохранить, чтобы сохранить изменения и выйти из настроек.

Тестирование

Чтобы проверить корректность обработки платежей c помощью Яндекс Пэй, включите тестовый режим:

  1. В административной панели 1С-Битрикс перейдите в Магазин → Настройки → Платежные системы → Яндекс Пэй и нажмите кнопку Изменить.

  2. В блоке Настройка обработчика ПС нажмите ссылку Показывать все и включите опцию Тестовый режим.

  3. Включите опцию Активность.

    Примечание

    Если опция Активность уже была включена, то отключите ее и установите заново.

  4. Создайте заказ на сайте магазина, выберите платежную систему Яндекс Пэй и оплатите покупку одной из тестовых карт.

  5. Чтобы проверить возвраты, на административной панели 1С-Битрикс зайдите на страницу просмотра заказа через Магазин → Заказы. Подробнее о возвратах читайте в главах Полный возрат и Частичный возврат.

Если вы используете копию сайта для разработчиков, в личном кабинете Яндекс Пэй отметьте Показать настройки тестовой среды и замените доменное имя в поле Callback URL. Копия для разработчиков должна быть доступна по HTTPS-протоколу без дополнительной авторизации (например, HTTP-авторизации).

Настройка онлайн-чеков

В соответствии с 54-ФЗ магазин должен печатать онлайн-чек.

1С-Битрикс поддерживает подключение для следующих касс:

Полный список касс смотрите в документации Битрикс.

Посмотреть настроенные кассы можно через Магазин → Кассы → Список касс.

Настройте печать чеков:

  1. Проверьте, что в Битрикс уже была добавлена касса, или добавьте новую.
  2. На вкладке Ограничения проверьте, что отсутствует ограничение по платежным системам. Разрешите системе использовать новую платежную систему, дважды нажав на строку с ограничением.
  3. Зайдите в Магазин → Настройки → Платежные системы → Яндекс Пэй и включите опцию Разрешить печать чеков.

Если касса уже была подключена к 1С или CRM, а обмен заказами настроен, вы можете продолжить печать чеков без внесения дополнительных изменений.

Настройка журнала событий

Журнал событий, связанных с заказами, доступен на странице платежной системы на вкладке Журнал Яндекс Пэй.

По умолчанию после создания платежной системы журнал работает в режиме отладки. Чтобы включить запись в журнал ошибок и любых действий с заказами:

  1. В административной панели 1С-Битрикс перейдите в Магазин → Настройки → Платежные системы → Яндекс Пэй и нажмите кнопку Изменить.

  2. В блоке Настройка обработчика ПС на вкладке По умолчанию в поле Содержание журнала событий выберите Информация.

  3. Справа от поля включите опцию По умолчанию.

  4. Внизу страницы нажмите кнопку Сохранить и проверьте запись событий в журнал.

    Если события не записываются

    Если вы включили запись событий, но они не отображаются в журнале:

    1. В блоке Настройка обработчика ПС проверьте, что для всех типов плательщика справа от поля Содержание журнала событий включена опция По умолчанию.

    2. Проверьте ошибки, которые происходят до обработки запроса yandexpay.pay — настройте логирование ошибок 1С-Битрикс с 'handled_errors_types' => 20853 и проверьте лог.

Публикация

После настройки и тестирования подготовьте Яндекс Пэй к приему оплат от покупателей:

  1. В административной панели 1С-Битрикс перейдите в Магазин → Настройки → Платежные системы → Яндекс Пэй и нажмите кнопку Изменить.

  2. В блоке Настройка обработчика ПС нажмите ссылку Показывать все и отключите опцию Тестовый режим.

  3. Включите опцию Активность.

    Примечание

    Если опция Активность уже была включена, то отключите ее и установите заново.

  4. Если вы выполняли настройку на копии сайта для разработчиков, в личном кабинете Яндекс Пэй снимите переключатель Показать настройки тестовой среды, а в поле Callback URL замените доменное имя сайта.

  5. Оформите заказ и выполните оплату через Яндекс Пэй. Дождитесь печати чека и выполните возврат. Подробнее о возвратах читайте в главах Полный возрат и Частичный возврат.

Если у вас возникли сложности с настройкой или замечания по проведению платежей, напишите разработчикам модуля 1С-Bitrix.

Полный возврат

Для осуществления возврата:

  1. В административной панели 1С-Битрикс перейдите в окно просмотра оформленного заказа через Магазин → Заказы.
  2. В разделе Оплата нажмите на статус оплаты Оплачен и выберите в выпадающем меню Возврат.
  3. Во всплывающем окне в поле Вернуть на выберите Яндекс Пэй и нажмите кнопку Сохранить.
  4. Проверьте значение поля Статус заказа в разделе Параметры заказа.

Частичный возврат

Внимание

На текущий момент 1С-Битрикс не поддерживает частичные возвраты.

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

Для корректного оформления частичного возврата товаров:

  1. Сделайте полный возврат по заказу.
  2. Скопируйте старый заказ.
  3. Уберите ненужные позиции и сохраните новый заказ.
  4. После оплаты нового заказа напечайте чек заново.

Частые проблемы

При возникновении проблем с подключением проверьте, что следующие параметры введены верно:

  • Merchant ID
  • API-ключ

Если эти настройки корректны, то посмотрите список самых частых проблем и их решений:

Ошибка

Варианты решения

Ошибка "response_status": 404. Возникает при запросе к Callback URL.

В личном кабинете Яндекс Пэй проверьте Сallback URL, скорее всего, он введен неверно.

Внимание

При регистрации аккаунта в Яндекс Пэй через кнопку Настроить Яндекс Пэй Callback URL НЕ передается, поэтому его необходимо выставить вручную в личном кабинете Яндекс Пэй: https://#DOMAIN#/bitrix/services/yandexpay.pay/trading/.

Ошибка редиректов со слешем «/» или без слеша при запросе на /bitrix/services/yandexpay.pay/trading/.

В файле .htaccess добавьте исключение RewriteCond %{REQUEST_URI} !^/bitrix/ перед пользовательскими правилами RewriteRule.

Внимание

Исключение нельзя добавлять перед RewriteRule ^(.*)$ /bitrix/urlrewrite.php.

Ошибка "reasonCode": "OTHER", "reason": "orderId is missing". Возникает, если при запросе из-за редиректа с адреса без «/» на адрес с «/» потерян orderId.

После оформления через Битрикс не выводится кнопка оплаты на финальной странице заказа.

  • Проверьте шаблон страницы confim.php компонента sale.order.ajax на наличие вывода кода обработчика из переменной <?=$arPaySystem["BUFFERED_OUTPUT"]?>.
  • Проверьте, для какого идентификатора платежной системы включен указанный выше код. Идентификатор платежной системы Яндекс Пэй должен подходить под условие, заданное в коде.
  • Если идентификатор платежной системы в коде задан корректно, но кнопка не отображается, то проверьте, корректны ли значения переменных, содержащих информацию о платежной системе.
Пример

image

В этом примере предусмотрен вывод только для платежных систем с индентификаторами 3 и 5, поэтому кнопка оплаты Яндекс Пэй не будет отображаться.

ЧПУ для карточки товара формируется кастомно: не только по правилу формирования из инфоблока, но, например, где-то в коде.

Установите опцию для расширения конечного шаблона ЧПУ: \YandexPay\Pay\Config::setOption('injection_engine_element_greedy', '#GREEDY#/');, где #GREEDY# — конечный шаблон.

Пример
  • #GREEDY#/
  • #GREEDY#.html
  • #GREEDY#/#GREEDY#.html

Отладка ошибок при запросах на /bitrix/services/yandexpay.pay/trading/button/data/#rout#.

В настройках платежной системы или чекаута установите опцию Содержание журнала событий в режим «Отладка». В этом режиме все запросы в платежной системе будут записываться и отображаться на вкладке Журнал Яндекс Пэй.

Ошибка с render html\text в ответе. В результате возвращается HTML-страница.

  • Отключите HTTP-авторизацию, если она настроена.

  • Проверьте, что указан верный Сallback URL для тестового режима.

  • Проверьте, установлен ли на тестовой среде SSL-сертификат. Если нет, установите его, чтобы сайт был доступен по протоколу HTTPS.

  • Установите правило в urlrewrite.php на стороне клиента:

    24 =>
    array (
        'CONDITION' => '#^/bitrix/services/yandexpay.pay/trading/#',
        'RULE' => '',
        'ID' => '',
        'PATH' => '/bitrix/services/yandexpay.pay/trading/index.php',
        'SORT' => 1,
    ),
    

Включено боевое окружение, но страница оплаты открывается в sandbox.

  1. В настройках платежной системы 1С-Битрикс на вкладке Физическое лицо или Юридическое лицо проверьте, что установлены индивидуальные настройки для сайта.

  2. На вкладке По умолчанию проверьте, какой режим работы включен. Если включен тестовый режим, отключите его.

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

Ошибка 404 на одном из доменов, которые управляются из одной административной панели Битрикса.

Пример

У партнера два домена: https://m.merchant.com и https://merchant.com.

Если на втором сайте с поддоменом есть urlrewrite, установите правило:

array ( 
    'CONDITION' => '#^/bitrix/services/yandexpay.pay/trading/#', 
    'RULE' => '', 
    'ID' => '', 
    'PATH' => '/bitrix/services/yandexpay.pay/trading/index.php', 
    'SORT' => 1, 
),

Ошибка Incorrect payment params в консоли сайта при попытке оплаты и сообщение «Что-то пошло не так» на кнопке оплаты.

Проверьте, что вы указали верные Merchant ID и API-ключ из личного кабинета Яндекс Пэй. Для тестовой среды эти значения должны совпадать.

Ошибка 404 в консоли сайта при попытке оплаты и сообщение «Что-то пошло не так» на кнопке оплаты.

Проверьте, что:

  • в корне сайта мобильной версии в файле urlrewrite.php присутствует правило для скрипта bitrix/services/yandexpay.pay/trading/index.php;
  • в файле .htaccess присутствует правило для bitrix/urlrewrite.php;
  • во вложенных директориях bitrix, bitrix/services, bitrix/services/yandexpay.pay, bitrix/services/yandexpay.pay/trading отсутствует файл .htaccess, который отключает обработку mod_rewrite;
  • для конфигурации nginx+php-fpm — location для URL содержит правило urlrewrite. Чтобы определить параметр location, который используется для обработки адреса, установите директиву add_header.

Для отладки потребуются файлы .htaccess и urlrewrite.php, а также конфигурация nginx для мобильной версии.

Если вы используете shared-сервер, уточните у хостинг-провайдера, какие оптимизации веб-сервера включены для мобильной версии сайта.

Для отладки shared-хостинга потребуется ответ хостинг-провайдера с описанием включенных услуг.

После оплаты заказа не выставляется флаг Y у Статус оплаты.

В файле модуля lib/trading/action/rest/orderwebhook/stage/orderpay.php добавьте строку: $data['PS_STATUS'] = 'Y';.

Скриншот

image

Ошибка Return value must be of type ?int, string returned после обновления версии PHP.

Установите верный тип данных:

public function paymentTtl(Payment payment) : int { return (int)this->getParamValue($payment, 'PAYMENT_TTL');
}

Системные настройки модуля

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

Расшифровка

Pay\Config::getOption('check_product_available', 'Y')

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

Pay\Config::getOption('check_product_validate', 'Y')

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

Pay\Config::getOption('library_query')

Показывает, какая версия jquery установлена. Работает в административной панели.

Pay\Config::getOption('injection_engine_element_greedy', '')

Используется для установки кастомного ЧПУ для карточки товара.

Pay\Config::getOption('log_expire_days', 10)

Используется для установки количества дней для очистки логов.

Pay\Config::getOption('set_http_host', 'N')

Передает http host в запросы от Яндекс Пэй.

Pay\Config::getOption('region_cookie', '')

Используется для установки региона в куки при запросах для Аспро решений.

Pay\Config::getOption('stores_by_available')

Используется для установки стратегии получения складов магазина, ”all” — учитывает наличие корзины товаров на всех складах.

Pay\Config::getOption('catalog_store_description', '#DESCRIPTION#')

Используется для установки шаблона для описания складов, ”#DESCRIPTION#” — описание будет состоять только из значения поля Описание.

Pay\Config::getOption('environment_product_provider', '')

Используется для установки кастомного product provider. Указывается класс для провайдера товаров формирования корзины.

Предыдущая