Подключение Яндекс Кассы

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

Разберем пошагово, как внедрить прием оплаты банковской картой или через платежную систему Яндекс.Деньги с помощью сервиса Яндекс Касса. Для этого потребуется подключение вашей организации к сервису Яндекс Касса.

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

Для работы Яндекс Кассы проверьте, чтобы в папке /module/ системы управления была загружена папка get_payments, включая файл в ней kassa.php.

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

Добавляем способ оплаты в админке

В панели администратора идем в Настройки - Способы оплаты - Добавить и создаем новый способ оплаты.

Название и описание можно использовать в шаблоне для представления подробной информации о способе оплаты покупателям.
Мин/Макс стоимость - если сумма вне этих рамок, то обработчик показываться не будет
Активность - только отмеченный способ оплаты будет показываться на сайте
Обработчик - путь в шаблоне к "кнопке" или форме оплаты

Добавляем важные для Яндекс Кассы характеристик (свойства) платежа.
SHOP_ID - идентификатор магазина в Яндекс Кассе
SHOP_KEY - секретный ключ для интеграции
 

Добавляем способ оплаты в админке

Оформляем шаблон

Размещаем ссылку для оплаты, оформляем ее нужным способом. Название и расположение файла указано в поле Обработчик на предыдущем шаге. Опция "открыть в новом окне" позволяет открыть ссылку для оплаты в новом окне.

Пример:

<a href="{$page.link_yakassa}" {if !empty($pay.new_window)}target="_blank"{/if} class="btn">{$pay.title}</a>
{if !empty($pay.description)}
<br><small>{$pay.description}</small>
{/if}

 

Оформляем шаблон

Настраиваем Яндекс Кассу

Регистрируем компанию в сервисе Яндекс Касса и ждем, пока магазин пройдет модерацию. Для интеграции указываем "Собственный модуль CMS".

В разделе Интеграция - Ключи API запрашиваем секретный ключ для работы с платежной системой через API.

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

Настраиваем Яндекс Кассу

Уведомления об успешной оплате

В сервисе Яндекс Касса в меню Интеграция - HTTP уведомления укажите для обработки уведомлений о платежах ссылку на ваш сайт. Вид ссылки:

https://www.ВАШ-САЙТ.ru/module/get_payment.php

После этого Яндекс Касса будет сообщать об успешных платежах, а в админке заказы будут помечаться оплаченными.

Уведомления об успешной оплате

Почтовое уведомление об оплате

Вы можете настроить почтовое уведомление об успешной оплате заказа для администратора или клиента. Для этого требуется создать почтовое событие order_paid. Пример темы пиьсма:

Заказ { $ar.order.id_formatted } оплачен

Пример уведомления:

<h3>Заказ { $ar.order.id_formatted } оплачен!</h3>
<p>Ссылка на страницу заказа:<br><a href="{ $ar.order.url }">{ $ar.order.url }</a></p>
<p><small>Данное письмо является автоматическим, отправлено роботом и не требует ответа.</small></p>

Почтовое уведомление об оплате

Форма подключения для физических лиц

Физическое лицо может использовать альтернативный вариант подключения, и использовать свой кошелек Яндекс Денег для получения платежей и добавления в простую форму оплаты. Уведомления об оплате по такой форме приходят от Яндекса на почту или в мобильное приложение. Для добавления по аналогии нужно создать способ оплаты с характеристиками WALLET и NAZNACHENIE, и настроить шаблон примерно такого содержания:

<form method="POST" action="https://money.yandex.ru/quickpay/confirm.xml">
    <input type="hidden" name="receiver" value="{$pay.options.WALLET.value}">
    <input type="hidden" name="formcomment" value="{$site.name_short}">
    <input type="hidden" name="short-dest" value="{if !empty($pay.options.NAZNACHENIE.value)}{$pay.options.NAZNACHENIE.value} {/if}{$page.order.number_formatted}">
    <input type="hidden" name="label" value="{$page.order.number_formatted}">
    <input type="hidden" name="quickpay-form" value="donate">
    <input type="hidden" name="targets" value="{if !empty($pay.options.NAZNACHENIE.value)}{$pay.options.NAZNACHENIE.value} {/if}{$page.order.number_formatted}">
    <input type="hidden" name="sum" value="{$page.order.total_summ}" data-type="number">
    <input type="hidden" name="comment" value="">
    <input type="hidden" name="need-fio" value="false">
    <input type="hidden" name="need-email" value="false">
    <input type="hidden" name="need-phone" value="false">
    <input type="hidden" name="need-address" value="false">
    <input type="hidden" name="paymentType" value="AC">
    <input type="hidden" name="successURL" value="{$site.site_url}/order/pay/success/">
 
    <button type="submit" class="btn btn-large btn-warning" title="Оплатить через Яндекс.Деньги">Оплатить</button>
</form>    


{if !empty($pay.description)}
<br><small>{$pay.description}</small>
{/if}