# Prodamus (KZ)

## **Продамусты қалай қосуға болады**

Prodamus-ты қосу үшін сізге төлем формасының URL мекенжайы және құпия кілт қажет.

Төлем формасының URL мекенжайы тіркелгеннен кейін беріледі, оның үлгісі: `demo.payform.ru`.

Құпия кілтті жеке кабинеттен алуға болады, сол жерде хабарламалар (notification) жіберілетін URL мекенжайын да көрсету қажет.

<div data-with-frame="true"><figure><img src="/files/9w6Pb3R4ZIMwu83q1vfx" alt=""><figcaption><p>«Продамус» төлем жүйесінің жеке кабинетінде төлем формасының баптауларындағы құпия кілт</p></figcaption></figure></div>

[**Мұны қалай жасау керектігі туралы толық нұсқаулық**](https://help.prodamus.ru/payform.ru-onlain-oplaty/prochee/url-dlya-uvedomlenii-i-sekretnyi-klyuch)

Хабарламаларға арналған мекенжай:\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Бұл мекенжайды баптауларда екі жерде көрсету қажет.

Баптаулардың басты бетінде төлем формасының жұмыс режимін таңдауға болады: төлемсіз демо-режим немесе төлемдерді қабылдау режимі.

<div data-with-frame="true"><figure><img src="/files/SgR9gmuUuy4GBvg9mNrT" alt=""><figcaption></figcaption></figure></div>

Хабарламаларға арналған мекенжайды төлем жүйесінің баптауларында екі жерде көрсету қажет: **«Форманы баптау»** қойындысында — бір реттік (әдеттегі) төлемдер үшін және **«Жазылымдар»** қойындысында — жазылым бойынша төлемдер үшін.

<div data-with-frame="true"><figure><img src="/files/6kXthWcQwEVrhTorclPm" alt=""><figcaption></figcaption></figure></div>

**Хабарламаларға арналған мекенжай:**\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Жазылым бойынша төлемдермен жұмысты баптау үшін **«Жазылымдар»** қойындысына өтіп, хабарламаларға арналған мекенжайды көрсетіңіз:

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

<div data-with-frame="true"><figure><img src="/files/8Hgwo6NAAjTgEpy3dDlL" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
**Назар аударыңыз!** URL мекенжайын енгізгеннен кейін міндетті түрде **«Сақтау»** түймесін басыңыз.
{% endhint %}

Prodamus-ты қосу үшін **«Эквайринг»** бөліміне өту қажет.

<div data-with-frame="true"><figure><img src="/files/LCfih8s8AF7Wqwp1JX6x" alt=""><figcaption></figcaption></figure></div>

Кейін жоғарыда айтылған деректерді формаға енгізу жеткілікті:

<div data-with-frame="true"><figure><img src="/files/kq5Qq18Ek40bbU7NOrXJ" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
**Маңызды!** Төлем формасының URL мекенжайын көрсеткенде **https\://** қоспаңыз.
{% endhint %}

Осылайша қосу аяқталды. Енді осы функционалды қалай пайдалану керегін қарастырайық.

## Төлемге сілтемені қалай жасауға болады

### «Төлеу» функциясы бар батырма

**Төлемге сілтемені «Төлеу» функциясы бар батырмада жасауға болады.**

{% hint style="info" %}
[Осындай батырманы қалай жасау керегі туралы осы мақалада баяндалған.](/chatbot/builder/buttons/payment-button.md)
{% endhint %}

Енді осы батырманың барлық мүмкін параметрлерін қарастырайық.

### Prodamus үшін «Төлеу» батырмасының міндетті параметрлері

**Төлемге сілтеме жасау үшін батырманың баптауларында міндетті параметрлерді көрсету қажет:**\
«Сома», «Тауардың атауы», сондай-ақ «Төленген контент» параметрі — егер сізде өзіңіздің онлайн-кассаңыз болмаса және Prodamus-тен чек алғыңыз келсе.

Тапсырыс беру бетіне өткенде тауар және оның бағасы туралы ақпарат алдын ала көрсетіледі, ал клиент тек өз байланыс деректерін енгізеді.

Егер батырманың баптауларында пайдаланушының Email және/немесе телефоны көрсетілсе, тапсырыс беру бетінде төлеушінің байланыс деректері және тауар мен оның бағасы туралы ақпарат көрсетіледі.

<div data-with-frame="true"><figure><img src="/files/RHHKPGQVRKG9YtB7rqOc" alt="" width="563"><figcaption><p>Окно настроек кнопки</p></figcaption></figure></div>

**«Мәтін» өрісі** – бұл мәтін төлемге сілтеме бар батырмада хабарламада көрсетіледі.

**«Функция» өрісі** – төлемге сілтеме беретін батырма жасау үшін «Төлеу» функциясын таңдаймыз.

**«Төлем жүйесі» өрісі** – жобамен қосылған төлем жүйелері тізімде көрсетіледі.\
Егер жобаға ешбір төлем жүйесі қосылмаған болса, бұл батырма түрі қолжетімсіз болады.

**«Тауардың атауы» өрісі (міндетті)** – тауардың нақты атауын көрсету қажет. Мысалы: «Телефон» емес, «Xiaomi смартфоны, модель …».\
Ескерту: тауар атауында қос тырнақшаларды қолдануға болмайды; оларды алып тастаңыз немесе бір тырнақшамен ауыстырыңыз.

**«Сома» өрісі (міндетті)** – тауардың бағасын көрсетеміз.

**«Қосымша ақпарат» мәзірі** – осы батырмаға басқан кезде сілтеме жасауға арналған қосымша өрістер ашылады:

* Тапсырыс сипаттамасы
* Рубльдегі жеңілдік
* Сатып алушының Email айнымалысы
* Сатып алушының телефон нөмірі айнымалысы
* Сілтеменің жарамдылық уақыты
* Жазылымға арналған тауар ID (автотөлем жасау үшін)
* Төленген контент

**«Басуға хабарландыру» чекбоксы** – төлемге сілтемеге өтуін бақылау үшін таңдап қоюға болады. Бұл жағдайда батырмаға басқан кезде Сейлботтағы клиент диалогына хабарлама келеді, сілтемеге өту жасалғаны туралы.

<div data-with-frame="true"><figure><img src="/files/lI1dYAi5daxu1KkLDMu3" alt="" width="431"><figcaption></figcaption></figure></div>

Осы хабарлама бойынша боттың әрі қарайғы жұмыс логикасын баптауға болады.\
Көптеген төлем жүйелері бұлттық онлайн-кассаларды қолдайды, олар 54-ФЗ талаптарына сәйкес қажет.

Таңдалған төлем жүйесінің сайтында чектерді рәсімдеудің ерекшеліктерін оқыңыз, салық инспекциясымен қиын жағдайға қалмау үшін.

Міне, «Төлеу» батырмасындағы сілтеме бойынша өткенде ашылатын төлем беті осылай көрінеді:

<div data-with-frame="true"><figure><img src="/files/yan6Cwj3eMYvNSpnrTut" alt="" width="375"><figcaption><p>Страница оплаты: в кнопке заполнены только основные параметры</p></figcaption></figure></div>

### Төлемге сілтеме жасау үшін қосымша баптаулар

<div data-with-frame="true"><figure><img src="/files/3UvXzZy3SbneGhn9mRGd" alt="" width="563"><figcaption></figcaption></figure></div>

**«Тапсырыс сипаттамасы» өрісі** – осы өріске енгізілген ақпарат төлем бетінде **Қосымша деректер** өрісінде көрсетіледі.

**«Жеңілдік» өрісі** – бұл жерде рубльмен немесе рубль мен тиынмен жеңілдіктің мөлшерін көрсетуге болады. Тиынмен көрсету үшін бөлгіш ретінде нүктені қолданыңыз: 50.99\
Төлем бетінде **Төленетін сома** өрісінде жеңілдік ескеріліп көрсетіледі, ал негізгі тауар бағасы сызықпен өткізіледі.

**«Сатып алушының Email айнымалысы» өрісі** (міндетті емес, егер телефон нөмірі берілсе) – бұл жерде пайдаланушының (клиенттің) Email көрсетіледі. Email сақталған айнымалыны да пайдалануға болады, мысалы: `#{email}`

**«Сатып алушының телефон нөмірі айнымалысы» өрісі** (міндетті емес, егер Email берілсе) – бұл жерде сатып алушының телефон нөмірі көрсетілген айнымалыны пайдалануға болады, формат: 79000000000, мысалы: `#{phone}`\
Міндетті түрде Email және/немесе телефон болуы керек.

**«Сілтеменің жарамдылық уақыты» өрісі** – күнді `дд.мм.гггг чч:мм` форматында көрсетуге болады (мысалы, 25.01.2021 11:00) немесе сілтеменің аяқталу мерзімін айнымалы арқылы орнатуға болады. Мысалы: `#{link_expired}`

**«Жазылымға арналған тауар ID» өрісі** – автотөлем жасау үшін тауар ID мәнін беріңіз. Жазылым жасау үшін жазылымдық тауар құру қажет.\
Толық нұсқаулық: [Prodamus жазылымдарын жасау және баптау](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)\
Егер жазылымға тауар ID берілсе, төлем сомасы есепке алынбайды. Тауар туралы мәлімет Prodamus кабинетіндегі тауар карточкасынан алынады.\
Төлемде көрсетілген телефон нөмірі жазылымды басқару үшін қажет болады.\
Егер жазылымға тауар ID берілсе, сәтті төлем болған кезде колбэкте осы тауардың ID беріледі.

**«Төленген контент» өрісі** (шартты міндетті) – бұл деректер Prodamus арқылы төлемді фискализациялау үшін қажет, егер өзіңіздің онлайн-кассаңыз болмаса. Бұл өріске сатып алу сипаттамасы, бағасы және контентке сілтеме көрсетіледі.\
Мысалы: Курс ‘Плетение кос’, бағасы 3000 рубль, курс бетіне сілтеме: `https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911`

### «Төлеу» функциясы бар батырма

Егер сіз сілтеменің жарамдылық уақытын көрсетсеңіз, келесі жағдай орын алады:\
Пайдаланушы төлем сілтемесін оның жарамдылық мерзімі ішінде (яғни сілтеменің уақыты әлі аяқталмаған кезде) сұраса және ол диалогта болса, төлем жасау мүмкін болмайды, және оған келесі хабарлама көрсетіледі:

<div data-with-frame="true"><figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcA1KJHoyMF5WmLMZiJPJrQEGJs79zxoXK5U3E9k4mVus-Fg0tI-djr6QTagp5ulwposSxmJ-aq8trUQOslQyE0UeaREuM6-T5Ongn-E5tACdVmypFXBtgOJDmVvHRgOdATChhnBQ?key=OB7qKicH0kn-_i_EzQLdRA" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Сілтеменің жарамдылық мерзімі ағымдағы күннен кейін болуы керек, әйтпесе клиент осы сілтемемен төлем жасай алмайды.
{% endhint %}

**2. Пайдаланушы сілтемені сұраған кезде, егер ол қазір белсенді болмаса**\
Бұл жағдайда батырма жай ғана көрінбейді. Клиенттің айнымалыларында `"error_payment_button"` айнымалысы пайда болады, оның мәні келесідей болады:\
\&#xNAN;**"Қате: Сілтеменің жарамдылық мерзімі ағымдағы күннен кейін болуы керек"**.

{% hint style="success" %}
Пайдаланушы төлемді дұрыс жасай алуы үшін, мұндай жағдайды қосымша өңдеу ұсынылады.
{% endhint %}

Мынадай шартты блок құрыңыз:\
Егер келесі хабарлама келсе:\
`error_payment_button == "Қате: Сілтеменің жарамдылық мерзімі ағымдағы күннен кейін болуы керек"`

Онда келесі мәтінді көрсетіңіз:\
\&#xNAN;**"Кешіріңіз, сіз уақытында төлем жасай алмадыңыз, төлем сілтемесі жарамсыз болды"**.

<div data-with-frame="true"><figure><img src="/files/Rxe9EiXkkqG4mevokYxT" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/T2q1H7khQUvqbz2Z6ZpX" alt=""><figcaption></figcaption></figure></div>

### «Төлеу» функциясы бар батырманы қолданғанда автоматты түрде жасалатын клиент айнымалылары

Пайдаланушы «Төлеу» батырмасы бар блокты алған сәтте, клиент үшін автоматты түрде айнымалылар жасалады:

**Қызметтік клиент айнымалысы `__payments`** – бұл айнымалы сома мен жасалған сілтеменің идентификаторын сақтайды және төлем жүйесінен келетін хукты анықтау үшін қажет.

{% hint style="danger" %}
Қызметтік клиент айнымалысы `__payments`-ты өшіруге немесе өзгертуге болмайды!
{% endhint %}

**`error_payment_button` клиент айнымалысы** батырма жасалған кезде қате пайда болса автоматты түрде құрылады.\
Бұл айнымалыға қате мәтіні немесе төлем жүйесінен келген қате жауабы жазылады.

{% hint style="warning" %}
Айнымалылардың мәндері келесі блокқа өткен кезде өзекті болады.
{% endhint %}

## Нәтижені қалай өңдеу керек

**Сәтті төлем**\
Сәтті төлем жасалғаннан кейін ботқа **АВТОМАТТЫ түрде КОЛБЭК** келеді, ол төлем жүйесінің құпия кілтінің алғашқы 10 символынан, `_success` сөзінен және төлем сомасынан тұрады.\
Схеманы баптауда қолдану үшін оны жай ғана көшіру жеткілікті.

Мысалы: `ovg58keefc_success 44`, мұндағы:

* `ovg58keefc` – төлем жүйесінің құпия кілтінің алғашқы 10 символы
* `_success` – сұраныстың өңделу нәтижесі (сәтті төлем)
* `44` – төлем сомасы

{% hint style="info" %}
Пайдаланушы төлем жүйесінен келген **колбэктерді (хабарламаларды) КӨРМЕЙДІ**. Олар тек **«Клиенттер»** қойындысында көрсетіледі және операторға көрінеді.
{% endhint %}

**Қолдану мысалы:**\
**1-қадам.** «Төлеу батырмасы бар» блокқа «Төлеу» функциясы бар батырмаларды қосамыз.\
**2-қадам.** Осы блоктан «Сәтті төлем» блогына өтетін **Байланыс шарты** өрісінде колбэкті көрсетеміз.\
Сол сияқты, егер «Бастапқы шарт» блогының шартына сәтті төлем колбэгін көрсетсе, жұмыс аналогты түрде жүзеге асады.

{% hint style="warning" %}
**Маңызды:** «Толық сәйкестік» немесе «Негізгі сөздердің болуы бойынша» таңдауын жасау.
{% endhint %}

❗️Егер төлемді дәл шарт бойынша көрсетілген стрелкада тексеруді шешсеңіз, схемаңыздың логикасын мұқият ойластырыңыз. Егер клиент колбэкпен шарт бойынша өтетін блокты қалдырса, блокқа өту болмайды. Мұндай тексеру әдісін тек клиент воронкадағы орнын өзгертпеген жағдайда қолданған дұрыс.

Клиент блоктар арасында қозғалады деген схемаларда колбэкті **«Бастапқы шарт»** блогында көрсету нұсқасын пайдалану тиімдірек.<br>

<div data-with-frame="true"><figure><img src="/files/knbc959aNntBtqAKHYny" alt=""><figcaption><p>Коллбэк об успешной оплате в поле Условие блока.</p></figcaption></figure></div>

### Автожазылымы бар тауарлар үшін сәтті төлем

Сәтті төлем жасалғаннан кейін ботқа **АВТОМАТТЫ түрде КОЛБЭК** келеді, ол төлем жүйесінің құпия кілтінің алғашқы 10 символынан, `_success` сөзінен және жазылым тауардың ID-сынан тұрады.

Мысалы: `214009eefc_success 618117`, мұндағы:

* `009eefc` – төлем жүйесінің құпия кілтінің алғашқы 10 символы
* `_success` – сұраныстың өңделу нәтижесі (сәтті төлем)
* `618117` – жазылым тауардың ID-сі

<div data-with-frame="true"><figure><img src="/files/q1rLe1EO1DKZfJmwZwOu" alt=""><figcaption><p>Пример коллбэка от Продамус для товаров с автоподпиской</p></figcaption></figure></div>

**Қате төлем**\
Төлемді жүзеге асыруда қате болған жағдайда ботқа **АВТОМАТТЫ түрде КОЛБЭК** келеді, ол төлем жүйесінің құпия кілтінің алғашқы 10 символынан, `_fail` сөзінен және төлем сомасынан тұрады.

Мысалы: `ovg58keefc_fail 44`, мұндағы:

* `ovg58keefc` – төлем жүйесінің құпия кілтінің алғашқы 10 символы
* `_fail` – сұраныстың өңделу нәтижесі (төлем орындалмады немесе қате болды)
* `44` – төлем сомасы

{% hint style="warning" %}
Бұл төлем жүйесіне байланысты. Барлық төлем жүйелері төлем қателігі туралы колбэк жібермейді.
{% endhint %}

Егер батырманың баптауларында көрсетілген сома клиент төлеген сомадан айырмашылық көрсетсе, ботқа **АВТОМАТТЫ түрде КОЛБЭК** келеді. Ол төлем жүйесінің құпия кілтінің алғашқы 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`.&#x20;

{% hint style="info" %}
Айнымалының атын өзіңіз таңдайсыз. Скриншоттарда айнымалылардың атын беру мысалдары көрсетілген.
{% endhint %}

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

**Төлемге сілтеме мысалы:** [https://payform.kz/7p3JR8/](https://payform.ru/7p3JR8/)

{% tabs %}
{% tab title="Калькулятор" %}
Мысал 1:

<figure><img src="/files/VFlQApw7PRl5H0D53LpT" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Параметрлердің сипаттамасы" %}
&#x20;`your_variable =`` `**`get_prodamus_payment_url(amount, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)`**

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

<table><thead><tr><th width="253">Параметр</th><th>Параметр мәні</th></tr></thead><tbody><tr><td><strong><code>amount</code></strong></td><td><strong>Төлем сомасы</strong> – бүтін сан немесе нүктемен бөлінген сан ретінде берілуі мүмкін. Мысалы: <code>25</code> немесе <code>52.5</code>. (міндетті параметр)</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Тауар атауы</strong> (міндетті параметр)</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Төлем сілтемесінің жарамдылық уақыты</strong> – <code>дд.мм.гггг</code> форматында (мысалы, 25.01.2021).<br>Сонымен қатар, <strong>Калькулятор</strong> өрісінде былай көрсетуге болады:<br><code>expired = current_date + 2</code> (сілтеме 2 күн бойы 00:00-ге дейін жарамды болады).</p><p>Нақты уақытты көрсету де мүмкін: <code>дд.мм.гггг чч:мм</code> (мысалы, 25.01.2021 12:23).</p><p>Стандартты айнымалыларды да қолдануға болады, мысалы, сілтеменің жарамдылығын 30 минутқа орнату:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Егер бұл параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша, қос тырнақша немесе <code>None</code> мәнін беруге болады.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><strong>Сатып алушының телефон нөмірі</strong> – міндетті емес, егер <code>customer_email</code> параметрі берілсе.<br>Осы параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td><strong>Сатып алушының Email мекенжайы</strong> – міндетті емес, егер <code>customer_phone</code> параметрі берілсе.<br>Осы параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.</td></tr><tr><td><strong><code>discount</code></strong></td><td><strong>Жеңілдік мөлшері</strong> – параметрді бүтін сан немесе нүктесі бар сан ретінде беруге болады: <code>25</code> немесе <code>63.5</code>.<br>Бұл параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.</td></tr><tr><td><strong><code>description</code></strong></td><td><strong>Тауар сипаттамасы</strong> (егер көрсетілмесе, автоматты түрде <code>'Оплата счета order_id'</code> толтырылады).<br>Осы параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Қосымша параметрлер</strong>, осы функцияда жоқ параметрлер.<br>Қолжетімді қосымша параметрлерді төлем жүйесінің API-мен жұмыс істеу құжаттамасынан қарауға болады: <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Prodamus REST API</a></p><p>Мысалы:</p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}
</code></pre><p>Бұл параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша/қос тырнақша немесе <code>None</code> мәнін беруге болады.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>50-тен 4000 символға дейінгі жол</strong> форматында <code>"тапсырыс сипаттамасы - баға - сатып алынатын ресурсқа сілтеме"</code>.<br>Мысалы:<br><code>“Курс ‘Лещ аулау’, бағасы 4999 рубль, курс бетіне сілтеме: https://www.lovilescha.ru/courses/poimai_kilogram/"</code></p><p>Бұл параметр міндетті, егер сізде өзіңіздің онлайн кассаңыз болмаса, Prodamus арқылы төлемді фискализациялау үшін қажет.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Мысал" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "Курс ‘Лещ аулау’, бағасы 4999 теңге, курс бетіне сілтеме: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_url = get\_prodamus\_payment\_url( 4999, 'Курс ‘Лещ аулау’', '27.03.2023 17:00', '79167777771', '<mail@mail.com>', 20, 'Нарықтағы ең үздік курс', extra\_params, products\_for\_receipt

Бұл мысалда:

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

{% hint style="warning" %}
Егер блокта бірнеше сілтеме алу функциялары болса және қате жіберілсе, қате мәні **`error_payment_func`** айнымалысына жазылады.

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

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

{% hint style="info" %}
**Назар аударыңыз:** `payment_sum` айнымалысына мән соңғы айнымалыдан беріледі, яғни міндетті емес айнымалылардан кейін: `payment_description`, `product_name` және т.б.
{% endhint %}

Төлемге сілтеме жасау үшін **Калькулятор өрісінде `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**          | <p><strong>Төлем сілтемесінің жарамдылық уақыты</strong> – <code>дд.мм.гггг</code> форматында (мысалы, 25.01.2021).<br>Сонымен қатар, <strong>Калькулятор</strong> өрісінде былай көрсетуге болады:<br><code>link\_expired = current\_date + 2</code> (сілтеме 2 күн бойы 00:00-ге дейін жарамды болады).</p>                                                                                                                |
| **link\_expired**          | <p>Сонымен қатар, нақты уақытты көрсетуге болады, формат: <code>дд.мм.гггг чч:мм</code> (мысалы, <code>25.01.2021 12:23</code>).<br>Стандартты айнымалыларды да пайдалануға болады, мысалы, сілтеменің жарамдылық уақытын 30 минутқа орнату:<br>time = current\_time + 30 link\_expired = "#{current\_date} #{time}"</p>                                                                                                     |
| **currency**               | <p><strong>Төлем валютасы</strong>, әдепкі бойынша <code>"rub"</code>.<br>Толық аргументтер тізімі:</p><ul><li><code>rub</code></li><li><code>usd</code></li><li><code>eur</code></li><li><code>kzt</code></li></ul><p>Бұл параметр кіші әріптермен берілуі керек.</p>                                                                                                                                                       |
| **payment\_title**         | <p><strong>Төлем тақырыбы</strong> (127 символға дейін). Егер көрсетілмесе, автоматты түрде келесі мәтінмен толтырылады:<br>“<strong>Шотты төлеу payment\_id</strong>” (<code>payment\_id</code> – MaviBot-тағы тапсырыс идентификаторы).</p>                                                                                                                                                                                |
| **payment\_description**   | **Төлемнің қысқаша сипаттамасы** (127 символға дейін)                                                                                                                                                                                                                                                                                                                                                                        |
| **locale**                 | <p><strong>Төлем бетінің тілі</strong> – <code>en-US</code>, <code>fr-XC</code> және т.б. форматта көрсетіледі. Әдепкі мән – <code>ru-RU</code>.<br>Толық тізімді мына сілтемеден қарауға болады</p>                                                                                                                                                                                                                         |
| **products\_for\_receipt** | <p><strong>50-тен 4000 символға дейінгі жол</strong> форматында <code>"тапсырыс сипаттамасы - баға - сатып алынатын ресурсқа сілтеме"</code>.<br>Мысалы:<br><code>“Курс ‘Лещ аулау’, бағасы 4999 теңге, курс бетіне сілтеме: <https://www.lovilescha.ru/courses/poimai_kilogram/>"</code></p><p>Бұл міндетті параметр, егер сізде өзіңіздің онлайн кассаңыз болмаса, Prodamus арқылы төлемді фискализациялау үшін қажет.</p> |
| **payment\_sum**           | (міндетті) төлем сомасы                                                                                                                                                                                                                                                                                                                                                                                                      |

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/3FazAmQkph5i0_iKy4G_HNerzVQP9Bg3_PRB_5rHZQ6vAZB_1Hxv1imi3gJCl7pU_GY7eAiiwZExJA-i4Ps5PgSJt7OXKbSL-GT27gWca_u7rFM8YEsNJ7Z-VVXTAR-jSw_-p2I0" alt="" width="563"></div>

{% hint style="success" %}
`discount_value`, `customer_phone`, `customer_email` және `link_expired` айнымалылары жазылымдар үшін де өзекті болып табылады.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/6KRkgbSxHAKUFSRGMeLn" alt="" width="524"><figcaption></figcaption></figure></div>

**Жүзеге асыру мысалы.**\
Бірінші блокта төлем сомасын орнатамыз:

<div data-with-frame="true"><figure><img src="/files/ktAYZEg2wBkBxxyaNzeM" alt=""><figcaption></figcaption></figure></div>

Келесі қадамда қажет жерде **`prodamus_pay_url`** сілтемесін шығарамыз:

<div data-with-frame="true"><figure><img src="/files/ljcZlIjQWjTEvbCYDzXo" alt=""><figcaption></figcaption></figure></div>

**`prodamus_available_payment_methods`** айнымалысы **`payment_sum`** жарияламас бұрын анықталады.\
Мүмкін мәндері:

<table><thead><tr><th width="323"></th><th></th></tr></thead><tbody><tr><td><strong>AC</strong></td><td>РФ-де шығарылған карта арқылы төлем</td></tr><tr><td><strong>ACkz</strong> </td><td>Қазақстан картасы арқылы төлем</td></tr><tr><td><strong>ACf</strong></td><td>ТМД елдерінің карталары арқылы төлем, РФ қоспағанда</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Барлық елдердің EUR картасы арқылы төлем, Ресей мен Беларусь қоспағанда</td></tr><tr><td><strong>SBP</strong></td><td>Жылдам төлем, карта деректерін енгізбей. Ресей карталары үшін</td></tr><tr><td><strong>QW</strong> </td><td>Qiwi wallet </td></tr><tr><td><strong>PC</strong></td><td>Юmoney</td></tr><tr><td><strong>GP</strong></td><td>Төлем терминалы</td></tr><tr><td><strong>sbol</strong></td><td>Сбербанк онлайн </td></tr><tr><td><strong>invoice</strong> </td><td>Шот бойынша төлем</td></tr><tr><td><strong>installment</strong> </td><td>Prodamus арқылы бөліп төлеу</td></tr><tr><td><strong>installment_5_21</strong></td><td>Prodamus арқылы 3 айға бөліп төлеу</td></tr><tr><td><strong>installment_6_28</strong></td><td>Prodamus арқылы 6 айға бөліп төлеу</td></tr><tr><td><strong>installment_10_28</strong></td><td>Prodamus арқылы 10 айға бөліп төлеу</td></tr><tr><td><strong>installment_12_28</strong> </td><td>Prodamus арқылы 12 айға бөліп төлеу</td></tr><tr><td><strong>installment_0_0_3</strong></td><td>Tinkoff арқылы 3 айға бөліп төлеу</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>Tinkoff арқылы 4 айға бөліп төлеу</td></tr><tr><td><strong>installment_0_0_6</strong></td><td>Tinkoff арқылы 6 айға бөліп төлеу</td></tr><tr><td><strong>installment_0_0_10</strong></td><td>Tinkoff арқылы 10 айға бөліп төлеу</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>Tinkoff арқылы 12 айға бөліп төлеу</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>Tinkoff арқылы 24 айға бөліп төлеу</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>Tinkoff арқылы 36 айға бөліп төлеу</td></tr><tr><td><strong>credit</strong> </td><td>Tinkoff арқылы несие</td></tr><tr><td><strong>vsegdada_installment_0_0_4</strong></td><td><strong>“ВсегдаДа” арқылы 4 айға бөліп төлеу</strong> (available_payment_methods-пен жұмыс істемейді)</td></tr><tr><td>vs<strong>egdada_installment_0_0_6</strong></td><td><strong>“ВсегдаДа” арқылы 6 айға бөліп төлеу</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td><strong>“ВсегдаДа” арқылы 10 айға бөліп төлеу</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td><strong>“ВсегдаДа” арқылы 12 айға бөліп төлеу</strong> </td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td><strong>“ВсегдаДа” арқылы 24 айға бөліп төлеу</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td><strong>“ВсегдаДа” арқылы 36 айға бөліп төлеу</strong> </td></tr><tr><td><strong>sbrf_installment_0_0_6</strong></td><td>Сбербанк арқылы 6 айға бөліп төлеу</td></tr><tr><td><strong>sbrf_installment_0_0_10</strong></td><td>Сбербанк арқылы 10 айға бөліп төлеу</td></tr><tr><td><strong>sbrf_installment_0_0_12</strong></td><td>Сбербанк арқылы 12 айға бөліп төлеу</td></tr><tr><td><strong>sbrf_installment_0_0_24</strong></td><td>Сбербанк арқылы 24 айға бөліп төлеу</td></tr><tr><td><strong>sbrf_installment_0_0_36</strong> </td><td>Сбербанк арқылы 36 айға бөліп төлеу</td></tr><tr><td><strong>otp_installment_0_0_6</strong></td><td>«OTP Банкі» арқылы 6 айға бөліп төлеу</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>«OTP Банкі» арқылы 10 айға бөліп төлеу</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>«OTP Банкі» арқылы 12 айға бөліп төлеу</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>«OTP Банкі» арқылы 24 айға бөліп төлеу</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>«OTP Банкі» арқылы 36 айға бөліп төлеу</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>«МТС Банкі» арқылы 6 айға бөліп төлеу</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>«МТС Банкі» арқылы 10 айға бөліп төлеу</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>«МТС Банкі» арқылы 12 айға бөліп төлеу</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>«МТС Банкі» арқылы 24 айға бөліп төлеу</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>«МТС Банкі» арқылы 36 айға бөліп төлеу</td></tr><tr><td><strong>monetaworld</strong></td><td>Әлемдік банктердің карталары, Ресей қоспағанда</td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Сбер арқылы бөліп төлеу</td></tr></tbody></table>

Бірнеше мәнді **тік сызық арқылы** бөліп беру рұқсат етілген.\
Мысалы:

```python
prodamus_available_payment_methods = "AC|PC|QW"
```

`prodamus_currency` – бұл тағы бір қосымша параметр, ол соманы белгілі бір валютада көрсетуге мүмкіндік береді.

Мүмкін валюталар:

* `kzt` – теңге үшін
* `eur` – евро үшін
* `usd` – доллар үшін

Осылайша, сілтемеде көрсетілген сома таңдалған валютада болады.

**Колбэк `payment_callback` алған кезде** `currency` және `currency_sum` параметрлеріне назар аудару қажет, оларда валюта мен сомасы көрсетіледі.

{% hint style="warning" %}
Егер көрсетілмесе, төлем әдістері жоқ бетке өтеді.\
Төлем әдістерін қолдау арқылы қосуға болады. Қосылған әдістерді бет баптауларынан немесе төлемге сілтеме жасап көруге болады.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/iTrd0JqFy7TYEbb9ArsK" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/kGKWCM2v4jflhoodrgYV" alt="" width="563"><figcaption></figcaption></figure></div>

### Нәтижені қалай өңдеу керек

**Сәтті төлем**

**Маңызды:** сәтті немесе сәтсіз төлемнен кейін ботқа коллбэктер (callback) келеді, олардың көмегімен төлемнің сәтті жасалғанын анықтай аласыз.

Коллбэктер жүйеде пайдаланушыдан келген хабарламалар сияқты көрінеді, бірақ оларды пайдаланушы жібере алмайды. Олар құпия кілт пен статустың тіркесі түрінде болады. Мысалы:

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success
```

немесе

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail
```

Сәтті төлемнен кейін **prodamus\_payment\_completed** айнымалысы автоматты түрде `True` мәнін қабылдайды.

**Ескерту:** Коллбэктер сәл кешігіп келеді, сондықтан пайдаланушыға сілтемені жібергеннен кейін хабарлама жіберген дұрыс:

> “Төлем жасағаннан кейін төлемнің сәтті аяқталғанын күтіңіз.”

***

**Коллбэк құрылымы**

Оплата батырмасы арқылы немесе Калькулятордағы функция арқылы құрылған сілтемелер үшін төлемнен кейін ботқа автоматты түрде коллбэк келеді. Ол құрамы:

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

Мысалы:

```
ovg58keefc_success
```

* `ovg58keefc` – төлем жүйесінің толық құпия кілті
* `_success` – сұраныстың өңделу нәтижесі (сәтті төлем)

***

**Практикалық қолдану**

Сәтті төлемді шартты блок арқылы өңдеп, пайдаланушыға сәйкес хабарлама көрсетуге болады.

<div data-with-frame="true"><figure><img src="/files/PEgPlbo8ZhmFuIJeklMh" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="danger" %}
Тип сравнения должен быть "Full match" / "Полное совпадение"

