Prodamus
Search
K

Документация для самостоятельной интеграции сервисов

В данный раздел поможет интегрировать Продамус с системами, для которых нет официальной интеграции. А так же поможет разработчикам, прописать дополнительные параметры для уже существующих интеграций

Формируем запрос

Для формирования платежной ссылки вам необходимо отправить GET или POST запрос себе на платежную страницу
Где прописать URL-адрес и скопировать секретный ключ подробно в разделе "Где найти url для уведомлений и секретный ключ"
В зависимости от сервиса, с которым вы интегрируетесь, вы можете прописывать параметры платежной страницы отдельно, передавая их программным кодом или использую стандартные команды вашего сервиса (например Автопилот или SmartSender) либо в самой ссылке Get-запроса.
Для формирования GET или POST запроса вам потребуется:
  • URL-адрес платежной формы в системе Продамус. По сути это адрес из адресной строки вашей платежной страницы
ссылка должна быть вида http://название_поддомена.payform.ru/
Например https://demo.payform.ru/

Параметры, которые вы можете передать в запросе

Обязательные параметры при формировании ссылки

Параметр
Тип
Описание
do
строка
products
массив
sys
строка
код системы интернет-магазина (необходимо согласовать с поддержкой Продамуса)

Возможные значения параметра do

  1. 1.
    "link" - возвращает ссылку, которую отправляем пользователю для самостоятельного перехода на страницу оплаты
  2. 2.
    "pay" - отправляет покупателя сразу на оплату. Используется для интернет-магазинов действие "Оплата"

Параметры массива products

Параметр
Тип
Описание
Обязательный
name
строка
наименование товара
ДА
price
число
цена товара
ДА
quantity
целое число
количество товара
ДА
sku
строка
id товара в системе интернет-магазин
НЕТ
Чтобы прописать параметры массива: наименование, цена и количество товара, необходимо обратиться в глубь массива products Например products[0]name для php
Параметры продукта, являются НЕобязательными
Параметр
Тип
Описание
order_sum
число
сумма заказа
discount_value
число
размер скидки в рублях

Параметры для рекуррентных платежей

Параметр
Тип
Описание
Обязательный
subscription
целое число
id подписки
ДА
subscription_date_start
строка
дата начала подписки в формате "гггг-мм-дд чч:мм"
P.S. Если указать дату в прошлом, то старт подписки будет сдвинут на интервал этой подписки.
нет
subscription_demo_period
целое число
количество дней демо-периода подписки
нет
subscription_limit_autopayments
целое число
максимальное количество авто-платежей по подписке
если не указано или меньше единицы, значение будет взято из настроек подписного товара
нет
Параметры для пользователей Вк, являются НЕобязательными
Параметр
Тип
Описание
vk_user_id
целое число
id пользователя в системе Вк
vk_user_name
строка
ФИО пользователя в системе Вк

Параметры передающие данные о юр.статусе плательщика

Параметр
Тип
Описание
npd_income_type
строка
тип плательщика, с возможными значениями:
FROM_INDIVIDUAL - физическое лицо
FROM_LEGAL_ENTITY - юридическое лицо
FROM_FOREIGN_AGENCY - иностранная организация
значение по умолчанию: FROM_INDIVIDUAL
npd_income_inn
целое число
инн плательщика
обязательно, если форма работает в режиме самозанятого и тип плательщика FROM_LEGAL_ENTITY
npd_income_company
строка
название компании плательщика
обязательно, если форма в режиме самозанятого и тип плательщика FROM_LEGAL_ENTITY или FROM_FOREIGN_AGENCY

Общие Необязательные параметры

