Яндекс Пэй
Яндекс Пэй — платёжный сервис Яндекса. По одной ссылке покупатель может оплатить
банковской картой, через СБП или Сплитом — частями, без переплаты. При оплате
Сплитом вы получаете всю сумму сразу, рассрочку покупателю предоставляет Яндекс.
Подключение одно на все способы. Какие из них показывать покупателю, вы выбираете
в настройках проекта или прямо в ссылке: например, только Сплит для дорогих товаров.
Подключение
Шаг 1. Настройки в кабинете Яндекс Пэй
- Зарегистрируйте магазин в консоли Яндекс Пэй и
пройдите модерацию. - Откройте Настройки и скопируйте Merchant ID.
- Там же нажмите Выпустить ключ Merchant API и сохраните ключ. Он показывается
один раз, при закрытии окна посмотреть его снова нельзя. - Нажмите Добавить Callback URL и вставьте адрес:
https://chatter.salebot.pro/yandex_pay_callback
Пункты «Добавить Callback URL для YCP» и «Чекаут» относятся к другому продукту
Яндекса и для работы с Salebot не нужны.
Шаг 2. Настройки в Salebot
Откройте в проекте Интеграции → Платёжные системы → Яндекс Пэй и заполните:
| Поле | Что указать |
|---|---|
| Merchant ID | идентификатор из консоли Яндекса |
| Ключ Merchant API | ключ из консоли Яндекса |
| Тестовый режим | включите только на время проверки, см. раздел «Тестовый режим» |
| Ставка НДС для чека | ставка, которая попадёт в чек покупателя. Если чеки вы не отправляете, оставьте пустым |
| Способы оплаты по умолчанию | что показывать на форме оплаты: карта и Сплит, только карта или только Сплит |
Чтобы отключить Яндекс Пэй, очистите поля Merchant ID и ключа.
Как принимать оплату
Кнопка оплаты в блоке
В блоке добавьте кнопку с типом «Оплата», выберите платёжную систему Яндекс Пэй,
укажите название товара и сумму. При необходимости заполните данные чека и контакт
покупателя. Способы оплаты на форме берутся из настроек проекта.
Функции калькулятора
get_yandex_pay_payment_url(amount, description, products_for_receipt, customer_phone, customer_email, expired, payment_methods, preferred_method, extra_params) — создаёт ссылку на оплату.
| Параметр | Описание |
|---|---|
amount |
сумма в рублях, минимум 1 ₽. Единственный обязательный параметр |
description |
назначение платежа. Показывается покупателю на форме оплаты и попадает в чек, если чек не задан отдельно. Необязательный параметр |
products_for_receipt |
позиции чека, JSON-массив. Формат тот же, что у get_tinkoff_payment_url, см. раздел «Чек». Необязательный параметр |
customer_phone |
телефон покупателя. Необязательный параметр |
customer_email |
почта покупателя. На неё Яндекс отправит электронный чек. Необязательный параметр |
expired |
срок жизни ссылки в секундах, от 120 до 604800 (7 дней). По умолчанию 1800 (30 минут). Необязательный параметр |
payment_methods |
способы оплаты на форме: "CARD" — только карта, "SPLIT" — только Сплит, "CARD,SPLIT" — покупатель выбирает сам. Если не указать, берётся настройка проекта. Необязательный параметр |
preferred_method |
какой способ будет выбран на форме заранее: "SPLIT" или "CARD". Необязательный параметр |
extra_params |
JSON с дополнительными полями запроса к Яндексу для тонкой настройки, например {"orderSource":"CRM"}. Необязательный параметр |
get_yandex_split_payment_url(amount, description, products_for_receipt, customer_phone, customer_email, expired, extra_params) — то же самое, но на форме только Сплит.
Результат функции — ссылка на оплату. Запишите её в переменную и отправьте клиенту.
Пример. Ссылка на 2990 ₽, покупатель сам выбирает карту или Сплит:
pay_link = get_yandex_pay_payment_url(2990, "Курс «Старт»")
Пример. Только Сплит, ссылка живёт час, чек уйдёт на почту клиента:
pay_link = get_yandex_split_payment_url(2990, "Курс «Старт»", "", #{phone}, #{email}, 3600)
Пример. Карта и Сплит, но форма открывается сразу на Сплите:
pay_link = get_yandex_pay_payment_url(2990, "Курс «Старт»", "", "", #{email}, "", "CARD,SPLIT", "SPLIT")
Если ссылка не создалась, функция вернёт пустое значение, а текст ошибки будет в
переменной error_payment_func.
Магазин, лендинги и курсы
В настройках оплаты магазина, минилендинга или тарифа курса выберите Яндекс Пэй
в списке платёжных систем. Способы оплаты на форме берутся из настроек проекта.
Яндекс Сплит
Сплит подключается в консоли Яндекса вместе с Яндекс Пэй, отдельной настройки в Salebot
для него нет. Чтобы предлагать покупателю только Сплит:
- для всего проекта — выберите «Только Сплит» в поле «Способы оплаты по умолчанию»;
- для отдельной ссылки — используйте
get_yandex_split_payment_urlили передайте
"SPLIT"в параметреpayment_methods.
Сумма к вам приходит целиком и сразу, независимо от того, на сколько частей покупатель
разбил платёж. Чем оплатили, можно узнать из переменных после оплаты:
yandex_pay_payment_method и yandex_pay_is_split.
Чек
Яндекс Пэй умеет отправлять покупателю электронный чек. Для этого:
- Включите фискализацию в консоли Яндекса.
- Укажите ставку НДС в настройках Яндекс Пэй в Salebot.
- Передавайте почту или телефон покупателя: без контакта чек отправить некуда.
Если в ссылке не передан список позиций, в чек попадает одна позиция с названием из
description на всю сумму. Чтобы передать несколько позиций, заполните
products_for_receipt:
[
{
"name": "Курс «Старт»",
"quantity": 1,
"price": 2490,
"amount": 2490,
"tax": "4",
"object": "service",
"method": "full_payment"
},
{
"name": "Консультация",
"quantity": 1,
"price": 500,
"amount": 500,
"tax": "1"
}
]
| Поле | Описание |
|---|---|
name |
название позиции |
quantity |
количество |
price |
цена за единицу |
amount |
сумма по позиции, price × quantity
|
tax |
ставка НДС: 1 — без НДС, 2 — 0 %, 3 — 10 %, 4 — 20 %, 5 — 10/110, 6 — 20/120, 7 — 5 %, 8 — 7 %, 10 — 5/105, 11 — 7/107, 12 — 22 %, 13 — 22/122. Если не указать, берётся ставка из настроек проекта |
object |
предмет расчёта: commodity — товар, service — услуга, payment — платёж. Необязательное поле |
method |
способ расчёта: full_payment — полная оплата, full_prepayment — предоплата. Необязательное поле |
Сумма всех позиций должна совпадать с amount ссылки. Если не совпадает, в чек уйдёт
одна позиция на всю сумму.
Колбеки: как бот узнаёт об оплате
После оплаты Яндекс присылает уведомление, и в диалог с клиентом приходит служебное
сообщение:
KEY_success 2990
где KEY — первые 10 символов вашего ключа Merchant API, а число — сумма платежа.
Настройте на это сообщение блок, который выдаёт клиенту доступ или подтверждает заказ.
Если оплата не прошла или ссылка истекла, приходит:
KEY_fail 2990
Обратите внимание на сроки. Ссылка перестаёт работать в момент истечения expired
(по умолчанию через 30 минут). Сообщение _fail по неоплаченной ссылке Яндекс
присылает позже, обычно через 15–40 минут после истечения. Если сценарию нужно точно
знать момент, когда ссылка перестала действовать, считайте его по таймеру от создания
ссылки, а _fail используйте как подтверждение.
Возврат покупателя со страницы оплаты обратно в бота оплату не подтверждает: он лишь
открывает диалог. Доступ выдавайте только по сообщению _success.
Переменные
После обработки уведомления в переменных клиента доступны:
| Переменная | Значение |
|---|---|
yandex_pay_payment_completed |
True — оплачено, False — отказ или истекла ссылка |
yandex_pay_payment_method |
чем оплатили: CARD — карта, SPLIT — Сплит, SBP — СБП, SPLIT_SBP — Сплит через СБП |
yandex_pay_is_split |
True, если платили Сплитом |
yandex_pay_order_id |
номер заказа в Salebot; по нему делается возврат |
yandex_pay_operation_id |
номер операции списания у Яндекса |
yandex_pay_error_code |
код причины отказа, например NOT_ENOUGH_FUNDS или USER_DID_NOT_START_PAYMENT
|
Тестовый режим
Проверить сценарий можно без реальных списаний.
- В консоли Яндекса включите переключатель Тестовые данные в правом верхнем углу
раздела «Настройки». Кабинет покажет тестовые параметры. - Нажмите Добавить Callback URL (с пометкой «Тестовый») и вставьте тот же адрес,
что в шаге 1 подключения. - В Salebot включите Тестовый режим, в поле Merchant ID и в поле ключа вставьте
тестовый Merchant ID: в тестовой среде ключ равен ему. - Создайте ссылку и оплатите её. Форма предложит тестовые карты, деньги не списываются.
Результат оплаты можно задать суммой:
| Сумма | Результат |
|---|---|
| 10000 ₽ и любые другие | оплата прошла |
| 10001 ₽ | ошибка «Оплата не прошла» |
| 10002 ₽ | ошибка «Недостаточно средств» |
После проверки выключите тестовый режим и вставьте боевые Merchant ID и ключ.
Ограничения
- Валюта — рубли (для магазинов в Узбекистане — сумы), минимальная сумма 1 ₽.
- Автоплатежей и подписок по ссылке Яндекс Пэй нет.
- Двухстадийная оплата (холдирование) не поддерживается.
- Сплит доступен, только если он включён для вашего магазина в консоли Яндекса.