Обработчик платежа
По мере выполнения платежа мы уведомляем платформу магазина о статусе оплаты, последовательно отправляя GET запросы на URL обработчика.
http://адрес_вашего_обработчика?
method=check
params[account]=userId
params[date]=2012-10-01 12:32:00
params[operator]=beeline
params[paymentType]=mc
params[projectId]=1
params[phone]=9XXXXXXXXX
params[payerSum]=10.00
params[payerCurrency]=RUB
params[signature]=9bdf52a4830779a1383ac24f1b3ed054
params[orderSum]=10.00
params[orderCurrency]=RUB
params[unitpayId]=1234567
params[test]=0
method=check
params[account]=userId
params[date]=2012-10-01 12:32:00
params[operator]=beeline
params[paymentType]=mc
params[projectId]=1
params[phone]=9XXXXXXXXX
params[payerSum]=10.00
params[payerCurrency]=RUB
params[signature]=9bdf52a4830779a1383ac24f1b3ed054
params[orderSum]=10.00
params[orderCurrency]=RUB
params[unitpayId]=1234567
params[test]=0
Значение | Описание | |
method | строка | check — запрос на проверку состояния абонента pay — уведомление о списании error — уведомление об ошибке |
unitpayId | число | Внутренний номер платежа в UnitPay |
projectId | число | ID проекта в UnitPay |
account | строка | Идентификатор абонента в системе партнера |
payerSum | число | Сумма списания с лицевого счета абонента |
payerCurrency | строка | Валюта списания с лицевого счета абонента по стандарту ISO 4217 (RUB, UAH, BYN, EUR, USD) |
profit | число | Ваш доход с данного платежа, в рублях |
phone | число | Телефон плательщика (передается только для мобильных платежей) |
paymentType | строка | Код платежной системы |
orderSum | число | Сумма заказа. Обязательно сверяйте поступившее значение с оригинальной суммой заказа |
orderCurrency | строка | Валюта заказа по стандарту ISO 4217 (RUB, UAH, BYN, EUR, USD). Обязательно сверяйте поступившее значение с оригинальной валютой заказа |
operator | строка | Буквенный код оператора |
date | строка | Дата платежа в формате YYYY-mm-dd HH:ii:ss (например 2012-10-01 12:32:00) |
errorMessage | строка | Детализация ошибки (только для метода error) |
test | число | Признак тестового режима, если запрос делается с использованием механизма "тестового запроса", то значение будет равно 1. Для реальных платежей значение всегда 0 |
3ds | число | Признак наличия 3-DS для операций по карте, флаг присутствует при PAY уведомлениях |
subscriptionId | число | Идентификатор подписки, возвращается после успешной оплаты установочного платежа по подписке. Присутствует при PAY уведомлениях |
signature | строка | Цифровая подпись. Образуется как sha256(method + "{up}" + params + "{up}" + secretKey), где sha256 - метод шифрования; "{up}" - разделитель параметров в хеш-функции; method - тип вызова (check, pay, error); params - значения параметров из массива params, объединенные разделителем "{up}". Все параметры должны быть предварительно отсортированы по ключу, в склейке не участвуют параметры sign и 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") |
Пример формирования цифровой подписи на PHP:
function getSignature($method, array $params, $secretKey) { ksort($params); unset($params['sign']); unset($params['signature']); array_push($params, $secretKey); array_unshift($params, $method); return hash('sha256', join('{up}', $params)); }
Пример формирования цифровой подписи на Perl:
sub getSignature { my ($method, $params, $secretKey) = @_; delete $params->{sign}; delete $params->{signature}; my $s = $method; foreach my $key (sort keys %{$params}) { $s .= '{up}' . $params->{$key}; } $s .= '{up}' . $secretKey; use Digest::SHA qw(sha256_hex); return sha256_hex($s); }
Успешный ответ
{"result": { "message": "Запрос успешно обработан" }}
Значение | Описание | |
message | строка | Текстовый статус выполнения запроса. |
Ошибочный ответ
{"error": { "message": "Описание ошибки" }}
Значение | Описание | |
message | строка | Информация с описанием ошибки формирования платежа. |