Параметр
Тип
Описание
order_id
строка
номер заказа в Вашей системе
customer_phone
строка
номер телефона клиента (обязательный к заполнению при оплате, подробнее о параметре customer_phone)
customer_email
строка
e-mail адрес клиента
customer_extra
строка
описание заказа (Поле дополнительные данные)
ref
строка
идентификатор партнера (ПРОМОКОД)
paid_content
строка
платный контент
link_expired
строка
срок действия ссылки в формате "гггг-мм-дд чч:мм"
payment_method
строка
метод оплаты, выбранный клиентом, если есть возможность выбора на стороне интернет-магазина, иначе клиент выбирает метод оплаты на стороне платежной формы
доступные значения:
AC - оплата картой, выпущенной в РФ
ACkz - оплата картой Казахстана
ACkztjp - оплата картой всех стран мира, кроме РФ
ACf - оплата картами стран СНГ, кроме РФ
ACEURNMBX - Оплата EUR картой всех стран, кроме РФ и РБ
ACUSDNMBX - Оплата в USD картой всех стран, кроме РФ и РБ
SBP - Быстрый платёж, без ввода данных карты. Для карт РФ
QW - Qiwi wallet
PC - Юmoney
GP - платежный терминал
sbol - Сбербанк онлайн invoice - Оплата по счету installment - Частями от Продамус
installment_5_21 - Частями от Продамус на 3 месяца
installment_6_28 - Частями от Продамус на 6 месяцев
installment_10_28 - Частями от Продамус на 10 месяцев
installment_12_28 - Частями от Продамус на 12 месяцев installment_0_0_3 - Рассрочка от Тинькофф на 3 месяца
installment_0_0_4 - Рассрочка от Тинькофф на 4 месяца
installment_0_0_6 - Рассрочка от Тинькофф на 6 месяцев installment_0_0_10 - Рассрочка от Тинькофф на 10 месяцев installment_0_0_12 - Рассрочка от Тинькофф на 12 месяцев installment_0_0_24 - Рассрочка от Тинькофф на 24 месяца installment_0_0_36 - Рассрочка от Тинькофф на 36 месяцев
credit - Кредит от Тинькофф
vsegdada_installment_0_0_4 - Рассрочка ВсегдаДа на 4 месяца без переплаты! (не работает с available_payment_methods) vsegdada_installment_0_0_6 - Рассрочка от ВсегдаДа на 6 месяцев без переплаты! vsegdada_installment_0_0_10 - Рассрочка от ВсегдаДа на 10 месяцев без переплаты vsegdada_installment_0_0_12 - Рассрочка от ВсегдаДа на 12 месяцев без переплаты vsegdada_installment_0_0_24 - Рассрочка от ВсегдаДа на 24 месяца без переплаты! vsegdada_installment_0_0_36 - Рассрочка от ВсегдаДа на 36 месяцев без переплаты! sbrf_installment_0_0_6 - Рассрочка от СберБанка на 6 месяцев sbrf_installment_0_0_10 - Рассрочка от СберБанка на 10 месяцев sbrf_installment_0_0_12 - Рассрочка от СберБанка на 12 месяцев sbrf_installment_0_0_24 - Рассрочка от СберБанка на 24 месяца sbrf_installment_0_0_36 - Рассрочка от СберБанка на 36 месяцев otp_installment_0_0_6 - Рассрочка «ОТП Банка» на 6 месяцев otp_installment_0_0_10 - Рассрочка «ОТП Банка» на 10 месяцев otp_installment_0_0_12 - Рассрочка «ОТП Банка» на 12 месяцев otp_installment_0_0_24 - Рассрочка «ОТП Банка» на 24 месяца otp_installment_0_0_36 - Рассрочка «ОТП Банка» на 36 месяцев mts_installment_0_0_6 - Рассрочка «МТС Банка» на 6 месяцев mts_installment_0_0_10 - Рассрочка «МТС Банка» на 10 месяцев mts_installment_0_0_12 - Рассрочка «МТС Банка» на 12 месяцев mts_installment_0_0_24 - Рассрочка «МТС Банка» на 24 месяца mts_installment_0_0_36 - Рассрочка «МТС Банка» на 36 месяцев
available_payment_methods
строка
Список доступных методов оплаты. Список возможных значений аналогичен параметру payment_method. Допускается передача нескольких значений, разделяя их вертикальной чертой. Если available_payment_methods передан, то список доступных методов оплаты будет ограничен переданными кодами. Если в результате фильтрации не остается ни одного метода оплаты, данный параметр будет проигнорирован и выведется полный список доступных методов.
urlReturn
строка
URL-адрес для возврата пользователя без оплаты
urlSuccess
строка
URL-адрес для возврата пользователя при успешной оплате
urlNotification
строка
служебный URL-адрес для уведомления интернет-магазина о поступлении оплаты по заказу
в случае успешной обработки запроса, должен вернуть ответ с кодом 200 P.S. Для того, чтобы система учла этот параметр, также должен быть передан параметр sys
_param_хххх
строка
произвольный сквозной параметр, где хххх - имя вашего произвольного параметра
utm_хххх
строка
сквозной параметр в виде utm-метки, где хххх - имя вашей метки
Например: utm_source
installments_disabled
целое число
отключение рассрочки
если передан и не 0, методы оплаты связанные с рассрочкой будут недоступны для выбора при оплате
demoFlow
строка
Параметр для проверки негативного сценария с отказом по рассрочке. ❗Работает только в демо-режиме❗ Доступное значение:
reject
demo_mode
целое число
Если передано значение 1, то платеж пройдет в демо-режиме
type
строка
Если передано значение json, то ответ от Продамуса придет в формате json
callbackType
строка
Если передано значение json, то веб-хуки от Продамуса будут приходить в формате json
currency
строка
Валюта платежа. Возможные значения:
rub
usd
eur kzt P.S. Параметр должен быть в нижнем регистре.
payments_limit
целое число
Лимит оплат по сформированной ссылке
acquiring
строка
Эквайринг. Возможные значения: sbrf moneta
qiwi
xpay
xpaykz

