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

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

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

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

Для работы Яндекс Кассы проверьте, чтобы в папке /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}

Список пуст
Список пуст