Как подключить Prodamus

Для подключения Prodamus вам понадобится URL-адрес платежной формы и секретный ключ.

URL-адрес платежной формы выдается после регистрации, его пример: demo.payform.ru.

Секретный ключ можно получить в личном кабинете, там же необходимо указать URL-адрес, на который будут отправляться уведомления (notification).

Полная инструкция о том, как это сделать

Адрес для уведомлений:
https://chatter.mavibot.ai/prodamus\_callback/result

Этот адрес необходимо указать в настройках в двух местах.

На главной странице настроек можно выбрать режим работы платежной формы: демо-режим без платежей или режим приема платежей.

Адрес для уведомлений необходимо указать в настройках платежной системы в двух местах: на вкладке «Настройка формы» — для разовых (обычных) платежей и на вкладке «Подписки» — для платежей по подписке.

Адрес для уведомлений:
https://chatter.mavibot.ai/prodamus\_callback/result

Для настройки работы с платежами по подписке перейдите на вкладку «Подписки» и укажите адрес для уведомлений:

https://chatter.mavibot.ai/prodamus\_callback/result

Обратите внимание! После ввода URL-адреса обязательно нажмите кнопку «Сохранить».

Для подключения Prodamus необходимо перейти в раздел «Эквайринг».

Затем достаточно ввести вышеуказанные данные в форму:

Важно! При указании URL-адреса платежной формы не добавляйте https://.

На этом подключение завершено. Теперь рассмотрим, как использовать этот функционал.

Как создать ссылку на оплату

Кнопка с функцией «Оплатить»

Ссылку на оплату можно создать в кнопке с функцией «Оплатить».

О том, как создать такую кнопку, рассказано в этой статье.

Теперь рассмотрим все возможные параметры этой кнопки.

Обязательные параметры кнопки «Оплатить» для Prodamus

Для создания ссылки на оплату в настройках кнопки необходимо указать обязательные параметры:
«Сумма», «Название товара», а также параметр «Оплаченный контент» — если у вас нет собственной онлайн-кассы и вы хотите получать чек от Prodamus.

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

Если в настройках кнопки указаны Email и/или телефон пользователя, на странице оформления заказа будут отображаться контактные данные плательщика, а также информация о товаре и его цене.

Поле «Текст» – этот текст будет отображаться в сообщении на кнопке со ссылкой на оплату.

Поле «Функция» – для создания кнопки, ведущей на оплату, выбираем функцию «Оплатить».

Поле «Платежная система» – в списке отображаются платежные системы, подключенные к проекту.
Если к проекту не подключена ни одна платежная система, этот тип кнопки будет недоступен.

Поле «Название товара» (обязательное) – необходимо указать точное название товара. Например: не «Телефон», а «Смартфон Xiaomi, модель …».
Примечание: в названии товара нельзя использовать двойные кавычки; удалите их или замените одинарными.

Поле «Сумма» (обязательное) – указываем цену товара.

Меню «Дополнительная информация» – при нажатии на эту кнопку открываются дополнительные поля для создания ссылки:

  • Описание заказа
  • Скидка в рублях
  • Переменная Email покупателя
  • Переменная номера телефона покупателя
  • Время действия ссылки
  • ID товара для подписки (для автоплатежа)
  • Оплаченный контент

Чекбокс «Уведомлять о нажатии» – можно отметить для отслеживания перехода по ссылке на оплату. В этом случае при нажатии на кнопку в диалог с клиентом в Сейлботе придет сообщение о том, что был совершен переход по ссылке.

На основе этого сообщения можно настроить дальнейшую логику работы бота.
Многие платежные системы поддерживают облачные онлайн-кассы, необходимые в соответствии с требованиями 54-ФЗ.

Ознакомьтесь с особенностями оформления чеков на сайте выбранной платежной системы, чтобы избежать проблем с налоговой инспекцией.

Вот как выглядит страница оплаты, которая открывается при переходе по ссылке в кнопке «Оплатить»:

Дополнительные настройки для создания ссылки на оплату

Поле «Описание заказа» – информация, введенная в это поле, будет отображаться на странице оплаты в поле Дополнительные данные.

Поле «Скидка» – здесь можно указать размер скидки в рублях или в рублях и копейках. Для указания копеек используйте точку в качестве разделителя: 50.99
На странице оплаты в поле Сумма к оплате будет отображаться сумма с учетом скидки, а исходная цена товара будет перечеркнута.

Поле «Переменная Email покупателя» (необязательно, если указан номер телефона) – здесь указывается Email пользователя (клиента). Можно также использовать переменную, в которой сохранен Email, например: #{email}

