- Создатель Неизвестный пользователь (sd), отредактировано июн. 16, 2022
Вы просматриваете старую версию данной страницы. Смотрите текущую версию.
Сравнить с текущим просмотр истории страницы
« Предыдущий Версия 49 Следующий »
Если Вы хотите получать статус транзакции, использовать рекуррентные или двухстадийные платежи, то Вам может быть интересна возможность получать нотификации об оплате. Для этого Вам необходимо при создании сервиса указать . Если URL указан, а чекбокс не включен, то скрипт вызываться не будет!
В случае успешного завершения платежа информация о нем будет передана Вам POST-запросом на данный URL, а также GET-запросом на URL страницы успешной покупки. Набор параметров для обеих рассылок идентичен. Таким образом вы можете уведомлять пользователя о деталях оплаченного заказа после редиректа на страницу успеха, основываясь на данных, полученных из нотификации: номер заказа, стоимость, дата и т.д. Подробности ниже в таблице параметров (см. оглавление).
Если при создании сервиса было заполнено поле email, то на указанную электронную почту также будет выслана информация о платеже.
Система повторов
Запросы от нашего сервера в случае первой неудачной попытки передаются со следующей периодичностью: 180, 180, 180 с.
Таблица параметров, передаваемых на
Параметр | Версия | Описание |
tid | 1.0, 1.1, 2.0 | ID транзакции |
name | 1.0, 1.1, 2.0 | Название товара или услуги. Отображается на странице оплаты. |
comment | 1.0, 1.1, 2.0 | Комментарий платежа переданный в процессе инициализации платежа. |
partner_id | 1.0, 1.1, 2.0 | ID партнера, то есть ваш ID |
service_id | 1.0, 1.1, 2.0 | ID сервиса |
order_id | 1.0, 1.1, 2.0 | ID заказа |
type | 1.0, 1.1, 2.0 | Тип платежа |
currency | 1.0, 1.1, 2.0 | Валюта операции, поддерживается только RUB, не участвует в формировании подписи при version = (1.0|1.1) |
cost | 1.0, 1.1, 2.0 | Общая сумма заказа, переданная при инициализации платежной операции |
income_total | 1.0, 1.1, 2.0 | Общая сумма в рублях, заплаченная покупателем, может отличаться от income и system_income только в случае оплаты частями или при переносе комиссии на плательщика |
income | 1.0, 1.1, 2.0 | Сумма в рублях, полученная от платежного инструмента по данной платежной транзакции |
partner_income | 1.0, 1.1, 2.0 | Сумма в рублях, дохода магазина по данной платежной транзакции |
system_income | 1.0, 1.1, 2.0 | Сумма в рублях, заплаченная покупателем по данной платежной транзакции |
command | 1.0, 1.1, 2.0 | Текущее действие:
ВАЖНО: в случае полной оплаты сервиса придут и success и process. |
result | 1.0, 1.1, 2.0 | Только для command=refund, значения ‘ok’ или ‘fail’ |
resultStr | 1.0, 1.1, 2.0 | Текст уведомления. |
version | 1.0, 1.1, 2.0 | Версия протокола уведомления. (На данный момент: 1.0, 1.1, 2.0). Версия по умолчанию — 1.0. Переключение на другие версии производится на стороне Провайдера по запросу от клиента |
phone_number | 1.0, 1.1, 2.0 | Опционально, номер телефона |
1.0, 1.1, 2.0 | Опционально, email | |
date_created | 1.0, 1.1, 2.0 | дата и время создания транзакции, формат 'YYYY-MM-DD HH24.MI.SS' (MSK) |
recurrent_order_id | 1.0, 1.1, 2.0 | ID заказа (order_id), который был передан при первом вызове рекуррентного платежа (только для рекуррентных операций) |
card | 1.0, 1.1, 2.0 | v 1.0 Маскированный номер карты, в случае если проведенный платеж является рекуррентным (только для рекуррентных операций) v 1.1 и 2.0 заполнено всегда когда есть поле card |
cardholder | 2.0 | Имя держателя карты если присутствует в транзакции |
card_binding_id | 1.0, 1.1, 2.0 | уникальный токен для сохраненных данных карты. Устарело. Подробнее. |
test | 1.0, 1.1, 2.0 | Значение 1 (только для тестовых платежей), См. описание |
paid_date | 2.0 | дата и время оплаты транзакции (подтверждения оплаты платежным каналом), формат 'YYYY-MM-DD HH24.MI.SS' (MSK) |
check | 2.0 | Алгоритм формирования описан в приложении №1. |
check | 1.0, 1.1 | MD5 хеш от параметров: tid + name + comment + partner_id + service_id + order_id + type + cost + income_total + income + partner_income + system_income + command + phone_number + email + result + resultStr + date_created + version + card + recurrent_order_id + test + secret_key Где secret_key – секретный ключ сервиса. Пример формирования продемонстрирован ниже. |
check(если command=refund) | 1.0, 1.1 | MD5 хеш от параметров:'tid'+'name'+'comment'+'partner_id'+'service_id'+'order_id'+'type'+'cost'+'command'+'result'+'resultStr'+'phone_number'+'email'+'date_created'+'version'+'secret_key' |
refund_ext_id | 1.0, 1.1, 2.0 | дополнительный id возврата при осуществлении нескольких возвратов в рамках транзакции. Подробнее |
- resultStr – текст уведомления. Для значения параметра command=success он стандартный. Для command=cancel выводится то, что ответит платёжный шлюз.
Формирование подписи check для первой версии API
Все параметры участвуют в формировании подписи check. Подпись формируется как md5 от всех параметров, сцепленных в строку без пробелов + добавленный в конце секретный ключ сервиса.
Пример на PHP
1 | $param['check']==md5($param['tid'].$param['name'].$param['comment'].$param['partner_id'].$param['service_id'].$param['order_id'].$param['type'].$param['cost'].$param['income_total'].$param['income'].$param['partner_income'].$param['system_income'].$param['command'].$param['phone_number'].$param['email'].$param['result'].$param['resultStr'].$param['date_created'].$param['version'].$secretKey); |
<?php $param = array ( 'comment' => '', 'phone_number' => '74952760800', 'order_id' => '67', 'currency' => 'RUB', 'cost' => '511.0', 'date_created' => '2021-01-28 21:35:49', 'partner_id' => '250305', 'resultStr' => 'транзакция оплачена полностью', 'name' => 'Покупка в магазине', 'system_income' => '511.0', 'income_total' => '511.0', 'partner_income' => '434.35', 'version' => '1.0', 'command' => 'success', 'income' => '511.0', 'tid' => '474541305', 'service_id' => '85494', 'type' => 'spg_test', 'email' => 'test@mail.ru', 'result' => '' ); $secretKey = 'c9264d756f170802c4eaf9405077b946'; echo rawurlencode(md5($param['tid'].$param['name'].$param['comment'].$param['partner_id'].$param['service_id'].$param['order_id'].$param['type'].$param['cost'].$param['income_total'].$param['income'].$param['partner_income'].$param['system_income'].$param['command'].$param['phone_number'].$param['email'].$param['result'].$param['resultStr'].$param['date_created'].$param['version'].$secretKey));
Пример на Python
import hashlib from urllib.parse import parse_qs import pprint secretkey = '262eb24f12d0c3fdd990eae096016055' params_list = [ 'tid', 'name', 'comment', 'partner_id', 'service_id', 'order_id', 'type', 'cost', 'income_total', 'income', 'partner_income', 'system_income', 'command', 'phone_number', 'email', 'result', 'resultStr', 'date_created', 'version', 'secretKey' ] # Тело webhook-нотификации, полученное на URL обработчика: qs = 'comment=&phone_number=79165483580&order_id=00000015¤cy=RUB&cost=75.0&date_created=2022-03-29+22%3A38%3A08&partner_id=250305&check=66b522b5749bfe713ac089a55a013725&resultStr=%D1%82%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D1%8F+%D0%BE%D0%BF%D0%BB%D0%B0%D1%87%D0%B5%D0%BD%D0%B0+%D1%87%D0%B0%D1%81%D1%82%D0%B8%D1%87%D0%BD%D0%BE&name=Acquiring+lifepay+00000015&system_income=75.0&income_total=75.0&partner_income=63.75&version=1.0&command=process&income=75.0&tid=491789584&service_id=87875&type=ipsp_test_cards_01&email=awa77%40mail.ru' params = parse_qs(qs) pp = pprint.PrettyPrinter() pp.pprint(params) values = [] for i in params_list: values.append(params.get(i, [''])[0]) md5_str = ''.join(values) md5_str += secretkey print(md5_str) md5 = hashlib.md5(md5_str.encode('UTF-8')).hexdigest() print('Рассчитанный MD5', md5) print('MD5 полученный в нотификации',params['check'][0])
Примечания
Для рекуррентных платежей добавляются два поля card и recurrent_order_id и строка для подписи формируется следующим образом:
tid + name + comment + partner_id + service_id + order_id + type + cost + income_total + income + partner_income + system_income + command + phone_number + email + resultStr + date_created + version +card + recurrent_order_id + secret_key
- Нет меток