# Paypal

* [Как настроить Paypal ](#kak-nastroit-paypal)ссылка Как настроить Paypal
* [Как создать ссылку на оплату ](#sozdanie-ssylki-na-oplatu) ссылка Как создать ссылку на оплату
* [Как создать реккурентный платеж](#kak-sozdat-rekkurentnyi-platezh) ссылка Как создать рекуррентный платеж
* [Как обработать результат](#obrabotka-rezultata) ссылка  Как обработать результат

## Как настроить Paypal

Для работы с Paypal необходимо получить два ключа: **client\_id** и **секретный**

Перейдите на страницу <https://developer.paypal.com/developer/applications/>

И выберите из списка или создайте новое приложение:

![](https://lh4.googleusercontent.com/i7wtKw-RzPSHarXCkIVIqPvAvn_39t1r4CPL9lSmxzFc1mNiz24zHj4PJIUUhCzL-YXaNrQbK5edCP9bYHGXkIij59shZ6XPj3YZiVp4uRlDllvWRetnF1Y3GSbQXRZt03OOiGxs)

Вверху переключитесь в режим Live и выберите нужное приложение. Откроется страница настроек, где находится нужная нам информация:<br>

![](https://lh4.googleusercontent.com/DEKr4nWXl27UVUoT4Ycl_nOx0Aj-M7KrLcgxWR-uTaUFV82416Wwd2ib4ghxQ3jiW5P53KfMwkqvB_ZS3KjLxNNdn8bzbpvVgfeV5HKsL_iFcv6bc1y_0yntseRKzwPUGz37bpnn)

Скопируйте данные и вставьте их в соответствующие поля в настройках Mavibot: перейдите в раздел "Acquiring" и найдите сервис Paypal:

<figure><img src="/files/de8c2345cfa443e1ac295a711ac5588fa505fb54" alt=""><figcaption></figcaption></figure>

Далее нажмите "Connect" и заполните поля ранее полученным секретным ключом и Client ID:

<figure><img src="/files/433a79f8e3cc7fc97f01d0301fdabe7f5613c994" alt=""><figcaption></figcaption></figure>

Затем нажмите "Save settings". На этом подключение завершено.

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

### С использованием переменной payment\_sum

Чтобы сгенерировать ссылку на оплату, нужно задать значение **payment\_sum** переменной, и сразу после этого появится **paypal\_pay\_url** переменная.

| Параметры функции        | Описание параметра                                                                                | Примечание                                                                                                             |
| ------------------------ | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **payment\_title**       | <p>(необязательная переменная)<br>это название товара.</p>                                        | Если оно не указано, подставляется текст: **“Invoice payment order\_id"** (order\_id — идентификатор заказа в mavibot) |
| **payment\_description** | описание товара, необязательное поле                                                              |                                                                                                                        |
| **company\_name**        | название вашей компании отображается в самой верхней части страницы оплаты (пример ниже, company) |                                                                                                                        |

![](https://lh4.googleusercontent.com/sVxsMZdMlVcetXrFFXEWC9lV6dNB3dzDTBWv05Cl5GiilrRWDHlAy69a_ntlX2jY3esyzOPv8TGDm-YHQwnkz1nVMlMtWL6M7rOqeJMNRs0KY22g_d50EksFL8U7y7pF2BZH6FqJ)

Кроме того, перед указанием payment\_sum можно задать, на каком языке будет страница оплаты.

Для этого задайте переменную locale. Язык по умолчанию — <mark style="color:красный;">**Russian (ru-RU).**</mark> Возможные варианты: da-DK, he-IL, id-ID, ja-JP, no-NO, pt-BR, ru-RU, sv-SE, th-TH, zh-CN, zh-HK, zh-TW и т. д. (набор доступных языков может отличаться, ориентируйтесь на исходный источник) ссылка [первоисточник](https://developer.paypal.com/api/rest/reference/locale-codes/))

Также можно указать валюту, в которой принимается платеж. Для этого укажите **currency** переменную, <mark style="color:красный;">**рубль (RUB)**</mark> по умолчанию, для доллара задайте значение USD (currency = USD). Возможные варианты валют можно посмотреть по ссылке. ссылка  [ссылке](https://developer.paypal.com/docs/api/reference/currency-codes/).&#x20;

А третий дополнительный параметр — это **company\_name** - название вашей компании, отображаемое в самой верхней части страницы оплаты (пример ниже, company)

Текст **paypal\_pay\_url** переменная может отображаться в виде ссылки или быть размещена на кнопке с текстом "Pay".

Ссылка выглядит так: [https://www.paypal.com/checkoutnow?token=07N53571YM296381N](https://www.sandbox.paypal.com/checkoutnow?token=07N53571YM296381N)

Пример реализации.

Указание суммы платежа и названия компании

<figure><img src="/files/9226de59e99b37d74b4e01fe80b1831a13b2f533" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
&#x20;**Обратите внимание:** кнопкой **payment\_sum** переменной присваивается значение последней, после необязательных переменных **payment\_title, company\_name,** и т. д.
{% endhint %}

Далее укажите переменную #**{paypal\_pay\_url}** во втором блоке "Status":

1. Переменную можно указать в поле сообщения:

<figure><img src="/files/d9c23c51eddfd274a9435425bc385f2b6fc77936" alt=""><figcaption></figcaption></figure>

2. Переменную можно указать в поле url в настройках вложения:

<figure><img src="/files/3ba2ceb5e1c8fcce1fba397d0c06861519222458" alt=""><figcaption></figcaption></figure>

3. Переменную можно указать в поле url в настройках кнопки:

<figure><img src="/files/d6f0d7717acacb21d2848951f33b5c74215db17e" alt=""><figcaption></figcaption></figure>

При открытии ссылки на оплату

![](https://lh3.googleusercontent.com/GvWy17AiTcE0apTWzoPjoADq9h9bXWMRjS61DC00iwnVfSojYKvGS6Puhr6Eg0KfBtBnUza1rY_Mlh0351ka2ikbmNkC6-9zjc2CP-LdUYOQjX4fMaB3V-AT9IRTrMbqRxD-KzW2)

### С использованием функции калькулятора paypal\_payment\_url

Создайте блок конструктора воронки и используйте **paypal\_payment\_url** функцию в калькуляторе, передав ей необходимые параметры:

<table><thead><tr><th width="264">Параметры функции</th><th>Описание параметра</th></tr></thead><tbody><tr><td><mark style="color:красный;"><strong>!</strong></mark> <strong>payment_sum</strong></td><td>обязательный параметр — сумма платежа.</td></tr><tr><td><strong>currency</strong></td><td> Валюта платежа по умолчанию — ‘USD'. Полный список доступен по ссылке <a href="https://developer.paypal.com/docs/api/reference/currency-codes/">https://developer.paypal.com/docs/api/reference/currency-codes/</a></td></tr><tr><td><strong>payment_title</strong></td><td>заголовок платежа (до 127 символов). (Если не указано, подставляется текст: “Invoice payment payment_id”, где payment_id — ID заказа в Mavibot)</td></tr><tr><td><strong>payment_description</strong></td><td>краткое описание платежа<br>(<em>до 127 символов</em>)</td></tr><tr><td>company_name</td><td>необязательный параметр, название организации/компании и т. д.</td></tr><tr><td><strong>locale</strong></td><td>Язык страницы оплаты указывается как en-US, fr-XC и т. д.<br>По умолчанию — ‘ru-Ru’.<br>Полный список доступен по ссылке https://developer.paypal.com/api/rest/reference/locale-codes/</td></tr></tbody></table>

Когда условие блока будет выполнено, клиент получит ссылку на оплату, и **paypal\_payment\_completed** у клиентской переменной будет создано значение <mark style="color:красный;">**False.**</mark>

<figure><img src="/files/65f3d64ead89000a6f34fc4ad1fcd1e2e9d6301c" alt="" width="563"><figcaption></figcaption></figure>

`url = paypal_payment_url(2500,`` `<mark style="color:красный;">`'RUB'`</mark>`, 'Invoice payment payment_id','payment description', 'organization name', 'ru-Ru')`

## Как создать рекуррентный платеж

Чтобы создать и получить ссылку на оплату с рекуррентными платежами, нужно создать **план подписки** в личном кабинете.&#x20;

<figure><img src="/files/9c0ea1db8ffd87e9de46570630351e335d5dfe1d" alt="" width="548"><figcaption></figcaption></figure>

<figure><img src="/files/f294d5654cccf01bc263dee443c804f039ef0bc3" alt="" width="563"><figcaption></figcaption></figure>

Выбор уже созданного оффера:

<figure><img src="/files/38031958fb9250e0ebd411d63a974ad6295b0cfa" alt="" width="563"><figcaption></figcaption></figure>

Либо введите название оффера в строку поиска и нажмите "Create".

<figure><img src="/files/81576dffa6d3bd67903763c570bdc28bd8fae416" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/6d27c536875245ac69b9649e4a10e46206e0ef9e" alt="" width="563"><figcaption><p>Создание предложения подписки в paypal</p></figcaption></figure>

Выберите тип автосписания Fixed:

<figure><img src="/files/c7d59a60785ce0700ff08aff3fed1ff802b40386" alt="" width="563"><figcaption></figcaption></figure>

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

<figure><img src="/files/0afc6166d7443dad1bc0623b6c75127fcdc98386" alt="" width="563"><figcaption></figcaption></figure>

Выбор валюты подписки и условий списания:

{% hint style="danger" %} <mark style="color:красный;">**Внимание!!**</mark>&#x20;

В Mavibot валюта по умолчанию — евро, если списание производится в долларах или в другой валюте, то при создании подписки укажите нужную валюту и в Mavibot — ту же валюту из подписки Paypal.
{% endhint %}

<figure><img src="/files/1866fd129409b2069d92810d8ce7f6a43b3cf76d" alt="" width="563"><figcaption></figcaption></figure>

Далее активируйте подписку:

<figure><img src="/files/1a6094d398f326361b1ce1ce1943be5e229a2e1e" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/edffccf7e2c90e21ceb2bb1c948b8d78e302ac98" alt="" width="563"><figcaption></figcaption></figure>

После создания будет доступен ее ID, который мы будем использовать в дальнейшем для создания подписки и получения ссылки на оплату.

<figure><img src="/files/6ca21ee8204551e2793f427bd187e7e4a54bc492" alt="" width="563"><figcaption></figcaption></figure>

Ссылка на оплату генерируется и возвращается функцией:\
**paypal\_subscription\_url(plan\_id, shipping\_currency, shipping\_payment\_sum, start\_time)**&#x20;

| Параметры функции                                                | Описание параметра                                                                                                                                                                                                                                   |
| ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:красный;">**!**</mark> **plan\_id**           | ID плана подписки                                                                                                                                                                                                                                    |
| <mark style="color:красный;">**!**</mark> **shipping\_currency** | если оплата за указанный план производится в долларах, то ничего передавать не нужно, иначе передаем код валюты, который вы указали в плане. Здесь передается валюта, в которой оплачивается доставка (даже при нулевой стоимости). По умолчанию USD |
| **shipping\_payment\_sum**                                       | Это необязательный параметр, который указывает стоимость доставки. По умолчанию значение равно нулю.                                                                                                                                                 |
| **start\_time**                                                  | <p>необязательный параметр, дата и время начала подписки. Если ничего не передавать, то дата начала подписки = дате оплаты.<br> Форматы: %d.%m.%Y или %d.%m.%Y %H:%M. </p>                                                                           |

<figure><img src="/files/88132210b44ad2168b8b91e0b711bf155b065ed9" alt="" width="563"><figcaption></figcaption></figure>

При создании ссылки **paypal\_subscription\_id** также появится переменная, в которой будет содержаться ID подписки.

При оплате вы получите callback, который аналогичен оплате обычного платежа.

**paypal\_subscription\_data(paypal\_subscription\_id)** - получение информации о подписке

| Параметры функции            | Описание параметров |
| ---------------------------- | ------------------- |
| **paypal\_subscription\_id** | ID подписки.        |

Текст **результат** выполнения функции — это массив, содержащий всю информацию о подписке, включая количество платежей, количество неудачных попыток списания, статус и многое другое.

### Как отменить подписку

Функция paypal\_remove\_subscription(paypal\_subscription\_id) поможет клиентам отменить подписки на ваши услуги.

Параметры:

| Параметры функции        | Описание                                                                       |
| ------------------------ | ------------------------------------------------------------------------------ |
| paypal\_subscription\_id | ID подписки, который сохраняется в переменную клиента при оформлении подписки. |

<figure><img src="/files/8d267332d691c5ead88c875e623c421c29820553" alt=""><figcaption></figcaption></figure>

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

{% hint style="info" %}
После успешной оплаты в бота будут отправлены callback-и, которые сообщат вам, что оплата прошла успешно.
{% endhint %}

{% hint style="success" %}
В системе вы видите callback-и как сообщения от пользователя, но сам пользователь ИХ НЕ ВИДИТ: они отображаются только оператору.
{% endhint %}

{% hint style="danger" %}
Чтобы обработать callback в блоке и отправить пользователю сообщения о статусе оплаты, используйте тип сравнения "Точное совпадение".
{% endhint %}

{% hint style="warning" %}
Callback-и могут приходить с задержкой, поэтому после показа ссылки на оплату пользователю рекомендуется отправить сообщение вроде: «После внесения оплаты, пожалуйста, дождитесь сообщения с подтверждением об успешной оплате».
{% endhint %}

### Для прямой оплаты

Успешный callback оплаты состоит из первых 10 символов secret и подписи со статусом. Например: EHsWHYOoWV\_success

Пример 1: реакция на успешную оплату с использованием блока "Start condition":

<figure><img src="/files/733abb490950979dd4e39c5d2bf601b770f7ce3a" alt=""><figcaption></figcaption></figure>

Пример 2: реакция на успешную оплату с использованием блока "Start condition":

<figure><img src="/files/f26e48045b16795a0bfa80c0631a21d151f710f1" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Если вы не хотите выводить пользователя из основного потока чат-бота, используйте блок “No-state with condition” — пользователи не могут быть перенаправлены в этот блок напрямую, поэтому после успешной оплаты они останутся в основном воронке и одновременно получат уведомление об успешной оплате.

Но если вы хотите продолжить воронку на основе события успешной оплаты, используйте блок “Start condition”. В этом случае после завершения блока оплаты пользователь будет перенаправлен в блок “Start condition”, откуда вы сможете продолжить построение воронки.
{% endhint %}

{% hint style="info" %}
Подробнее об условных блоках рассказано в статье с таким же названием. [блоках с условием рассказали](broken://pages/23d3fbba7c2a527c43fae9f4fcaa2648341c0c57) ссылка
{% endhint %}

При успешной оплате переменной paypal\_payment\_completed присваивается True.

После завершения оплаты клиенту добавляется переменная paypal\_callback\_data, которая содержит актуальные данные платежной системы о статусе транзакции. Из полученного словаря можно извлечь необходимые данные с помощью метода get.

{% hint style="danger" %}
Чтобы выполнить повторный платеж, нужно сбросить переменную payment\_sum, переменную с ранее сгенерированной ссылкой, а затем заново присвоить переменной payment\_sum значение или вызвать функцию для получения новой ссылки.
{% endhint %}

### Для платежей по подписке

{% hint style="danger" %}
Функция настройки callback-ов для операций, связанных с подпиской, была добавлена 09/01/2024. Для корректной работы callback-ов этой категории необходимо отключить и заново подключить интеграцию платежной системы Paypal в вашем проекте.
{% endhint %}

При совершении платежа по подписке бот получит одно из следующих сообщений:

* о активации подписки. Например, subscription\_I-PTV5H4MRC1H3\_activated;
* Уведомление об успешной оплате повторяющейся подписки. Например, subscription\_I-PTV5H4MRC1H3\_paid;
* или об ошибке оплаты подписки. Например, subscription\_I-PTV5H4MRC1H3\_not\_paid;

В примерах выше “I-PTV5H4MRC1H3” — это ID подписки клиента, к которому можно обратиться с помощью переменной paypal\_subscription\_id.

Callback добавит клиенту переменную paypal\_subscription\_callback\_data, которая содержит актуальные данные платежной системы о статусе транзакции. Из полученного словаря можно извлечь необходимые данные с помощью метода get.

Пример 1: реакция на активацию подписки с использованием блока "Start condition":

<figure><img src="/files/5fbc291a44a7a4dfc19a886451ac3c354af7a925" alt=""><figcaption></figcaption></figure>

Пример 1: реакция на активацию подписки с использованием блока "Not state with condition":

<figure><img src="/files/889a2cf7589b89a09960e038f2d70620d099b821" alt=""><figcaption></figcaption></figure>


---

# 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/doc/ru/oplata/paypal.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.