Параметр customer_phone

Данный параметр является обязательным при оплате покупателем товара на вашей платежной странице, но не является обязательным при формировании ссылки.
То есть вы можете сформировать ссылку на оплату не указывая номер телефона покупателя, он заполнит это поле самостоятельно. В этом случае покупателю откроется ссылка в предварительном окне оплаты, где система попросит заполнить поле номер телефона (рис. 1
) и после его заполнения и нажатия кнопки "Оплатить" ваш плательщик уже перейдет на страницу с выбором метода оплаты и сможет оплатить товар (рис.2
)
Если вы хотите исключить дополнительный шаг при покупке, то можете прописать параметр customer_phone уже при формировании ссылки на оплату, тогда ваш покупатель будет переходить сразу на шаг выбора удобного ему метода оплаты (рис.2
)
рис. 1
рис. 2
Параметры urlReturn и urlSuccess актуальны, например, в тех случаях, когда оплата была инициирована на стороне Вашего интернет-магазина и необходимо чтобы пользователь вернулся обратно. В случае отсутствия данных параметров в запросе, сообщение об успехе или ошибке, после оплаты, будет показано показано на платежной странице системы Продамус.
Если передан параметр subscription, параметр products игнорируется.

Ссылка на оплату

При значении параметра do=link ссылка возвращается в текстовом формате вида https://payform.ru/u8zDE/
Именно ее вам необходимо передать клиенту по средствам возможности вашего бота при помощи сообщения в мессенджере или через сторонние сервисы-рассыльщики
Так же есть возможность прописать развернутую ссылку с прописанными необходимыми в ней параметрами
Пример ссылки с запросом и прописанными в ней параметрами:
https://demo.payform.ru/?order_id=test&customer_phone=79998887755&products[0][price]=2000&products[0][quantity]=1&products[0][name]=Обучающие материалы&customer_extra=Полная оплата курса&do=pay

При настройке самостоятельной интеграции

Чтобы сформировать Webhook на стороне вашего сервиса для передачи данных об плате, вам необходимо добавить программный код на вашем сайте

Пример программного кода формирования ссылки для демо-формы:

