База знаний

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 Да Подпись запроса, которая формируется исходя из передаваемых параметров и секретного ключа. Алгоритм формирования подписи описан ниже.

 

Алгоритм формирования подписи запроса

Подпись запроса формируется на основе передаваемых параметров и секретного ключа. Чтобы сформировать подпись нужно:

  1. Отсортировать список передаваемых параметров по наименованию в алфавитном порядке.
  2. Объединить значения параметров в одну строку, используя разделитель ";". В результате должна получиться строка, похожая на эту: ""[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""
  3. Получившуюся строку нужно зашифровать методом 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 Подпись, которая формируется по описанному ранее алгоритму.