Как подключить 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 (міндетті) төлем сомасы

As variáveis discount_value, customer_phone, customer_email e link_expired também são relevantes para assinaturas.

Exemplo de implementação.
No primeiro bloco, definimos o valor do pagamento:

Na próxima etapa, exibimos o link prodamus_pay_url onde for necessário:

A variável prodamus_available_payment_methods é definida antes de declarar payment_sum.
Valores possíveis:

AC Pagamento com cartão emitido na Rússia
ACkz Pagamento com cartão do Cazaquistão
ACf Pagamento com cartões dos países da CEI, exceto Rússia
ACEURNMBX Pagamento com cartão EUR de todos os países, exceto Rússia e Bielorrússia
SBP Pagamento rápido, sem inserir dados do cartão. Para cartões russos
QW Qiwi wallet
PC YooMoney
GP Terminal de pagamento
sbol Sberbank Online
invoice Pagamento por fatura
installment Parcelamento via Prodamus
installment_5_21 Parcelamento via Prodamus em 3 meses
installment_6_28 Parcelamento via Prodamus em 6 meses
installment_10_28 Parcelamento via Prodamus em 10 meses
installment_12_28 Parcelamento via Prodamus em 12 meses
installment_0_0_3 Parcelamento via Tinkoff em 3 meses
installment_0_0_4 Parcelamento via Tinkoff em 4 meses
installment_0_0_6 Parcelamento via Tinkoff em 6 meses
installment_0_0_10 Parcelamento via Tinkoff em 10 meses
installment_0_0_12 Parcelamento via Tinkoff em 12 meses
installment_0_0_24 Parcelamento via Tinkoff em 24 meses
installment_0_0_36 Parcelamento via Tinkoff em 36 meses
credit Crédito via Tinkoff
vsegdada_installment_0_0_4 Parcelamento via “VsegdaDa” em 4 meses (não funciona com available_payment_methods)
vsegdada_installment_0_0_6 Parcelamento via “VsegdaDa” em 6 meses
vsegdada_installment_0_0_10 Parcelamento via “VsegdaDa” em 10 meses
vsegdada_installment_0_0_12 Parcelamento via “VsegdaDa” em 12 meses
vsegdada_installment_0_0_24 Parcelamento via “VsegdaDa” em 24 meses
vsegdada_installment_0_0_36 Parcelamento via “VsegdaDa” em 36 meses
sbrf_installment_0_0_6 Parcelamento via Sberbank em 6 meses
sbrf_installment_0_0_10 Parcelamento via Sberbank em 10 meses
sbrf_installment_0_0_12 Parcelamento via Sberbank em 12 meses
sbrf_installment_0_0_24 Parcelamento via Sberbank em 24 meses
sbrf_installment_0_0_36 Parcelamento via Sberbank em 36 meses
otp_installment_0_0_6 Parcelamento via “Banco OTP” em 6 meses
otp_installment_0_0_10 Parcelamento via “Banco OTP” em 10 meses
otp_installment_0_0_12 Parcelamento via “Banco OTP” em 12 meses
otp_installment_0_0_24 Parcelamento via “Banco OTP” em 24 meses
otp_installment_0_0_36 Parcelamento via “Banco OTP” em 36 meses
mts_installment_0_0_6 Parcelamento via “Banco MTS” em 6 meses
mts_installment_0_0_10 Parcelamento via “Banco MTS” em 10 meses
mts_installment_0_0_12 Parcelamento via “Banco MTS” em 12 meses
mts_installment_0_0_24 Parcelamento via “Banco MTS” em 24 meses
mts_installment_0_0_36 Parcelamento via “Banco MTS” em 36 meses
monetaworld Cartões de bancos mundiais, exceto Rússia
sbrf_bnpl Parcelamento via Sber

É permitido especificar vários valores separados por barra vertical.
Por exemplo:

prodamus_available_payment_methods = "AC|PC|QW"

prodamus_currency – este é outro parâmetro adicional que permite exibir o valor em uma moeda específica.

Moedas possíveis:

  • kzt – para tenge
  • eur – para euro
  • usd – para dólar