Поле «Переменная номера телефона покупателя» (необязательно, если указан Email) – здесь можно использовать переменную, в которой указан номер телефона покупателя, формат: 79000000000, например: #{phone}
Обязательно должен быть указан Email и/или телефон.

Поле «Время действия ссылки» – можно указать дату в формате дд.мм.гггг чч:мм (например, 25.01.2021 11:00) или установить срок действия ссылки с помощью переменной. Например: #{link_expired}

Поле «ID товара для подписки» – для автоплатежа укажите значение ID товара. Для создания подписки необходимо создать подписочный товар.
Полная инструкция: Создание и настройка подписок Prodamus
Если указан ID товара для подписки, сумма платежа не учитывается. Информация о товаре берется из карточки товара в кабинете Prodamus.
Номер телефона, указанный в платеже, потребуется для управления подпиской.
Если указан ID товара для подписки, при успешном платеже в колбэке будет передан ID этого товара.

Поле «Оплаченный контент» (условно обязательно) – эти данные необходимы для фискализации платежа через Prodamus, если у вас нет собственной онлайн-кассы. В этом поле указывается описание покупки, цена и ссылка на контент.
Например: Курс ‘Плетение кос’, цена 3000 рублей, ссылка на страницу курса: https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911

Кнопка с функцией «Оплатить»

Если вы указали время действия ссылки, произойдет следующее:
Пользователь запрашивает ссылку на оплату в течение срока ее действия (то есть время ссылки еще не истекло) и находится в диалоге, оплата будет невозможна, и ему будет показано следующее сообщение:

Срок действия ссылки должен быть позже текущей даты, иначе клиент не сможет оплатить по этой ссылке.

2. Когда пользователь запрашивает ссылку, если она в данный момент неактивна
В этом случае кнопка просто не отображается. В переменных клиента появится переменная "error_payment_button", значение которой будет следующим:
&#xNAN;"Ошибка: Срок действия ссылки должен быть позже текущей даты".

Рекомендуется дополнительно обрабатывать такую ситуацию, чтобы пользователь мог правильно совершить оплату.

Создайте условный блок:
Если пришло следующее сообщение:
error_payment_button == "Ошибка: Срок действия ссылки должен быть позже текущей даты"

Тогда отобразите следующий текст:
&#xNAN;"Извините, вы не смогли вовремя оплатить, ссылка на оплату стала недействительной".

Автоматически создаваемые переменные клиента при использовании кнопки с функцией «Оплатить»

В момент, когда пользователь получает блок с кнопкой «Оплатить», для клиента автоматически создаются переменные:

Служебная переменная клиента __payments – эта переменная хранит сумму и идентификатор созданной ссылки и необходима для идентификации хука, поступающего от платежной системы.

Служебную переменную клиента __payments нельзя удалять или изменять!

Переменная клиента error_payment_button автоматически создается, если при создании кнопки возникла ошибка.
В эту переменную записывается текст ошибки или ответ об ошибке от платежной системы.

Значения переменных становятся актуальными при переходе к следующему блоку.

Как обработать результат

Успешный платеж
После успешного совершения платежа в бот АВТОМАТИЧЕСКИ ПРИХОДИТ КОЛБЭК, который состоит из первых 10 символов секретного ключа платежной системы, слова _success и суммы платежа.
Для использования в настройке схемы достаточно просто скопировать его.

Например: ovg58keefc_success 44, где:

  • ovg58keefc – первые 10 символов секретного ключа платежной системы
  • _success – результат обработки запроса (успешный платеж)
  • 44 – сумма платежа

Пользователь НЕ ВИДИТ колбэки (сообщения), приходящие от платежной системы. Они отображаются только на вкладке «Клиенты» и видны оператору.

Пример использования:
Шаг 1. В блок «С кнопкой оплаты» добавляем кнопки с функцией «Оплатить».
Шаг 2. В поле Условие связи, ведущем из этого блока в блок «Успешный платеж», указываем колбэк.
Аналогично, если в условии блока «Начальное условие» указать колбэк успешного платежа, работа будет осуществляться аналогичным образом.

Важно: Выберите «Полное совпадение» или «По наличию ключевых слов».

❗️Если вы решили проверять платеж по условию, указанному в стрелке, тщательно продумайте логику вашей схемы. Если клиент пропустит блок, проходящий по условию с колбэком, перехода в блок не произойдет. Такой метод проверки лучше использовать только в том случае, если клиент не меняет свое положение в воронке.

В схемах, где клиент перемещается между блоками, эффективнее использовать вариант указания колбэка в блоке «Начальное условие».

Успешный платеж для товаров с автоподпиской