Қайта төлем жасау үшін міндетті түрде **payment\_sum** айнымалысын нөлге теңестіріп, бұрын құрылған сілтемені өшіру керек. Содан кейін ғана **payment\_sum** айнымалысына жаңа мән беріп, жаңартылған сілтемені алуға болады.
{% endhint %}

#### Жазылымды деактивациялау/реактивациялау

Сонымен қатар, Prodamus жүйесінде жазылымның белсендірілгені немесе тоқтатылғаны туралы хабарламалар бар:

<div data-with-frame="true"><figure><img src="/files/SkxTDgTQfKlbF7w550IH" alt=""><figcaption></figcaption></figure></div>

**«Жазылымды пайдаланушы өшірді»** – егер жазылым қолмен тоқтатылса (мысалы, жазылымнан бас тартқан жағдайда).\
Бұл хабарлама ағымдағы төленген кезең аяқталмай тұрып келуі мүмкін. Іс-әрекет сіздің шешіміңізге байланысты: елемеу, бақылауға алу немесе пайдаланушыны қайтаруға әрекет жасау.

**«Жазылымды пайдаланушы қайта белсендірді»** – жазылым қалпына келтірілген.\
Бұл хабарлама ағымдағы төленген кезең аяқталмай тұрып пайдаланушы жазылымды қалпына келтірсе келуі мүмкін. Іс-әрекет сіздің шешіміңізге байланысты: елемеу немесе мониторинг тізімінен шығару.

