MoneclePay
MoneclePay позволяет принимать платежи через платформу Monecle и получать уведомления об успешных оплатах на указанный вами адрес. Для организации приёма платежей в первую очередь необходимо зарегистрироваться в сервисе Monecle как продавец и получить ваш идентификатор и секретный ключ на странице интеграции. После выполнения этих действий можно приступать к реализации запроса на оформление платежа.
Запрос на оформление платежа
Оформление платежа происходит отправкой POST-запроса с формой, содержащей данные, по адресу https://monecle.com/payment. В таблице ниже приведены параметры формы:
Параметр | Обязателен | Описание |
buyer_email | Да | Email покупателя. Не более 255 символов. |
buyer_name | Да | Имя покупателя. Не более 255 символов. |
buyer_phone | Нет | Телефон покупателя. Не более 64 символов. |
good_name | Да | Наименование товара. Не более 255 символов. |
good_price | Да | Стоимость товара в рублях в диапазоне от 10 до 250000 руб. |
installment | Нет | Нужно ли включить рассрочки. Может принимать 2 значения: "0" и "1". Если передано значение "1", то товар можно будет взять в рассрочку от Тинькофф или от ВсегдаДа. Подробнее про рассрочки можно почитать здесь. По умолчанию принимает значение равное "0". |
success_url | Да | Адрес, куда покупатель попадёт после успешной оплаты. Не более 255 символов. |
fail_url | Да | Адрес, куда покупатель попадёт после неуспешной оплаты. Не более 255 символов. |
callback_url | Да | Адрес для уведомлений об успешных оплатах. Не более 255 символов. |
user_id | Да | Ваш идентификатор продавца в системе Monecle. Его можно найти в разделе интеграции. |
external_good_id | Да | Идентификатор товара в вашей системе. Этот идентификатор будет отправлен в уведомлении на адрес, указанный вами в параметре callback_url. Не более 255 символов. |
signature | Да | Подпись запроса, которая формируется исходя из передаваемых параметров и секретного ключа. Алгоритм формирования подписи описан ниже. |
Алгоритм формирования подписи запроса
Подпись запроса формируется на основе передаваемых параметров и секретного ключа. Чтобы сформировать подпись нужно:
- Отсортировать список передаваемых параметров по наименованию в алфавитном порядке.
- Объединить значения параметров в одну строку, используя разделитель ";". В результате должна получиться строка, похожая на эту: ""[email protected];John Doe;+7 999 999 99 99;https://my-site.ru/pay;external_good_id-1;https://my-site.ru/pay/fail;Item 1;99;1;https://my-site.ru/pay/success;123""
- Получившуюся строку нужно зашифровать методом HMAC с использованием алгоритма SHA256, где в качестве ключа нужно использовать ключ, указанный в разделе интеграции. Получившееся значение и нужно передавать в качестве подписи.
Пример формирования подписи на языке PHP:
$params = [
'buyer_email' => '[email protected]',
'buyer_name' => 'John Doe',
'buyer_phone' => '+7 999 999 99 99',
'good_name' => 'Item 1',
'good_price' => 99,
'installment' => 1,
'success_url' => 'https://my-site.ru/pay/success',
'fail_url' => 'https://my-site.ru/pay/fail',
'callback_url' => 'https://my-site.ru/pay',
'user_id' => 123,
'external_good_id' => 'external_good_id-1',
];
ksort($params);
$params = implode(';', $params);
$key = 'secret';
$signature = hash_hmac('sha256', $params, $key); // 68bfb4a64f54583238363d7193b472fb13e6e6bcfe5275b2d9ebc77fe5c92f77
Пример формы
<form action="https://monecle.com/payment" method="POST">
<input type="text" name="buyer_email" value="[email protected]"><br>
<input type="text" name="buyer_name" value="John Doe"><br>
<input type="text" name="buyer_phone" value="+7 999 999 99 99"><br>
<input type="text" name="good_name" value="Item 1"><br>
<input type="text" name="good_price" value="99"><br>
<input type="text" name="installment" value="1"><br>
<input type="text" name="success_url" value="https://my-site.ru/pay/success"><br>
<input type="text" name="fail_url" value="https://my-site.ru/pay/fail"><br>
<input type="text" name="callback_url" value="https://my-site.ru/pay"><br>
<input type="text" name="user_id" value="123"><br>
<input type="text" name="external_good_id" value="external_good_id-1"><br>
<input type="text" name="signature" value="68bfb4a64f54583238363d7193b472fb13e6e6bcfe5275b2d9ebc77fe5c92f77"><br>
<input type="submit" value="Submit">
</form>
В данном примере для формирования подписи использовался ключ "secret".
Отправка уведомления
После успешной оплаты отправляется уведомление, сигнализирующее об этом. Это уведомление отправляется POST-запросом в формате JSON на адрес, указанный в поле "callback_url". Ответом на это уведомление должен быть HTTP-статус, сигнализирующий об успехе операции (первая цифра статуса должна быть равна 2). Уведомление об оплате будет посылаться до тех пор, пока не будет получен необходимый статус, но не более 10 раз. С каждой новой попыткой отправки уведомления увеличивается временной интервал. Ниже приведены все интервалы.
Попытка | Временной интервал |
1 | В течение минуты с момента оплаты. |
2 | В течение 5 минут после предыдущей попытки. |
3 | Через 10 минут после предыдущей попытки. |
4 | Через 30 минут после предыдущей попытки. |
5 | Через 1 час после предыдущей попытки. |
6 | Через 3 часа после предыдущей попытки. |
7 | Через 6 часов после предыдущей попытки. |
8 | Через 12 часов после предыдущей попытки. |
9 | Через 24 часа после предыдущей попытки. |
10 | Через 48 часов после предыдущей попытки. |
Уведомление содержит данные, описание которых приведено в следующей таблице:
Параметр | Описание |
type | Тип уведомления. Равен "purchase". |
status | Информация об успешности операции. В случае успеха равен "success". |
order_id | Идентификатор заказа в системе Monecle. |
external_good_id | Идентификатор товара в вашей системе. |
buyer_id | Идентификатор покупателя в системе Monecle. |
buyer_email | Email покупателя. |
buyer_phone | Телефон покупателя. |
buyer_name | Имя покупателя. |
amount | Сумма, которую заплатил покупатель. |
fee_equiring | Комиссия платёжной системы. |
fee_monecle | Комиссия сервиса Monecle. |
paid_at | Дата оплаты в формате 2024-10-23T09:44:52+03:00 |
user_id | Идентификатор продавца в системе Monecle. |
signature | Подпись, которая формируется по описанному ранее алгоритму. |