Модуль Yandex.Касса(Yandex.Деньги)

Назначение модуля

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

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

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

Установите модуль на сервер, обновите клиент, создайте экземпляр модуля. Создайте в редакторе конфигурации модуля новую конфигурацию, сделайте её активной. Можно воспользоваться шаблоном конфигурации. Конфигурация в общем виде такая:

images/download/attachments/43385692/yamoney_config.png

Конфигурация
# URL платёжной формы для реальной (https://money.yandex.ru/eshop.xml) или тестовой среды (https://demomoney.yandex.ru/eshop.xml)
yamoney.url=https://demomoney.yandex.ru/eshop.xml
# Номер магазина в ЦПП. Выдается ЦПП.
yamoney.shopId=58
# Номер витрины магазина в ЦПП. Выдается ЦПП.
yamoney.scid=58
 
# Метод аутентификации, применяемый в запросах от ЦПП. На данный момент поддерживаются:
# md5 – криптографический хэш (в комбинации с секретным паролем Магазина), базовый вариант, подключен по умолчанию.
# PKCS7 - вариант подключения XML/PKCS#7 (используется сертификат), альтернатива md5 с высоким уровнем безопасности.
# (метод должен быть прописан такой же, как в настройках магазина)
yamoney.authMethod=md5
# Секретный пароль магазина (20 случайных символов), используемый при расчете криптографического хэша.
# Должен быть указан, если выбран тип аутентификации криптографическим хэшем.
# (должен быть прописан в настройках магазина)
yamoney.shopPassword=01234567890123456789
# Сертификат с открытым ключом (полный путь к локальному файлу)
# Должен быть указан, если выбран режим XML/PKCS#7
# (даётся в яндексе)
yamoney.certificateFile=/home/.../yandex/payment_center_2014.pem
 
# идентификатор платежа, которым будут вноситься приходы
yamoney.payment.type.id=16
# Шаблон комментария платежа
# ${contract} - заголовок договора
# ${contract_comment} - комментарий договора договора
# ${orderSumAmount} - сумма заказа
# ${orderSumCurrencyPaycash} - код валюты для суммы заказа (тип currencyCode)
# ${shopSumAmount} - сумма, получаемая Магазином на р/с
# ${shopSumCurrencyPaycash} - код валюты для суммы, получаемой Магазином на р/с
# ${date} - момент времени регистрации оплаты заказа в ЦПП
# ${invoiceId} - номер транзакции
# ${paymentPayerCode} - номер Кошелька «Яндекс.Денег» Покупателя
yamoney.payment.comment=Платёж с Кошелька Yandex.Деньги ${paymentPayerCode}, транзакция ${invoiceId}

Также для яндекса надо будет заполнить техническую анкету, где указать параметры вашего подключения. Настройте магазин (на акаунте Yandex.Денег).

1) successURL и failURL указать на страницу списка платежей, но без параметра action:

http://ваш_адрес/webexecuter?mid=<mid>&module=yamoney

дело в том, что платёжная система сама по себе добавляет GET-параметр action, который мы здесь обработаем стандартным образом и сделаем редирект на список платежей в личном кабинете пользователя.

2) checkURL и paymentAvisoURL указать для новой версии протокола (версия 3): http://ваш_адрес/yaexecuter3?mid=<mid> . Везде указывать UTF-8 в настройках магазина.

Yandex.Касса рекомендуют https-доступ к сервлету (yaexecuter3). Безотносительно выбранному способу авторизации, ИС рекомендуется осуществлять контроль IP-адресов, с которых она получает запросы ЦПП (список IP можно получить при подключении).

3) Также введите имя, пароль и прочие параметры, которые должны быть выданы для аккаунта.

Поддерживаются динамическое задание адресов возврата shopSuccessURL и shopFailURL (если в настройках магазина включены динамические адреса возврата, то обязательно):

yamoney.shopSuccessURL=http://ваш_адрес/webexecuter?...
yamoney.shopFailURL=http://ваш_адрес/webexecuter?...

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

Ценовую политику и проценты решает для себя организация с учётом процентов Яндекса и т.п.. Дополнительная настройка модуля может быть такой:

# Параметр paymentSumAmount показывает какую именно сумму заносить на счёт юзеру
# order - заносится "сумма заказа, общая сумма" (значение параметра orderSumAmount)
# shop - заносится "сумма на счёт магазина", то есть сумма заказанная клиентом за вычетом процентов (значение параметра shopSumAmount)
yamoney.payment.sum.amount=order
# Процент комиссии, будет нарисован в Web в случае, когда зачисление будет не полной
# суммы, а за вычетом процента (paymentSumAmount=shop)
yamoney.payment.sum.percent=5

Также могут настраиваться дополнительные типы оплаты (подключается в яндексе отдельно):

# Список доступных типов оплаты (из ЦПП)
# Первый способ будет выбран по умолчанию
yamoney.payment.types=PC:Оплата с кошелька Яндекс.Деньги;AC:Оплата с банковской карты;MC:Платеж со счета мобильного телефона;GP:Оплата наличными через кассы и терминалы;WM:Оплата с кошелька в системе WebMoney;SB:Оплата через Сбербанк Онлайн

Сейчас дополнительных действий для включения дополнительных типов оплаты от клиента не требуется и для выбора оплаты на стороне Яндекс.Кассы - можно отказаться от этого пункта настроек.

Замечание про параметр yamoney.certificateFile и сертификат в формате pem: старая java (по крайней мере шестая) не принимает текстовый (PEM) формат сертификата. Наиболее простое, правильное и без костылей решение - сконвертировать сертификат из PEM в DER (бинарный):

openssl x509 -inform PEM -in payment_center_2014.pem -outform DER -out payment_center_2014.cer

Оплата из Личного кабинета

Если у абонента подключён экземпляр модуля, то он может произвести оплату услуг через Web-интерфейс (пункт меню Оплата через Yandex.Касса). Здесь же клиент может просмотреть все проведённые им платежи:

images/download/attachments/43385692/yamoney_web.png

При вводе суммы и нажатии кнопки Оплатить клиент попадает на страницу системы Yandex.Касса, где может выбрать удобный для себя способ оплаты.

images/download/attachments/43385692/yamoney_2.png

Монитор платежей

В параметрах договора можно посмотреть все платежи и их параметры.

images/download/attachments/43385692/yamoney_contract.png

В параметрах модуля есть глобальный монитор платежей.

images/download/attachments/43385692/yamoney_admin.png