Dessa forma, o valor indicado no link estará na moeda selecionada.

Ao receber o callback payment_callback é necessário prestar atenção aos parâmetros currency e currency_sum, que indicam a moeda e o valor.

Se não for especificado, será redirecionado para uma página sem métodos de pagamento.
Os métodos de pagamento podem ser ativados através do suporte. Os métodos ativados podem ser visualizados nas configurações da página ou testados gerando um link de pagamento.

Como processar o resultado

Pagamento bem-sucedido

Importante: após um pagamento bem-sucedido ou malsucedido, o bot recebe callbacks, com os quais você pode determinar se o pagamento foi concluído com sucesso.

Os callbacks aparecem no sistema como mensagens do usuário, mas o usuário não pode enviá-las. Eles consistem em uma combinação de chave secreta e status. Por exemplo:

453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success

ou

453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail

Após um pagamento bem-sucedido, a variável prodamus_payment_completed assume automaticamente o valor True.

Observação: Os callbacks chegam com um pequeno atraso, portanto, é recomendável enviar uma mensagem ao usuário após enviar o link:

“Após efetuar o pagamento, aguarde a confirmação de que o pagamento foi concluído com sucesso.”


Estrutura do callback

Para links criados através do botão Pagar ou da função na Calculadora, após o pagamento, o bot recebe automaticamente um callback. Ele contém:

<chave_secreta>_success <valor_do_pagamento>

Por exemplo:

ovg58keefc_success
  • ovg58keefc – chave secreta completa do sistema de pagamento
  • _success – resultado do processamento da solicitação (pagamento bem-sucedido)

Uso prático

Você pode processar o pagamento bem-sucedido através de um bloco condicional e exibir a mensagem correspondente ao usuário.

O tipo de comparação deve ser "Full match" / "Correspondência exata"

Para realizar um novo pagamento, é obrigatório zerar a variável payment_sum e excluir o link criado anteriormente. Só então atribua um novo valor à variável payment_sum e obtenha o link atualizado.

Desativação/Reativação de assinatura

Além disso, o sistema Prodamus possui notificações sobre a ativação ou desativação de uma assinatura:

“Assinatura desativada pelo usuário” – se a assinatura foi cancelada manualmente (por exemplo, em caso de cancelamento da assinatura).
Esta notificação pode chegar antes do término do período pago atual. A ação depende da sua decisão: ignorar, monitorar ou tentar reconquistar o usuário.

“Assinatura reativada pelo usuário” – a assinatura foi restaurada.
Esta notificação pode chegar se o usuário restaurar a assinatura antes do término do período pago atual. A ação depende da sua decisão: ignorar ou remover da lista de monitoramento.

“Desativação de assinatura” – quando a assinatura é cancelada após várias tentativas de pagamento malsucedidas.

Salvar valores do callback

Após receber a notificação de pagamento bem-sucedido, o callback do Prodamus é gravado na variável payment_callback, contendo todos os dados do pagamento. Você pode salvar esses dados e usá-los conforme necessário.

Exemplo de callback:

{
  "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"
}

Ao criar o link, você pode especificar as variáveis product_name e payment_description. Nesse caso, quando o callback chegar, você pode obtê-las da seguinte forma:

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

Atenção: o último valor é atribuído à variável payment_sum, que é colocada após as variáveis opcionais: payment_description, product_name.

Você pode obter o valor da seguinte forma:

summa = get(payment_callback, 'sum')

Callbacks disponíveis

Além dos callbacks principais de pagamento bem-sucedido, mensagens que o usuário não vê chegam no chat da seguinte forma:

callbacks
  • Assinante desativou a assinatura (mais detalhes aqui)
  • Assinante reativou a assinatura (mais detalhes aqui)
  • Assinatura concluída
  • Pagamento malsucedido - assinatura com explicação (na captura de tela acima)
  • Notificação de cobrança futura - data e hora da próxima cobrança
  • Solicitação de parcelamento com status