После успешного совершения платежа в бот АВТОМАТИЧЕСКИ ПРИХОДИТ КОЛБЭК, который состоит из первых 10 символов секретного ключа платежной системы, слова _success и ID товара подписки.

Например: 214009eefc_success 618117, где:

  • 009eefc – первые 10 символов секретного ключа платежной системы
  • _success – результат обработки запроса (успешный платеж)
  • 618117 – ID товара подписки

Ошибочный платеж
В случае ошибки при осуществлении платежа в бот АВТОМАТИЧЕСКИ ПРИХОДИТ КОЛБЭК, который состоит из первых 10 символов секретного ключа платежной системы, слова _fail и суммы платежа.

Например: ovg58keefc_fail 44, где:

  • ovg58keefc – первые 10 символов секретного ключа платежной системы
  • _fail – результат обработки запроса (платеж не выполнен или произошла ошибка)
  • 44 – сумма платежа

Это зависит от платежной системы. Не все платежные системы отправляют колбэк об ошибке платежа.

Если сумма, указанная в настройках кнопки, отличается от суммы, уплаченной клиентом, в бот АВТОМАТИЧЕСКИ ПРИХОДИТ КОЛБЭК. Он состоит из первых 10 символов секретного ключа платежной системы, слова _different_amounts и уникального ID платежа.

Мысалы: ovg58keefc_different_amounts 123456, мұндағы:

  • ovg58keefc – төлем жүйесінің құпия кілтінің алғашқы 10 символы
  • _different_amounts – сұраныстың өңделу нәтижесі (төлем сомасы сілтемедегі сомадан өзгеше)
  • 123456 – төлемнің бірегей ID-сі

Калькулятордағы get_prodamus_payment_url функциясы

Төлемге сілтеме жасау үшін Калькулятор блокындағы get_prodamus_payment_url функциясын пайдалануға болады.
Калькулятор өрісінде айнымалыға осы функцияның мәнін тағайындаймыз: get_prodamus_payment_url.

Айнымалының атын өзіңіз таңдайсыз. Скриншоттарда айнымалылардың атын беру мысалдары көрсетілген.

Осы айнымалыға төлемге арналған сілтеме жазылады. Айнымалыны хабарламада сілтеме ретінде көрсетуге немесе «Төлеу» мәтіні бар батырмаға орналастыруға болады.

Төлемге сілтеме мысалы: https://payform.kz/7p3JR8/

Калькулятор

Мысал 1:

Параметрлердің сипаттамасы

your_variable =`` get_prodamus_payment_url(amount, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)

Функция параметрлері:

Параметр Параметр мәні
amount Төлем сомасы – бүтін сан немесе нүктемен бөлінген сан ретінде берілуі мүмкін. Мысалы: 25 немесе 52.5. (міндетті параметр)
product_name Тауар атауы (міндетті параметр)
expired

Төлем сілтемесінің жарамдылық уақытыдд.мм.гггг форматында (мысалы, 25.01.2021).
Сонымен қатар, Калькулятор өрісінде былай көрсетуге болады:
expired = current_date + 2 (сілтеме 2 күн бойы 00:00-ге дейін жарамды болады).

Нақты уақытты көрсету де мүмкін: дд.мм.гггг чч:мм (мысалы, 25.01.2021 12:23).

Стандартты айнымалыларды да қолдануға болады, мысалы, сілтеменің жарамдылығын 30 минутқа орнату:

time = current_time + 30
expired = "#{current_date} #{time}"

Егер бұл параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша, қос тырнақша немесе None мәнін беруге болады.

customer_phone Сатып алушының телефон нөмірі – міндетті емес, егер customer_email параметрі берілсе.
Осы параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.
customer_email Сатып алушының Email мекенжайы – міндетті емес, егер customer_phone параметрі берілсе.
Осы параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.
discount Жеңілдік мөлшері – параметрді бүтін сан немесе нүктесі бар сан ретінде беруге болады: 25 немесе 63.5.
Бұл параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.
description Тауар сипаттамасы (егер көрсетілмесе, автоматты түрде 'Оплата счета order_id' толтырылады).
Осы параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.
extra_params

Қосымша параметрлер, осы функцияда жоқ параметрлер.
Қолжетімді қосымша параметрлерді төлем жүйесінің API-мен жұмыс істеу құжаттамасынан қарауға болады: Prodamus REST API

Мысалы:

extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}

Бұл параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша/қос тырнақша немесе None мәнін беруге болады.

products_for_receipt

50-тен 4000 символға дейінгі жол форматында "тапсырыс сипаттамасы - баға - сатып алынатын ресурсқа сілтеме".
Мысалы:
“Курс ‘Лещ аулау’, бағасы 4999 рубль, курс бетіне сілтеме: https://www.lovilescha.ru/courses/poimai_kilogram/"

