Обработчик платежа
По мере выполнения платежа мы уведомляем платформу магазина о статусе оплаты, последовательно отправляя GET запросы на URL обработчика.
Важно: домен в обработчике платежей должен полностью совпадать с тем, который вы добавляете к нам в систему в качестве проекта
Методы
CHECK: проверка возможности оказания услуги абоненту, запрос отправляется до прохождения оплаты. Вы должны подтвердить готовность системы (проверить корректность суммы платежа, существование счета в БД и т. д.)
PAY: уведомление об успешном списании, вы должны оказать услугу абоненту. При любой ошибке на данном этапе (например, не доступна БД) платеж получает статус «Не завершен». После устранения проблем вы можете повторно провести платеж в интерфейсе статистики. Деньги зачисляются на баланс партнера независимо от ответа обработчика
PREAUTH: уведомление в платежах с преавторизацией, когда средства успешно заблокированы. Важно! Не следует оказывать услугу или выдавать товар плательщику при получении такого уведомления. Списание средств и оказание услуги следует совершать при выполнении confirmPayment
ERROR: ошибка платежа на любом из этапов. Если ошибка вызвана пустым/ошибочным ответом сервера партнера, то запрос отправлен не будет. Следует учесть, что данный статус не конечный и возможны ситуации, когда после запроса ERROR может последовать запрос PAY.
Значение | Описание | |
method | string | check — запрос на проверку состояния абонента pay — уведомление о списании error — уведомление об ошибке |
unitpayId | число | Внутренний номер платежа в UnitPay |
projectId | число | ID проекта в UnitPay |
account | string | Идентификатор абонента в системе партнера |
payerSum | число | Сумма списания с лицевого счета абонента |
sum | число | Сумма списания с лицевого счета абонента (дополнительное значение) |
ip | string | IP-адрес плательщика (с которого инициировано создание платежа) |
isPreauth | число | Признак платежа с преавторизацией, если запрос делается с использованием механизма преавторизации, то значение будет равно 1. Для платежей вне механизма преавторизации значение всегда 0 |
payerCurrency | string | Валюта списания с лицевого счета абонента по стандарту ISO 4217 (RUB, UAH, BYN, EUR, USD) |
profit | число | Ваш доход с данного платежа, в рублях |
phone | число | Телефон плательщика (передается только для мобильных платежей) |
paymentType | string | |
orderSum | число | Сумма заказа. Обязательно сверяйте поступившее значение с оригинальной суммой заказа |
orderCurrency | string | Валюта заказа по стандарту ISO 4217 (RUB, UAH, BYN, EUR, USD). Обязательно сверяйте поступившее значение с оригинальной валютой заказа |
operator | string | Буквенный код оператора |
date | string | Дата платежа в формате YYYY-mm-dd HH:ii:ss (например 2012-10-01 12:32:00) |
errorMessage | string | Детализация ошибки (только для метода error) |
test | число | Признак тестового режима, если запрос делается с использованием механизма "тестового запроса", то значение будет равно 1. Для реальных платежей значение всегда 0 |
3ds | число | Признак наличия 3-DS для операций по карте, флаг присутствует при PAY уведомлениях |
subscriptionId | число | Идентификатор подписки, возвращается после успешной оплаты установочного платежа по подписке. Присутствует при PREAUTH и PAY уведомлениях |
signature | string | Цифровая подпись. Образуется как sha256(method + "{up}" + params + "{up}" + secretKey), где sha256 - метод шифрования; "{up}" - разделитель параметров в хеш-функции; method - тип вызова (check, pay, error); params - значения параметров из массива params, объединенные разделителем "{up}". Все параметры должны быть предварительно отсортированы по ключу, в склейке не участвует параметр signature; secretKey - секретный ключ проекта (доступен в личном кабинете); Пример расчета подписи для запроса http://partnerUrl?method=check & params[b]=bob & params[c]=sam & params[a]=todи секретного ключа "a1b1c1d1" sha256("check{up}tod{up}bob{up}sam{up}a1b1c1d1") |
Всегда проверяйте IP адреса, с которых приходят запросы к обработчику платежей
ВАЖНО: в системе партнера не должно быть двух разных платежей с одним unitpayId. При получении повторного запроса CHECK или PAY необходимо вернуть результат выполнения предыдущего запроса, ничего не пополняя/зачисляя
Успешный ответ
Значение | Описание | |
message | string | Текстовый статус выполнения запроса. |
Ошибочный ответ
Значение | Описание | |
message | string | Информация с описанием ошибки формирования платежа. При использовании формы оплаты текст из параметра "message" будет показан плательщику. |
locale | string | Настраивает язык вводной части. Возможные значения: "en" или "ru". По умолчанию "ru" Например: "Магазин отклонил платеж: причина блокировки", где "Магазин отклонил платеж:" - вводная часть. "Причина блокировки" - значение параметра message |
ВАЖНО: на этапе PAY при любой ошибке (например нет доступа к БД) платеж получит статус «не завершен». После устранения проблем повторите платеж в статистике.
Last updated