Exemplos de callbacks no diálogo com o cliente
  • Assinante desativou a assinatura
  • Assinante reativou a assinatura
  • Assinatura concluída
  • Pagamento malsucedido - Saldo insuficiente.
  • Pagamento malsucedido - Cartão vencido.
  • Pagamento malsucedido - Limite do cartão excedido.
  • Pagamento malsucedido - Cartão perdido
  • Pagamento malsucedido - Erro de sistema
  • Pagamento malsucedido - Operação recusada. Entre em contato com o banco emissor do cartão.
  • Pagamento malsucedido - Recusa na realização da operação pelo banco emissor.
  • Pagamento malsucedido - Recusa na realização da operação pelo banco.
  • Notificação de cobrança futura - dd.mm.aaaa hh:mm
  • Solicitação de parcelamento aprovada
  • Solicitação de parcelamento cancelada
  • Solicitação de parcelamento recusada

Você pode configurar o envio de qualquer mensagem ao usuário conforme desejar. Por exemplo, enviar uma notificação em caso de falha no pagamento automático.

Os blocos de resposta para uma mensagem com um motivo específico de pagamento malsucedido podem ser configurados da seguinte forma:

Para enviar uma notificação sobre todos os pagamentos malsucedidos, independentemente do motivo, você pode configurar da seguinte forma:

Em todos os callbacks, se o texto contiver a palavra «Pagamento malsucedido», o usuário receberá uma mensagem com o texto que você definiu.

Como fazer um pagamento por assinatura

Como criar uma assinatura

Para criar uma assinatura, primeiro você precisa criar um produto de assinatura.
Instruções completas: Como criar e configurar uma assinatura

Em seguida, copiamos o ID do produto de assinatura. Por exemplo, abaixo está indicado onde obtê-lo:

Criação de produto de assinatura

Para criar um link de pagamento de assinatura, é necessário definir o ID do produto de assinatura na variável prodamus_subscription. Depois disso, a variável prodamus_pay_url aparecerá automaticamente.

A variável prodamus_pay_url pode ser exibida na tela como um link ou colocada em um botão com o texto «Pagar». Exemplo de link: https://payform.kz/7p3JR8/

O processamento do resultado ocorre da mesma forma que no pagamento único (conforme lido acima).

Após uma assinatura bem-sucedida, a variável customer_phone inserida pelo usuário durante o pagamento é adicionada. O número de telefone é necessário para gerenciar a assinatura.

Se customer_email não for fornecido, customer_phone é obrigatório para gerenciar a assinatura.

Vamos considerar outro método para criar um link de pagamento de assinatura para um produto.

  1. Crie um produto de assinatura no painel do Prodamus.
    Instruções completas podem ser encontradas no link:
    Como criar e configurar uma assinatura
  2. Em seguida, copiamos o ID do produto de assinatura. Por exemplo, abaixo está indicado onde obtê-lo:
Criação de produto de assinatura

Para obter o link de pagamento do produto por assinatura na Calculadora, especificamos a função

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

Calculadora

Exemplo 1: Link de pagamento para produto por assinatura

Descrição dos parâmetros

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

Parâmetros da função:

Parâmetro Valor do parâmetro
subscription_id ID do produto de assinatura – pode ser copiado do painel do Prodamus (parâmetro obrigatório).
product_name Nome do produto (parâmetro obrigatório).
expired

Prazo de validade do link de pagamento – no formato dd.mm.aaaa (por exemplo, 25.01.2021).

Também pode ser especificado no campo «Calculadora»:

expired = current_date + 2  # o link será válido por 2 dias, até as 00:00

O parâmetro expired também pode ser especificado com um horário exato, no formato: dd.mm.aaaa hh:mm (por exemplo, 25.01.2021 12:23).

Variáveis padrão também podem ser usadas, por exemplo, para definir o prazo de validade do link para 30 minutos:

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

Se você quiser pular este parâmetro, pode passar aspas simples ou duplas, ou o valor None.

customer_phone

Número de telefone do pagador – opcional, se o parâmetro customer_email for fornecido.

Se você quiser pular este parâmetro, passe aspas simples ou duplas.

customer_email