Бұл параметр міндетті, егер сізде өзіңіздің онлайн кассаңыз болмаса, Prodamus арқылы төлемді фискализациялау үшін қажет.

Мысал

extra_params = {"payments_limit": "3"}

products_for_receipt = "Курс ‘Лещ аулау’, бағасы 4999 теңге, курс бетіне сілтеме: https://www.lovilescha.ru/courses/poimai\_kilogram/" 

link_prodamus_url = get_prodamus_payment_url( 4999, 'Курс ‘Лещ аулау’', '27.03.2023 17:00', '79167777771', '[email protected]', 20, 'Нарықтағы ең үздік курс', extra_params, products_for_receipt

Бұл мысалда:

  • extra_params – қосымша параметрлер (мысалы, төлем шегі).
  • products_for_receipt – чекте көрсетілетін тауар туралы ақпарат.
  • get_prodamus_payment_url функциясы арқылы төлемге сілтеме жасалады.

Егер блокта бірнеше сілтеме алу функциялары болса және қате жіберілсе, қате мәні error_payment_func айнымалысына жазылады.

Қате соңғы функция бойынша Калькуляторда жазылады.

payment_sum айнымалысы және қосымша параметрлер арқылы сілтемені жасау

Назар аударыңыз: payment_sum айнымалысына мән соңғы айнымалыдан беріледі, яғни міндетті емес айнымалылардан кейін: payment_description, product_name және т.б.

Төлемге сілтеме жасау үшін Калькулятор өрісінде payment_sum айнымалысының мәнін орнату жеткілікті.
Осыдан кейін автоматты түрде prodamus_pay_url айнымалысы пайда болады.

Төлемге сілтеме мысалы: https://payform.ru/7p3JR8/

Осы айнымалыны хабарламада сілтеме ретінде көрсетуге немесе «Төлеу» мәтіні бар батырмаға орналастыруға болады.

payment_sum айнымалысын жарияламас бұрын мына міндетті емес айнымалыларды көрсетуге болады:

Параметры функции Описание параметра
product_name Тауардың атауы (егер көрсетілмесе, автоматты түрде "Шотты төлеу order_id' толтырылады) – төмендегі скриншотта қай жерде көрсетілетіні көрсетілген.
payment_description Тауар сипаттамасы (егер көрсетілмесе, автоматты түрде 'Оплата счета order_id' толтырылады) – төмендегі скриншотта қай жерде көрсетілетіні көрсетілген.
discount_value Жеңілдік мөлшері (мысалы, discount_value = 25 немесе discount_value = 50.25)
customer_phone Сатып алушының телефон нөмірі – міндетті емес, егер басқа параметр берілсе.
customer_email Сатып алушының Email мекенжайы
link_expired

Төлем сілтемесінің жарамдылық уақытыдд.мм.гггг форматында (мысалы, 25.01.2021).
Сонымен қатар, Калькулятор өрісінде былай көрсетуге болады:
link_expired = current_date + 2 (сілтеме 2 күн бойы 00:00-ге дейін жарамды болады).

link_expired

Сонымен қатар, нақты уақытты көрсетуге болады, формат: дд.мм.гггг чч:мм (мысалы, 25.01.2021 12:23).
Стандартты айнымалыларды да пайдалануға болады, мысалы, сілтеменің жарамдылық уақытын 30 минутқа орнату:
time = current_time + 30 link_expired = "#{current_date} #{time}"

currency

Төлем валютасы, әдепкі бойынша "rub".
Толық аргументтер тізімі:

  • rub
  • usd
  • eur
  • kzt

Бұл параметр кіші әріптермен берілуі керек.

payment_title

Төлем тақырыбы (127 символға дейін). Егер көрсетілмесе, автоматты түрде келесі мәтінмен толтырылады:
Шотты төлеу payment_id” (payment_id – MaviBot-тағы тапсырыс идентификаторы).

payment_description Төлемнің қысқаша сипаттамасы (127 символға дейін)
locale

Төлем бетінің тіліen-US, fr-XC және т.б. форматта көрсетіледі. Әдепкі мән – ru-RU.
Толық тізімді мына сілтемеден қарауға болады

products_for_receipt

50-тен 4000 символға дейінгі жол форматында "тапсырыс сипаттамасы - баға - сатып алынатын ресурсқа сілтеме".
Мысалы:
“Курс ‘Лещ аулау’, бағасы 4999 теңге, курс бетіне сілтеме: https://www.lovilescha.ru/courses/poimai_kilogram/"

Бұл міндетті параметр, егер сізде өзіңіздің онлайн кассаңыз болмаса, Prodamus арқылы төлемді фискализациялау үшін қажет.

payment_sum (міндетті) төлем сомасы

Переменные discount_value, customer_phone, customer_email и link_expired также актуальны для подписок.

Пример реализации.
В первом блоке устанавливаем сумму платежа:

На следующем шаге выводим ссылку prodamus_pay_url в нужном месте:

Переменная prodamus_available_payment_methods определяется до объявления payment_sum.
Возможные значения:

AC Оплата картой, выпущенной в РФ
ACkz Оплата картой Казахстана
ACf Оплата картами стран СНГ, кроме РФ
ACEURNMBX Оплата картой EUR всех стран, кроме России и Беларуси
SBP Быстрый платеж, без ввода данных карты. Для карт России
QW Qiwi wallet
PC Юmoney
GP Платежный терминал
sbol Сбербанк онлайн
invoice Оплата по счету
installment Рассрочка от Prodamus
installment_5_21 Рассрочка на 3 месяца от Prodamus
installment_6_28 Рассрочка на 6 месяцев от Prodamus
installment_10_28 Рассрочка на 10 месяцев от Prodamus
installment_12_28 Рассрочка на 12 месяцев от Prodamus
installment_0_0_3 Рассрочка на 3 месяца от Tinkoff
installment_0_0_4 Рассрочка на 4 месяца от Tinkoff
installment_0_0_6 Рассрочка на 6 месяцев от Tinkoff
installment_0_0_10 Рассрочка на 10 месяцев от Tinkoff
installment_0_0_12 Рассрочка на 12 месяцев от Tinkoff
installment_0_0_24 Рассрочка на 24 месяца от Tinkoff
installment_0_0_36 Рассрочка на 36 месяцев от Tinkoff
credit Кредит от Tinkoff
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 месяцев от «МТС Банка»
monetaworld Карты мировых банков, кроме России
sbrf_bnpl Рассрочка от Сбера

Допускается указывать несколько значений, разделяя их вертикальной чертой.
Например:

prodamus_available_payment_methods = "AC|PC|QW"

prodamus_currency – это еще один дополнительный параметр, который позволяет отобразить сумму в определенной валюте.

Возможные валюты:

  • kzt – для тенге
  • eur – для евро
  • usd – для доллара

Таким образом, сумма, указанная в ссылке, будет в выбранной валюте.

При получении колбэка payment_callback необходимо обратить внимание на параметры currency и currency_sum, в которых указываются валюта и сумма.

Если не указано, переходит на страницу без способов оплаты.
Способы оплаты можно подключить через поддержку. Подключенные способы можно проверить в настройках страницы или по ссылке на оплату.

Как обработать результат

Успешный платеж

Важно: после успешного или неуспешного платежа в бот приходят колбэки (callback), с помощью которых вы можете определить, что платеж прошел успешно.

Колбэки выглядят в системе как сообщения от пользователя, но пользователь не может их отправить. Они представляют собой комбинацию секретного ключа и статуса. Например:

453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success

или

453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail

После успешного платежа переменная prodamus_payment_completed автоматически принимает значение True.

Примечание: Колбэки приходят с небольшой задержкой, поэтому после отправки ссылки пользователю рекомендуется отправить сообщение:

"После совершения платежа дождитесь подтверждения успешной оплаты."


Структура колбэка

Для ссылок, созданных через кнопку Оплаты или функцию в Калькуляторе, после оплаты в бот автоматически приходит колбэк. Он содержит:

<секретный_ключ>_success <сумма_платежа>

Например:

ovg58keefc_success
  • ovg58keefc – полный секретный ключ платежной системы
  • _success – результат обработки запроса (успешный платеж)

Практическое применение

Успешный платеж можно обработать через условный блок и показать пользователю соответствующее сообщение.

Тип сравнения должен быть "Full match" / "Полное совпадение"

Для повторного платежа обязательно нужно обнулить переменную payment_sum и удалить ранее созданную ссылку. Только после этого можно присвоить новое значение переменной payment_sum и получить обновленную ссылку.

Деактивация/реактивация подписки

Кроме того, в системе Prodamus есть уведомления о том, активирована или остановлена подписка:

«Подписка отключена пользователем» – если подписка была остановлена вручную (например, при отказе от подписки).
Это сообщение может прийти до окончания текущего оплаченного периода. Действие зависит от вашего решения: игнорировать, взять на контроль или попытаться вернуть пользователя.

«Подписка реактивирована пользователем» – подписка восстановлена.
Это сообщение может прийти, если пользователь восстановил подписку до окончания текущего оплаченного периода. Действие зависит от вашего решения: игнорировать или удалить из списка мониторинга.

«Деактивация подписки» – если подписка остановлена после нескольких неуспешных платежей.

Сохранение значений из колбэка

После получения сообщения об успешном платеже в переменную payment_callback записывается колбэк от Prodamus, содержащий все данные платежа. Вы можете сохранить эти данные и использовать их по своему усмотрению.

Пример колбэка:

{
  "date": "2021-03-30T11:44:43+03:00",
  "order_id": "757679",
  "order_num": "",
  "domain": "demo.payform.ru",
  "sum": "14.50",
  "customer_phone": "+77777777777",
  "customer_extra": "Товар",
  "payment_type": "Пластиковая карта Visa, MasterCard, МИР",
  "commission": "3.5",
  "commission_sum": "0.51",
  "attempt": "1",
  "discount_value": "10.5",
  "products[0][name]": "Доступ к обучающим материалам",
  "products[0][price]": "14.50",
  "products[0][quantity]": "1",
  "products[0][sum]": "14.50",
  "payment_status": "success",
  "payment_status_description": "Успешная оплата",
  "payment_init": "manual"
}

При создании ссылки можно указать переменные product_name и payment_description. Тогда при получении колбэка их можно получить следующим образом:

product = get(payment_callback,'products[0][name]')
description = get(payment_callback,'customer_extra')

Обратите внимание: переменной payment_sum присваивается последнее значение, которое располагается после необязательных переменных: payment_description, product_name.

Сумму можно получить следующим образом:

summa = get(payment_callback, 'sum')

Доступные колбэки

Помимо основных колбэков об успешном платеже, в чат приходят сообщения, которые пользователь не видит:

колбэки
  • Подписчик деактивировал подписку (подробнее тут)
  • Подписчик реактивировал подписку (подробнее тут)
  • Подписка завершена
  • Не успешная оплата - приписка с пояснением (на скриншоте выше)
  • Уведомление о предстоящем списании - дата и время предстоящего списания
  • Заявка на рассрочку со статусом
Примеры колбэков в диалоге с клиентом
  • Подписчик деактивировал подписку
  • Подписчик реактивировал подписку
  • Подписка завершена
  • Не успешная оплата - Недостаточно средств.
  • Не успешная оплата - Срок действия карты истёк.
  • Не успешная оплата - Превышен лимит по карте.
  • Не успешная оплата - Карта утеряна
  • Не успешная оплата - Системная ошибка\
  • Не успешная оплата - Операция отклонена. Обратитесь в банк, выпустивший карту.\
  • Не успешная оплата - Отказ в проведении операции банком эмитентом.
  • Не успешная оплата - Отказ в проведении операции банком.\
  • Уведомление о предстоящем списании - дд.мм.гггг чч:мм
  • Заявка на рассрочку одобрена
  • Заявка на рассрочку отменена
  • Заявка на рассрочку отклонена

По вашему желанию можно настроить отправку любого сообщения пользователю. Например, отправлять уведомление в случае неуспешного автоматического платежа.

Блоки ответа на сообщение по конкретной причине неуспешного платежа можно настроить следующим образом:

Для отправки уведомления о всех неудачных платежах, независимо от причины, можно настроить следующим образом:

Во всех коллбэках, если в тексте есть слова «Платеж не удался», пользователю будет отправлено сообщение с указанным вами текстом.

Как произвести оплату по подписке

Как создать подписку

Для создания подписки сначала необходимо создать подписной товар.
Полная инструкция: Как создать и настроить подписку

Затем копируем ID подписного товара. Например, ниже показано, откуда его взять:

Создание подписного товара

Для создания ссылки на оплату подписки необходимо в переменную prodamus_subscription установить ID подписного товара. После этого автоматически появится переменная prodamus_pay_url.

Переменную prodamus_pay_url можно вывести на экран в виде ссылки или разместить на кнопке с текстом «Оплатить». Пример ссылки: https://payform.kz/7p3JR8/

Обработка результата осуществляется так же, как и для разового платежа (как описано выше).

После успешной подписки пользователю присваивается переменная customer_phone, введенная при оплате. Номер телефона необходим для управления подпиской.

Если customer_email не указан, то customer_phone обязателен для управления подпиской.

Как создать ссылку на подписку с помощью функции get_prodamus_subscription_url

Рассмотрим другой способ создания ссылки на оплату подписки на товар.

  1. В кабинете Продамус создается подписной товар.
    Полную инструкцию можно посмотреть по ссылке:
    Как создать и настроить подписку
  2. Затем копируем ID подписного товара. Например, ниже показано, откуда его взять:
Создание подписного товара

Для получения ссылки на оплату товара по подписке в Калькуляторе указываем функцию

get_prodamus_subscription_url(subscription_id, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)

Калькулятор

Пример 1: Ссылка на оплату товара по подписке

Описание параметров

link = get_prodamus_subscription_url(subscription_id, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)

Параметры функции:

Параметр Значение параметра
subscription_id ID подписного товара – можно скопировать из кабинета Продамус (обязательный параметр).
product_name Название товара (обязательный параметр).
expired

Срок действия ссылки на оплату – в формате дд.мм.гггг (например, 25.01.2021).

Также можно указать в поле «Калькулятор»:

expired = current_date + 2  # ссылка будет действительна 2 дня, до 00:00

Параметр expired можно указать с точным временем, формат: дд.мм.гггг чч:мм (например, 25.01.2021 12:23).

Также можно использовать стандартные переменные, например, установить срок действия ссылки на 30 минут:

time = current_time + 30
expired = "#{current_date} #{time}"

Если вы хотите пропустить этот параметр, передайте вместо него одинарные или двойные кавычки, или значение None.

customer_phone

Номер телефона плательщика – необязателен, если указан параметр customer_email.

Если вы хотите пропустить этот параметр, передайте вместо него одинарные или двойные кавычки.

customer_email

Email плательщика – необязателен, если указан параметр customer_phone.

Если вы хотите пропустить этот параметр, передайте вместо него одинарные или двойные кавычки.

discount

Размер скидки – параметр можно передать как целое или десятичное число: 25 или 63.5.

Если вы хотите пропустить этот параметр, передайте вместо него одинарные или двойные кавычки.

description

Описание товара – если не указано, по умолчанию заполняется 'Оплата счета order_id'.

Если вы хотите пропустить этот параметр, передайте вместо него одинарные или двойные кавычки.

extra_params

Дополнительные параметры, которых нет в этой функции.
Возможные дополнительные параметры можно посмотреть в документации API платежной системы:
Инструкция по REST API Prodamus

Пример:

extra_params = {"payments_limit": "3"}

Если вы хотите пропустить этот параметр, передайте вместо него одинарные/двойные кавычки или значение None.

products_for_receipt

Строка длиной от 50 до 4000 символов, формат: "описание заказа - цена - ссылка на приобретаемый ресурс"

Пример:
Курс «Курс ловли леща», цена 4999 тенге, ссылка на страницу курса: https://www.lovilescha.ru/courses/poimai_kilogram/.

Этот параметр обязателен, если у вас нет собственной онлайн-кассы и вы используете Prodamus для фискализации платежей.

Пример кода для копирования

extra_params = {"payments_limit": "3"}
products_for_receipt = "Курс ‘Курс ловли леща’, ежемесячная подписка цена 2000 тенге, ссылка на страницу курса: https://www.lovilescha.ru/courses/poimai\_kilogram/"
link_prodamus_sub = get_prodamus_subscription_url(618988, 'Курс ‘Курс ловли леща’', '27.03.2023 17:02', '79167777771', '[email protected]', 20, 'Лучший курс на рынке', extra_params, products_for_receipt)

Если при получении ссылки через несколько функций в блоке возникает ошибка, значение ошибки записывается в переменную error_payment_func.

Ошибка записывается в Калькуляторе по последней функции.

Как управлять статусом подписки

Этот метод предназначен только для реальных подписок, в демо-режиме привязка карты отсутствует.

Для управления подпиской обязательно должен быть указан один из параметров: customer_phone или customer_email.

Для отписки пользователя от подписки необходимо создать блок и вызвать следующую функцию:
delete_subscription_prodamus

Пример параметров:

{
  "customer_phone": "#{customer_phone}",
  "id_subscription":"#{prodamus_subscription}",
  "url":"https://demo.payform.ru/",
  "secret_key":"453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66",
  "switcher":"0",
  "profile_id":"12345"
}
  • url – URL платежной формы, полученный из настроек в конструкторе
  • secret_key – секретный ключ из настроек
  • id_subscription – ID подписного товара
  • customer_phone – телефон владельца подписки
  • switcher – управление подпиской: 0 – отключить подписку, 1 – повторно активировать подписку
  • profile_id – ID профиля в системе Продамус

Примечание:
Если приходит ID профиля, он сохраняется в переменную profile_id.
profile_id можно передать в функцию вместо customer_phone или customer_email для отключения подписки.

Пример: настройка блоков подписки

Обратите внимание, функция возвращает status, который можно сохранить и обработать по своему усмотрению. При успешном отключении или повторной активации подписки status = ok.

Функция для управления подпиской

prodamus_subscription_switch_status(subscription_id, switcher, customer_phone, customer_email, profile_id) Параметры:

subscription_id – ID подписного товара

switcher – управление подпиской: 0 – отключить подписку, 1 – повторно активировать подписку

customer_phone – телефон владельца подписки; необязателен, если указан customer_email

customer_email – email владельца подписки; необязателен, если указан customer_phone

profile_id – ID профиля в системе Продамус

Пример 1: Указан параметр customer_phone, параметр customer_email пропущен:

stat = prodamus_subscription_switch_status('618117', '0', '75431312321')

Пример 2: Указан параметр customer_email, параметр customer_phone пропущен:

stat = prodamus_subscription_switch_status('618117', '0', '', '[email protected]')

Функция возвращает ok, если все операции выполнены успешно, или описание ошибки в случае ее возникновения.

Управление скидками в подписке

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

prodamus_subscription_discount(subscription_id, discount, customer_phone, num, profile_id)

Параметры:

  • subscription_id – ID подписки
  • discount – десятичное число с двумя знаками после запятой; значение должно быть больше нуля и не превышать базовую стоимость подписки
  • customer_phone – номер телефона клиента, формат: +79999999999 (необязателен, если существует переменная customer_email; она появляется после первого платежа)
  • num – количество платежей, на которые распространяется скидка (необязательно; если не указано, скидка применяется ко всем платежам)
  • profile_id – ID профиля в системе Продамус

При успешном выполнении запроса функция возвращает 'ok'; в случае ошибки функция возвращает описание ошибки.

Размер скидки и интервал перезаписываются только при повторном вызове функции с новыми значениями!

Примеры:

1. Предоставление скидки в 1₽ на все последующие автоплатежи (номер телефона не указывается, так как он автоматически берется из переменной customer_phone; сумма скидки по умолчанию применяется на весь срок подписки):

r = prodamus_subscription_discount('624034', '1')

2. Пример предоставления скидки в 2₽ на следующие 3 платежа (номер телефона передан пустыми кавычками, так как он автоматически берется из переменной customer_phone):

r = prodamus_subscription_discount('624034', '2', '', '3')

3. Пример указания скидки с десятичной дробью (разделитель – точка, значения указываются без кавычек), номер телефона можно передать через переменную.

r = prodamus_subscription_discount(#{prodamus_subscription}, 10.25, #{customer_phone}, 3)

Как установить дату следующего платежа по подписке

С помощью этого метода можно перенести дату следующего платежа по подписке. Дату можно перенести только «в будущее» относительно текущей установленной даты следующего платежа, тем самым увеличив срок участия в клубе.

Например, это может быть использовано в качестве бонуса для подписчиков.

Для этого необходимо использовать следующую функцию:

prodamus_subscription_payment_date(subscription_id, date, customer_phone, profile_id)

Параметры:

  • subscription_id – идентификатор подписки
  • date – дата в формате дд.мм.гггг чч:мм или дд.мм.гггг; если указана только дд.мм.гггг, время будет 00:00
  • customer_phone – необязательно; если не указан, берется из переменной customer_phone; если не найден, функция не сработает
  • profile_id – ID профиля в системе Продамус

Как передать параметры в Prodamus

Чтобы передать необходимые параметры (например, дату начала подписки, отключение рассрочки и т.д.) в систему Prodamus, добавьте к имени переменной префикс prodamus_.

Затем при создании платежной ссылки параметры из этой переменной будут автоматически отправлены в платежную систему.

Как тестировать платеж

Тестируем только платеж!

При настройке интеграции и платежных воронок вы можете использовать тестовые карты, чтобы с вашего счета не списывались деньги.

Сначала переведите вашу платежную страницу в ДЕМО режим
Не забудьте нажать кнопку «Сохранить».

Для совершения тестового платежа можно использовать тестовые счета.

Тестовые карты Сбербанка:

МИР
Номер карты: 2202 2050 0001 2424
Срок действия: 05/35
Код проверки на обратной стороне (CVV): 669

MasterCard
Номер карты: 5469 9801 0004 8525
Срок действия: 05/26
Код проверки на обратной стороне (CVV): 041
Код проверки 3‑D Secure: 111111

Visa
Номер карты: 4006 8009 0096 2514
Срок действия: 05/26
Код проверки на обратной стороне (CVV): 941
Код проверки 3‑D Secure: 111111

❗️При оплате через тестовые счета все настроенные воронки и интеграции работают так же, как при обычном платеже❗️

Форма проверена

Для приема реальных платежей форма должна быть переведена в рабочий режим. То есть переключатель демо-режима необходимо установить в положение открытый красный.