В данном примере используется платежная страница демо-формы: https://demo.payform.ru
Секретный ключ демо-формы: 2y2aw4oknnke80bp1a8fniwuuq7tdkwmmuq7vwi4nzbr8z1182ftbn6p8mhw3bhz
<?php
header('Content-type:text/plain;charset=utf-8');
require_once __DIR__ . '/Hmac.php';
$linktoform = 'https://demo.payform.ru/';
// Секретный ключ. Можно найти на странице настроек,
// в личном кабинете платежной формы.
$secret_key = '2y2aw4oknnke80bp1a8fniwuuq7tdkwmmuq7vwi4nzbr8z1182ftbn6p8mhw3bhz';
$data = [
// хххх - номер заказ в системе интернет-магазина
'order_id' => хххх,
// +7хххххххххх - мобильный телефон клиента
'customer_phone' => '+7хххххххххх',
// ИМЯ@prodamus.ru - e-mail адрес клиента
'customer_email' => 'ИМЯ@prodamus.ru',
// перечень товаров заказа
'products' => [
[
// id товара в системе интернет-магазина
// (не обязательно) - при необходимоти прописать
'sku' => ХХХХХ,
// название товара - необходимо прописать название вашего товара
// (обязательный параметр)
'name' => 'товар 1',
// цена за единицу товара, 123 - значение, которое нужно прописать
// (обязательный параметр)
'price' => '123',
// количество товара, х - значение, которое нужно прописать
// (обязательный параметр)
'quantity' => 'Х',
// данные о налоге
// (не обязательно, если не указано будет взято из настроек Магазина
// на стороне системы)
'tax' => [
// ставка НДС, с возможными значениями (при необходимоти заменить):
// 0 – без НДС;
// 1 – НДС по ставке 0%;
// 2 – НДС чека по ставке 10%;
// 3 – НДС чека по ставке 18%;
// 4 – НДС чека по расчетной ставке 10/110;
// 5 – НДС чека по расчетной ставке 18/118.
// 6 - НДС чека по ставке 20%;
// 7 - НДС чека по расчётной ставке 20/120.
'tax_type' => 0,
// (не обязательно) сумма налога, хх - при необходимости заменить
'tax_sum' => хх,
],
// Тип оплаты, с возможными значениями (при необходимости заменить):
// 1 - полная предварительная оплата до момента передачи предмета расчёта;
// 2 - частичная предварительная оплата до момента передачи
// предмета расчёта;
// 3 - аванс;
// 4 - полная оплата в момент передачи предмета расчёта;
// 5 - частичная оплата предмета расчёта в момент его передачи
// с последующей оплатой в кредит;
// 6 - передача предмета расчёта без его оплаты в момент
// его передачи с последующей оплатой в кредит;
// 7 - оплата предмета расчёта после его передачи с оплатой в кредит.
// (не обязательно, если не указано будет взято из настроек
// Магазина на стороне системы)
'paymentMethod' => х,
// Тип оплачиваемой позиции, с возможными
// значениями (при необходимости заменить):
// 1 - товар;
// 2 - подакцизный товар;
// 3 - работа;
// 4 - услуга;
// 5 - ставка азартной игры;
// 6 - выигрыш азартной игры;
// 7 - лотерейный билет;
// 8 - выигрыш лотереи;
// 9 - предоставление РИД;
// 10 - платёж;
// 11 - агентское вознаграждение;
// 12 - составной предмет расчёта;
// 13 - иной предмет расчёта.
// (не обязательно, если не указано будет взято из настроек Магазина на стороне системы)
'paymentObject' => х,
],
],
// id подписки (при необходимости прописать)
// актуально и обязательно только для рекуррентных платежей,
// передается вместо параметра products
'subscription' => 123,
// вк id пользователя (при необходимости прописать)
'vk_user_id' => 123,
// фио пользователя в ВК (при необходимости прописать)
'vk_user_name' => 'Фамилия Имя Отчество',
// дополнительные данные
'customer_extra' => 'Текст, который отобразится в поле "Дополнительные данные"',
// для интернет-магазинов доступно только действие "Оплата"
'do' => 'pay',
// url-адрес для возврата пользователя без оплаты
// (при необходимости прописать свой адрес)
'urlReturn' => 'https://demo.payform.ru/demo-return',
// url-адрес для возврата пользователя при успешной оплате
// (при необходимости прописать свой адрес)
'urlSuccess' => 'https://demo.payform.ru/demo-success',
// служебный url-адрес для уведомления интернет-магазина
// о поступлении оплаты по заказу
// пока реализован только для Advantshop,
// формат данных настроен под систему интернет-магазина
// (при необходимости прописать свой адрес)
'urlNotification' => 'https://demo.payform.ru/demo-notification',
// код системы интернет-магазина, запросить у поддержки,
// для самописных систем можно оставлять пустым полем
// (при необходимости прописать свой код)
'sys' => 'код системы',
// метод оплаты, выбранный клиентом
// если есть возможность выбора на стороне интернет-магазина,
// иначе клиент выбирает метод оплаты на стороне платежной формы
// варианты (при необходимости прописать значение):
// AC - банковская карта
// PC - Яндекс.Деньги
// QW - Qiwi Wallet
// WM - Webmoney
// GP - платежный терминал
'payment_method' => 'ХХ',
// сумма скидки на заказ
// указывается только в том случае, если скидка
// не прменена к товарным позициям на стороне интернет-магазина
// алгоритм распределения скидки по товарам
// настраивается на стороне пейформы
'discount_value' => 0.00,
// тип плательщика, с возможными значениями:
// FROM_INDIVIDUAL - Физическое лицо
// FROM_LEGAL_ENTITY - Юридическое лицо
// FROM_FOREIGN_AGENCY - Иностранная организация
// (не обязательно. если форма работает в режиме самозанятого
// значение по умолчанию: FROM_INDIVIDUAL)
'npd_income_type' => 'FROM_INDIVIDUAL',
// инн плательщика (при необходимости прописат)
// (обязательно, если форма в режиме самозанятого
// и тип плательщика FROM_LEGAL_ENTITY)
'npd_income_inn' => 1234567890,
// название компании плательщика (при необходимости прописать название)
// (обязательно, если форма в режиме самозанятого
// и тип плательщика FROM_LEGAL_ENTITY или FROM_FOREIGN_AGENCY)
'npd_income_company' => 'Название компании плательщика',
// срок действия ссылки в формате: дд.мм.гггг чч:мм или гггг-мм-дд чч:мм
// при необходимости добавить дату
// (не обязательно, по умолчанию срок действия ссылки не ограничен)
'link_expired' => 'дд.мм.гггг чч:мм',
// дата начала подписки в формате: дд.мм.гггг чч:мм или гггг-мм-дд чч:мм
// при необходимости добавить дату
// (не обязательно, актуально только для рекуррентных платежей,
// по умолчанию текущая дата/время)
'subscription_date_start' => 'дд.мм.гггг чч:мм',
// текст который будет показан пользователю после совершения оплаты
// (не обязательно)
'paid_content' => 'Текс сообщения'
];
$data['signature'] = Hmac::create($data, $secret_key);
$link = sprintf('%s?%s', $linktoform, http_build_query($data));
Массив data содержит данные для формирования платежной ссылки. Параметр signature - подпись запроса. Формируется на основе данных формы и секретного ключа. Для формирования подписи запроса можно воспользоваться готовой библиотекой Hmac
Hmac.php
1KB
Binary
Библиотека Hmac.php
Hmac.js.zip
651B
Binary
Библиотека Hmac.js