E-mail do pagador – opcional, se o parâmetro customer_phone for fornecido.

Se você quiser pular este parâmetro, passe aspas simples ou duplas.

discount

Valor do desconto – o parâmetro pode ser passado como um número inteiro ou decimal: 25 ou 63.5.

Se você quiser pular este parâmetro, passe aspas simples ou duplas.

description

Descrição do produto – se não for especificada, o padrão é 'Pagamento da fatura order_id'.

Se você quiser pular este parâmetro, passe aspas simples ou duplas.

extra_params

Parâmetros adicionais que não estão nesta função.
Os parâmetros adicionais possíveis podem ser consultados na documentação da API do sistema de pagamento:
Instruções da API REST do Prodamus

Exemplo:

extra_params = {"payments_limit": "3"}

Se você quiser pular este parâmetro, pode passar aspas simples/duplas ou o valor None.

products_for_receipt

String de 50 a 4000 caracteres, no formato: "descrição do pedido - preço - link para o recurso adquirido"

Exemplo:
Curso «Curso de pesca de dourada», preço 4999 tenge, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/.

Este parâmetro é obrigatório se você não tiver seu próprio caixa online e precisar fiscalizar os pagamentos através do Prodamus.

Exemplo de código para copiar

extra_params = {"payments_limit": "3"}

products_for_receipt = "Curso 'Curso de pesca de dourada', assinatura mensal no valor de 2000 tenge, link para a página do curso: https://www.lovilescha.ru/courses/poimai\_kilogram/" ;

link_prodamus_sub = get_prodamus_subscription_url(618988, 'Curso 'Curso de pesca de dourada'', '27.03.2023 17:02', '79167777771', '[email protected]', 20, 'O melhor curso do mercado', extra_params, products_for_receipt)

Se ocorrer um erro ao obter o link através de várias funções em um bloco, o valor do erro é gravado na variável error_payment_func.

O erro é registrado na Calculadora para a última função.

Como gerenciar o status da assinatura

Este método é apenas para assinaturas reais, não há vinculação de cartão no modo demo.

Para gerenciar a assinatura, é obrigatório fornecer o parâmetro customer_phone ou customer_email.

Para cancelar a assinatura de um usuário, é necessário criar um bloco e chamar a seguinte função:
delete_subscription_prodamus

Exemplo de parâmetros:

{
  "customer_phone": "#{customer_phone}",
  "id_subscription":"#{prodamus_subscription}",
  "url":"https://demo.payform.ru/",
  "secret_key":"453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66",
  "switcher":"0",
  "profile_id":"12345"
}
  • url – URL do formulário de pagamento, obtido nas configurações do construtor
  • secret_key – chave secreta obtida nas configurações
  • id_subscription – ID do produto de assinatura
  • customer_phone – telefone do titular da assinatura
  • switcher – controle da assinatura: 0 – cancelar assinatura, 1 – reativar assinatura
  • profile_id – ID do perfil no sistema Prodamus

Observação:
Se o ID do perfil chegar, ele será salvo na variável profile_id.
O profile_id pode ser passado para a função em vez de customer_phone ou customer_email para cancelar a assinatura.

Exemplo: configuração de blocos de assinatura

Observe que a função retorna status, que pode ser salvo e processado conforme desejado. Ao cancelar ou reativar a assinatura com sucesso, status = ok.

Função para gerenciar a assinatura

prodamus_subscription_switch_status(subscription_id, switcher, customer_phone, customer_email, profile_id) Parâmetros:

subscription_id – ID do produto de assinatura

switcher – controle da assinatura: 0 – cancelar assinatura, 1 – reativar assinatura

customer_phone – telefone do titular da assinatura; opcional, se customer_email for especificado

customer_email – endereço de e-mail do titular da assinatura; opcional, se customer_phone for especificado

profile_id – ID do perfil no sistema Prodamus

Exemplo 1: parâmetro customer_phone fornecido, customer_email omitido:

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

Exemplo 2: parâmetro customer_email fornecido, customer_phone omitido:

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