**«Жазылымды деактивациялау»** – бірнеше сәтсіз төлемнен кейін жазылым тоқтатылған жағдайда.

### Коллбэктен мәндерді сақтау

Сәтті төлем туралы хабарлама келгеннен кейін **payment\_callback** айнымалысына Prodamus-тен коллбэк жазылады, оның ішінде барлық төлем деректері болады. Осы деректерді сақтап, өзіңізге қажетті түрде пайдалануға болады.

Коллбэк мысалы:

```json
{
  "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** айнымалыларын көрсетуге болады. Сол кезде коллбэк келгенде оларды былай алуға болады:

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

<div data-with-frame="true"><figure><img src="/files/fvsaSBo7lCzgw2C08J45" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Назар аударыңыз: **payment\_sum** айнымалысына соңғы мән беріледі, ол **міндетті емес айнымалылардан** кейін орналасады: **payment\_description**, **product\_name**.
{% endhint %}

Соманы былай алуға болады:

```python
summa = get(payment_callback, 'sum')
```

### **Қол жетімді коллбэктер**

Негізгі сәтті төлем коллбэклерінен бөлек, чатта пайдаланушы көрмейтін хабарламалар келесідей болады:

<details>

<summary>коллбэктер</summary>

* Подписчик деактивировал подписку ([подробнее тут](#deaktivaciya-reaktivaciya-podpiski))
* Подписчик реактивировал подписку ([подробнее тут](#deaktivaciya-reaktivaciya-podpiski))
* Подписка завершена
* Не успешная оплата - приписка с пояснением (на скриншоте выше)
* Уведомление о предстоящем списании - дата и время предстоящего списания
* Заявка на рассрочку со статусом

</details>

<details>

<summary><strong>Клиентпен диалогтағы коллбэк мысалдары</strong></summary>

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

</details>

Қалауыңыз бойынша, пайдаланушыға кез келген хабарламаны жіберуді баптауға болады. Мысалы, автоматты төлем сәтсіз болған жағдайда хабарлама жіберу.

Сәтсіз төлемге нақты себеп бойынша хабарламаға жауап блоктарын келесідей баптауға болады:

<div data-with-frame="true"><figure><img src="/files/tSLR78tdJ4BCwq8SmMDl" alt=""><figcaption></figcaption></figure></div>

Барлық сәтсіз төлемдерге, себепіне қарамастан, хабарлама жіберу үшін келесідей баптауға болады:

<div data-with-frame="true"><figure><img src="/files/HC3xyquKBRIapM1UndZD" alt=""><figcaption></figcaption></figure></div>

Барлық коллбэктерде, егер мәтінде **«Төлем сәтсіз»** деген сөз болса, пайдаланушыға сіз белгілеген мәтінмен хабарлама жіберіледі.

## **Жазылым бойынша төлем қалай жасауға болады**

### **Жазылым қалай құруға болады**

Жазылым жасау үшін, алдымен **жазылымдық тауар** құру қажет.\
Толық нұсқаулық: [Қалай жазылым құру және баптау](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)

Содан кейін жазылымдық тауардың **ID-сін** көшіріп аламыз. Мысалы, төменде қайдан алу керектігі көрсетілген:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Создание подписного товара"></div>

Жазылым төлемінің сілтемесін жасау үшін, **prodamus\_subscription** айнымалысына жазылымдық тауардың **ID-сін** орнату қажет. Осыдан кейін автоматты түрде **prodamus\_pay\_url** айнымалысы пайда болады.

<div data-with-frame="true"><figure><img src="/files/RwgMec0XoOfLKadlPTSs" alt="" width="563"><figcaption></figcaption></figure></div>

Қазақ тіліне аударма (деловой стиль):

`prodamus_pay_url` айнымалысын экранға сілтеме ретінде шығарып көрсетуге немесе «Төлеу» мәтіні бар батырмаға орналастыруға болады. Сілтеме мысалы: <https://payform.kz/7p3JR8/>

Нәтижені өңдеу біржолғы төлемдегідей жүзеге асады (жоғарыда оқығандай).

Сәтті жазылымнан кейін пайдаланушыға төлем кезінде енгізілген **customer\_phone** айнымалысы қосылады. Телефон нөмірі жазылымды басқару үшін қажет.

Егер **customer\_email** берілмесе, жазылымды басқару үшін **customer\_phone** міндетті.

### **`get_prodamus_subscription_url` функциясымен жазылымға сілтеме қалай жасауға болады**

Тауарға жазылым төлемінің сілтемесін құрудың басқа әдісін қарастырайық.

1. Продамус кабинетінен жазылымдық тауар құрылады.\
   Толық нұсқаулықты мына сілтемеден қарауға болады:\
   [Қалай жазылым құру және баптау](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)
2. Содан кейін жазылымдық тауардың **ID-сін** көшіріп аламыз. Мысалы, төменде қайдан алу керектігі көрсетілген:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Создание подписного товара"></div>

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

`get_prodamus_subscription_url`(subscription\_id, product\_name, expired, customer\_phone, customer\_email, discount, description, extra\_params, products\_for\_receipt)

{% tabs %}
{% tab title="Калькулятор" %}
**Мысал 1:** Жазылым бойынша тауарға төлем сілтемесі

<figure><img src="/files/nAtXo3GSTdTa0ycNdTtS" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Параметр сипаттамасы" %}
`link = get_prodamus_subscription_url`(subscription\_id, product\_name, expired, customer\_phone, customer\_email, discount, description, extra\_params, products\_for\_receipt)

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

<table><thead><tr><th width="253">Параметр</th><th>Параметр мәні</th></tr></thead><tbody><tr><td><strong><code>subscription_id</code></strong></td><td><strong>Жазылым өнімінің ID-сі</strong> – Продамus кабинетінен көшіріп алуға болады (міндетті параметр).</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Өнімнің атауы</strong> (міндетті параметр).</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Төлем сілтемесінің жарамдылық уақыты</strong> – дд.мм.гггг форматында (мысалы, 25.01.2021).</p><p>Сондай-ақ, «Калькулятор» өрісінде көрсетуге болады:</p><pre class="language-python"><code class="lang-python">expired = current_date + 2  # сілтеме 2 күнге жарамды болады, сағат 00:00-ге дейін
</code></pre><p><code>expired</code> параметрін нақты уақытпен көрсетуге де болады, формат: дд.мм.гггг чч:мм (мысалы, 25.01.2021 12:23).</p><p>Стандартты айнымалыларды қолдануға да болады, мысалы, сілтеменің жарамдылық уақытын 30 минутқа орнату:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Бұл параметрді өткізіп жібергіңіз келсе, орнына бір немесе қос тырнақша, немесе <code>None</code> мәнін беруге болады.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><p><strong>Төлем жасаушының телефон нөмірі</strong> – міндетті емес, егер <code>customer_email</code> параметрі берілсе.</p><p>Осы параметрді өткізіп жібергіңіз келсе, орнына бір немесе қос тырнақша беріңіз.</p></td></tr><tr><td><strong><code>customer_email</code></strong></td><td><p><strong>Төлем жасаушының email-і</strong> – міндетті емес, егер <code>customer_phone</code> параметрі берілсе.</p><p>Осы параметрді өткізіп жібергіңіз келсе, орнына бір немесе қос тырнақша беріңіз.</p></td></tr><tr><td><strong><code>discount</code></strong></td><td><p><strong>Жеңілдік мөлшері</strong> – параметрді бүтін сан немесе ондық сан ретінде беруге болады: 25 немесе 63.5.</p><p>Осы параметрді өткізіп жібергіңіз келсе, орнына бір немесе қос тырнақша беріңіз.</p></td></tr><tr><td><strong><code>description</code></strong></td><td><p><strong>Өнімнің сипаттамасы</strong> – көрсетілмесе, әдепкі бойынша <code>'Оплата счета order_id'</code> толтырылады.</p><p>Осы параметрді өткізіп жібергіңіз келсе, орнына бір немесе қос тырнақша беріңіз.</p></td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Қосымша параметрлер</strong>, бұл функцияда жоқ параметрлер.<br>Мүмкін болатын қосымша параметрлерді төлем жүйесінің API құжаттамасынан қарауға болады:<br><a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Prodamus REST API нұсқаулық</a></p><p><strong>Мысал:</strong></p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3"}
</code></pre><p>Осы параметрді өткізіп жібергіңіз келсе, орнына бір/қос тырнақша немесе <code>None</code> мәнін беруге болады.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>50–4000 символдан тұратын жол</strong>, форматы: <code>"тапсырыс сипаттамасы - баға - сатып алынатын ресурсқа сілтеме"</code></p><p>Мысал:<br>Курс «Лещ аулау курсы», бағасы 4999 тенге, курс бетіне сілтеме: <a href="https://www.lovilescha.ru/courses/poimai_kilogram/">https://www.lovilescha.ru/courses/poimai_kilogram/</a>.</p><p>Бұл параметр <strong>міндетті</strong>, егер өзіңіздің онлайн кассаңыз жоқ болса, төлемдерді Prodamus арқылы фискализациялау үшін қажет.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Көшіруге арналған код мысалы" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "Курс ‘Лещ аулау курсы’, ай сайынғы жазылым бағасы 2000 тенге, курс бетіне сілтеме: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_sub = get\_prodamus\_subscription\_url(618988, 'Курс ‘Лещ аулау курсы’', '27.03.2023 17:02', '79167777771', '<mail@mail.com>', 20, 'Нарықтағы ең үздік курс', extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Егер блокта бірнеше функция арқылы сілтеме алу кезінде қате болса, **қате мәні `error_payment_func` айнымалысына** жазылады.

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

### **Жазылым статусын қалай басқаруға болады**

Бұл әдіс тек нақты жазылымдарға арналған, демо режимінде карта байланысы жоқ.

Жазылымды басқару үшін міндетті түрде **`customer_phone`** немесе **`customer_email`** параметрінің бірі берілуі тиіс.

Пайдаланушыны жазылымнан шығару үшін блок жасау және келесі функцияны шақыру қажет:\
[delete\_subscription\_prodamus](https://store.salebot.pro/function/delete_subscription_prodamus)

**Параметрлер мысалы:**

```json
{
  "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`** орнына беріліп, жазылымды тоқтатуға болады.

**Мысал:** жазылым блоктарын баптау

<div data-with-frame="true"><figure><img src="/files/WuyJs6eM8A2U9l0nYFjc" alt=""><figcaption></figcaption></figure></div>

Ескеріңіз, функция **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-сі

<div data-with-frame="true"><figure><img src="/files/j19bLSnlp00E7OT0VOL5" alt=""><figcaption><p>Пример использования функции prodamus_subscription_switch_status</p></figcaption></figure></div>

Қазақ тіліне аударма (деловой стиль):

**Мысал 1:** `customer_phone` параметрі берілген, `customer_email` өткізіліп кеткен:

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

**Мысал 2:** `customer_email` параметрі берілген, `customer_phone` өткізіліп кеткен:

```python
stat = prodamus_subscription_switch_status('618117', '0', '', 'examp@mail.com')
```

{% hint style="success" %}
Функция барлық операция сәтті аяқталса **`ok`** қайтарады немесе қате болған жағдайда оның сипаттамасын қайтарады.
{% endhint %}

## Жазылымдағы жеңілдіктерді басқару

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

```python
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'` қайтарады; қате орын алса, функция қате сипаттамасын қайтарады.

{% hint style="warning" %}
**Жеңілдік мөлшері мен интервал тек функцияны жаңа мәндермен қайта шақырған жағдайда ғана қайта жазылады!**
{% endhint %}

**Мысалдар:**

**1. Барлық келесі автотөлемдерге 1₽ жеңілдік беру** (телефон нөмірі көрсетілмейді, себебі ол автоматты түрде `customer_phone` айнымалысынан алынады; жеңілдік сомасы әдепкі бойынша жазылымның барлық мерзіміне қолданылады):

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

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/_4i_sKKn39tHVdnb47xgj8fxfP_x9UGMWLaierBnpup9LCZMdVT0G9AmIOa8S_uMrVXWQIH6rvZnujCYPGcphkYvwFbCXEh819tWIjGIM4mHvd3afSlPzhZfcWk6D1z1tyBwFrZV" alt="" width="563"></div>

**2. Келесі 3 төлемге 2₽ жеңілдік беру мысалы** (телефон нөмірі бос тырнақшамен берілген, себебі ол автоматты түрде `customer_phone` айнымалысынан алынады):

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

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/IgutVRIqTFbaof9A14qdQRLCB6oop4mSAIew5s3lz62Kb4YVHdHJEt6GuC7AACStDgRiR1d_XEG1k5Dj7c2M-VNtci16JbklMTEla8_RNWD7wBNeG649g0lnFiMZilhri3phwKr-" alt="" width="563"></div>

**3. Жеңілдікті ондық бөлшекпен көрсету мысалы** (бөлгіш – нүкте, мәндер дәйексөзсіз көрсетіледі), телефон нөмірін айнымалы арқылы беруге болады.

<div data-with-frame="true"><figure><img src="/files/A5xLebtdzkzSBMwbYT4g" alt="" width="563"><figcaption></figcaption></figure></div>

r = prodamus\_subscription\_discount(#{prodamus\_subscription}, 10.25, #{customer\_phone}, 3)

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/xJVbZ3Q5f6LzCsYtuX-JqaKYPc69lS6Wi4yA0ui2vBxmFkXXGIHSqgO2VoK0rzDPdNG-HxVpAnpRcmbZXQ_oSrtT7ijJcQA6ZOwjXLbKP8WsCFBip-4DwRnVHpz-fIPRt_Wldo0h" alt="" width="563"></div>

## **Жазылым бойынша келесі төлемнің датасын қалай орнату керек**

Бұл әдіс арқылы жазылым бойынша келесі төлемнің датасын жылжытуға болады. Датаны тек қазіргі орнатылған келесі төлем датасынан **«болашаққа»** жылжытуға болады, осылайша клубтағы қатысу мерзімін ұлғайтуға болады.

Мысалы, бұл жазылушыларға бонус ретінде қолданылуы мүмкін.

Ол үшін келесі функцияны пайдалану қажет:

```python
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_`** префиксін қосыңыз.

Содан кейін төлем сілтемесін жасаған кезде, осы айнымалыдағы параметрлер автоматты түрде төлем жүйесіне жіберіледі.

## Төлемді қалай тестілеуге болады

{% hint style="info" %}
Тек төлемді тестілейміз!
{% endhint %}

Интеграцияны және төлем воронкаларын баптау кезінде сіздің шотыңыздан ақша алынбауы үшін **тесттік карталарды пайдалануға болады**.

{% hint style="warning" %}
Алдымен төлем бетіңізді **ДЕМО режиміне** ауыстырыңыз ⤵\
«Сақтау» батырмасын басуды ұмытпаңыз.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/Q2RAstVcdYRad1Pq71cv" alt=""><figcaption></figcaption></figure></div>

#### Тесттік төлем жасау үшін тесттік шоттарды пайдалануға болады.

**Сбербанктің тесттік карталары:**

**МИР**\
Карта нөмірі: 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

{% hint style="success" %}
❗️Тесттік шоттар арқылы төлем жасағанда, барлық бапталған воронкалар мен интеграциялар **қалыпты төлемдегі сияқты жұмыс істейді**❗️
{% endhint %}

Форма тексерілген

{% hint style="danger" %}
Нақты төлемдерді қабылдау үшін форма **жұмыс режиміне** ауысуы қажет. Яғни, демо режимінің ауыстырғышын **ашық қызыл** күйге келтіру керек.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/integrations/payment/prodamus.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