Как принять Уведомление об успешной оплате

При настройке принятия веб-хука с уведомлением об успешной оплате на вашем сервисе (пример уведомления об оплате здесь), вам необходимо проверить подпись пришедшего запроса. Так скажем, убедиться, что Веб-Хук пришел именно от Продамуса.
Проверка подписи необходима в целях безопасности, иначе, технически, веб-хук может отправить кто угодно. Подпись формируется на основе данных запроса и секретного ключа вашей платежной страницы.
Для проверки подписи, необходимо вызвать метод verify класса Hmac, в качестве аргументов передайте данные входящего POST запроса, секретный ключ платежной страницы и подпись из заголовков запроса. Метод сформирует подпись на основе данных запроса и секретного ключа (аргументы 1 и 2) и сравнит его с подписью, которая была передана в запросе (аргумент 3). Если метод вернул false (подписи не совпадают), необходимо вернуть http-код отличный от 200 и прекратить дальнейшую обработку. В случае, если метод вернул true (подписи совпадают), необходимо вернуть http-код 200 и отработать дальнейшие команды на стороне вашего сервиса.
Пример проверки подписи запроса:
require_once 'Hmac.php';
$secret_key = 'ваш_секретный_ключ';
$headers = apache_request_headers();
try {
if ( empty($_POST) ) {
throw new Exception('$_POST is empty');
}
elseif ( empty($headers['Sign']) ) {
throw new Exception('signature not found');
}
elseif ( !Hmac::verify($_POST, $secret_key, $headers['Sign']) ) {
throw new Exception('signature incorrect');
}
http_response_code(200);
echo 'success';
}
catch (Exception $e) {
http_response_code($e->getCode() ? $e->getCode() : 400);
printf('error: %s', $e->getMessage());
}
Hmac.php
1KB
Binary
Библиотека Hmac
Hmac.js.zip
651B
Binary
Библиотека Hmac.js

Проверка успешной интеграции

Для тестирования используйте свою платежную странницу, в исключительном случае вы можете воспользоваться данными нашей демо-страницы, для этого необходимо запросить доступ у менеджеров
по телефону: 8 (495) 150-08-71
в личные сообщения группы в VK: https://vk.com/im?sel=-11636316
на электронную почту: [email protected]
в Телеграм-канале: https://t.me/prodamus_bot
После всех настроек обязательно проверьте формирование ссылки. Пройдите по ней, проверьте все ли параметры прописаны корректно
После завершения тестирования интеграции с Вашей стороны, просим написать в поддержку Продамуса. Мы осуществим проверку со своей стороны.
А так же разместим соответствующую информацию на своих сайтах и группах в соцсетях
Информация носит исключительно справочный характер и не является офертой. С актуальной редакцией оферты и тарифами Вы можете ознакомиться в разделе "Документы".