A função retorna ok se toda a operação for concluída com sucesso ou retorna a descrição do erro em caso de falha.

Gerenciamento de descontos em assinaturas

Esta função define o valor do desconto para os próximos pagamentos de uma assinatura. O desconto pode ser aplicado a um número limitado ou ilimitado de pagamentos.

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

Parâmetros:

  • subscription_id – ID da assinatura
  • discount – número decimal com duas casas decimais; o valor deve ser maior que zero e não exceder o custo base da assinatura
  • customer_phone – número de telefone do cliente, formato: +79999999999 (opcional, se a variável customer_email existir; ela aparece após o primeiro pagamento)
  • num – número de pagamentos aos quais o desconto será aplicado (opcional; se não for especificado, o desconto será aplicado a todos os pagamentos)
  • profile_id – ID do perfil no sistema Prodamus

Se a solicitação for bem-sucedida, a função retorna 'ok'; se ocorrer um erro, a função retorna a descrição do erro.

O valor do desconto e o intervalo são sobrescritos apenas quando a função é chamada novamente com novos valores!

Exemplos:

1. Conceder um desconto de 1₽ em todos os próximos pagamentos automáticos (o número de telefone não é especificado, pois é obtido automaticamente da variável customer_phone; o valor do desconto é aplicado por padrão a todo o período da assinatura):

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

2. Exemplo de concessão de desconto de 2₽ nos próximos 3 pagamentos (o número de telefone é passado com aspas vazias, pois é obtido automaticamente da variável customer_phone):

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

3. Exemplo de especificação de desconto com fração decimal (separador é o ponto, os valores são especificados sem aspas), o número de telefone pode ser passado através de uma variável.

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

Como definir a data do próximo pagamento de uma assinatura

Este método permite adiar a data do próximo pagamento de uma assinatura. A data só pode ser adiada para o futuro em relação à data do próximo pagamento atualmente definida, aumentando assim o período de participação no clube.

Por exemplo, isso pode ser usado como um bônus para os assinantes.

Para isso, é necessário usar a seguinte função:

prodamus_subscription_payment_date(subscription_id, date, customer_phone, profile_id)

Parâmetros:

  • subscription_id – identificador da assinatura
  • date – data no formato dd.mm.aaaa hh:mm ou dd.mm.aaaa; se apenas dd.mm.aaaa for fornecido, a hora será 00:00
  • customer_phone – opcional; se não for especificado, será obtido da variável customer_phone; se não for encontrado, a função não funcionará
  • profile_id – ID do perfil no sistema Prodamus

Como enviar parâmetros para o Prodamus

Para enviar os parâmetros necessários (por exemplo, data de início da assinatura, desativar parcelamento, etc.) para o sistema Prodamus, adicione o prefixo prodamus_ ao nome da variável.

Em seguida, ao criar o link de pagamento, os parâmetros nesta variável serão automaticamente enviados para o sistema de pagamento.

Como testar o pagamento

Apenas testamos o pagamento!

Ao configurar a integração e os funis de pagamento, você pode usar cartões de teste para que o dinheiro não seja debitado da sua conta.

Primeiro, coloque sua página de pagamento no modo DEMO
Não se esqueça de clicar no botão "Salvar".

Você pode usar contas de teste para fazer um pagamento de teste.

Cartões de teste do Sberbank:

MIR
Número do cartão: 2202 2050 0001 2424
Validade: 05/35
Código de verificação no verso (CVV): 669

MasterCard
Número do cartão: 5469 9801 0004 8525
Validade: 05/26
Código de verificação no verso (CVV): 041
Código de verificação 3‑D Secure: 111111

Visa
Número do cartão: 4006 8009 0096 2514
Validade: 05/26
Código de verificação no verso (CVV): 941
Código de verificação 3‑D Secure: 111111

❗️Ao fazer um pagamento com contas de teste, todos os funis e integrações configurados funcionam como em um pagamento normal❗️

Formulário verificado

Para aceitar pagamentos reais, o formulário precisa ser colocado no modo de funcionamento. Ou seja, o interruptor do modo demo deve ser colocado no estado vermelho aberto.