# Приветствие

<figure><img src="https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2Fg0LLNAjCpW3D3XsocR9b%2Fbanner_site.png?alt=media&amp;token=a114559c-2134-419a-94fe-96a512c64931" alt=""><figcaption></figcaption></figure>

Добро пожаловать в документацию платежной системы Aaio.\
Тут мы поможем Вам интегрировать наш сервис в Ваш сайт либо бота и поможем в работе с API.


# Нашли проблему?

Нашли ошибку либо проблему?\
\
Напишите нам о ней!\
E-Mail: <support@aaio.io>\
Telegram: [@aaioio\_Bot](https://t.me/aaioio_Bot)


# Готовые CMS модули и SDK

CMS модули:

* ![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FuLOdllUnnTkyZUm0TreN%2Fopencart.svg?alt=media\&token=8eb7d6db-02c6-4687-b713-02193755ef68) \
  [Opencart 2.3.x](/gotovye-cms-moduli-i-sdk/opencart-2.3.x) | [Opencart 3.x](/gotovye-cms-moduli-i-sdk/opencart-3.x)<br>
* [DLE Billing](/gotovye-cms-moduli-i-sdk/dle-billing)<br>
* ![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2F77PTgpDYu6qaW8nfJiKu%2Fbill-logo-white%20\(1\).svg?alt=media\&token=bc9864d1-d3a8-4243-8b63-c14d11857526)\
  [Billmanager 6](/gotovye-cms-moduli-i-sdk/billmanager-6)
* ![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FsKeam1JvuiQicTlVSKJC%2Fwhmos.svg?alt=media\&token=c978321d-bc02-44f0-9d14-c31ab6841bb6)\
  [WHMCS 5.x-8.x](/gotovye-cms-moduli-i-sdk/whmcs)
* [WooCommerce — Плагин для WordPress](/gotovye-cms-moduli-i-sdk/woocommerce-plagin-dlya-wordpress)
* [Xenforo 2.1.0+](/gotovye-cms-moduli-i-sdk/xenforo-2.1.0+)<br>

SDK:

* ![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2F8oLHrG3UjSKjuR5i9esF%2Fpython%20\(1\).svg?alt=media\&token=433b32e2-1718-41bc-80e5-78bb5b4318ed)\
  [Python 3](/gotovye-cms-moduli-i-sdk/python-3-sdk)
* ![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2Fl00JyQqLBI0DrOlLtxnv%2Ftypescript%20\(1\).svg?alt=media\&token=e529b9ef-3d92-4f92-ada8-d570660a7549)\
  [Typescript SDK](/gotovye-cms-moduli-i-sdk/typescript-sdk)
* ![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FeBwGprqnLegQFzu4RYQd%2FJava_logo.svg?alt=media\&token=abb23723-faca-4a2a-9981-7ad93db13cce)\
  [Java SDK](/gotovye-cms-moduli-i-sdk/java-sdk)

<br>


# WHMCS 5.x-8.x

Готовые CMS модули и SDK

Загрузите архив [aaio\_whmcs-5.x-8.x.zip](https://aaio.so/upload/cms/aaio_whmcs-5.x-8.x.zip)\
Разархивируйте архив\
\
**1.** С помощью FTP-клиента скопируйте папку **modules** в корень вашего сайта.\
Если требуется замена файлов, то нужно согласиться.\
\
**2.** Зайдите в панель администратора вашего сайта. \
Перейдите в меню **Настройки → Платежи → Платежные шлюзы** *(/admin/configgateways.php)*\
Активируйте модуль Aaio и укажите необходимые данные в настройках.

<figure><img src="https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FtutDkchEG1o0Zib94UtT%2Fimage.png?alt=media&amp;token=74cdb741-4844-4cc7-bbe1-dd4212f7b49d" alt=""><figcaption><p>Нажмите на All Payment Gateways. Активируйте платежную систему нажав на кнопку Aaio</p></figcaption></figure>

<figure><img src="https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FmO7AIAj6U2XnYzvSWO8D%2Fimage.png?alt=media&amp;token=4ddde862-9714-4769-8753-4cd0235d8d05" alt=""><figcaption><p>Сохраните изменения</p></figcaption></figure>

**3.** Укажите URL Оповещения, Успехи и Ошибки в настройках магазина. \
Пример:\
\- URL Оповещения: *whmcs.example/modules/gateways/callback/aaio.php*\
\- URL Успеха (как пример - страница счетов): *whmcs.example/clientarea.php?action=invoices*\
\- URL Ошибки (как пример - страница счетов): *whmcs.example/clientarea.php?action=invoices*\
\ <mark style="color:red;">**\***</mark> Где *whmcs.example* - укажите свой домен\
\
**4.** К приему платежей через **Aaio** готовы!\
\
*Модуль проверялся на WHMCS v8.1.1*


# Opencart 2.3.x

Готовые CMS модули и SDK

Загрузите архив [aaio\_opencart\_2.3.x.zip](https://aaio.so/upload/cms/aaio_opencart_2.3.x.zip)\
Разархивируйте архив\
\
**1.** С помощью FTP-клиента скопируйте папки **admin** и **catalog** в корень вашего сайта.\
Если требуется замена файлов, то нужно согласиться.\
\
**2.** Зайдите в панель администратора вашего сайта. \
Перейдите в меню **Модули/Расширения -> Модули/Расширения**.\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2Fl8Na1gRBU86YXZx55yOY%2Fimage.png?alt=media\&token=f1d76f29-7110-4d95-ae68-280184f06b19)\
\
**3.** Из списка выберите тип расширения **Оплата**.\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FEFnVuBCJHbpkOBppj4Qd%2Fimage.png?alt=media\&token=6225b3df-de98-4f21-af72-1ad29a2a3a7d)\
\
**4.** Найдите модуль Aaio в списке платежных систем, затем активируйте его.\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2F4aQxT7Fk4Xo6rKedmstG%2Fimage.png?alt=media\&token=71647d0e-72d7-4601-9c22-51220382ec05)\
\
**5.** После установки, нажмите **Редактировать**.\
**6.** Заполните все настройки и начните принимать платежи через **Aaio**!\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2Fcq0t2LLB4ZT0eF2vuaDe%2Fimage.png?alt=media\&token=4dd46de7-cbdf-43af-ae17-03613ab247c4)

> Не забудьте указать URL Оповещения в настройках магазина


# Opencart 3.x

Готовые CMS модули и SDK

Загрузите архив [aaio\_opencart\_3.x.zip](https://aaio.so/upload/cms/aaio_opencart_3.x.zip)\
Разархивируйте архив\
\
**1.** С помощью FTP-клиента скопируйте папки **admin** и **catalog** в корень вашего сайта.\
Если требуется замена файлов, то нужно согласиться.\
\
**2.** Зайдите в панель администратора вашего сайта. \
Перейдите в меню **Модули/Расширения -> Модули/Расширения**.\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FAVVgtyUz9gQlMPmo0hR4%2FScreenshot_1.png?alt=media\&token=ac3b7f26-d6d6-4ac0-9e3b-3a962a6601b7)\
\
**3.** Из списка выберите тип расширения **Оплата**.\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FPfXms7mlOHAKX8oLpE4C%2FScreenshot_2.png?alt=media\&token=2104f77e-b514-417d-8096-854c5ad536c6)\
\
**4.** Найдите модуль Aaio в списке платежных систем, затем активируйте его.\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2Ff9nJw5TJwgMz3bYMhRzD%2FScreenshot_3.png?alt=media\&token=8585afd7-a25b-4b48-bd7e-b42710aebfa9)\
\
**5.** После установки, нажмите **Редактировать**.\
**6.** Заполните все настройки и начните принимать платежи через **Aaio**!\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FhjvpsDEa2UGcZaByQ7hY%2FScreenshot_4.png?alt=media\&token=5b23229d-c699-4c53-81d0-39befbc02fa2)

> Не забудьте указать URL Оповещения в настройках магазина


# DLE Billing

Готовые CMS модули и SDK

Загрузите архив [aaio\_dle\_billing\_0.7.x.zip](https://aaio.so/upload/cms/aaio_dle_billing_0.7.x.zip) (для Dle Billing 0.7.x) либо [aaio\_dle\_billing\_0.9.5+.zip](https://aaio.so/upload/cms/aaio_dle_billing_0.9.5+.zip) (для Dle Billing 0.9.5+)\
Разархивируйте архив\
\
**1.** С помощью FTP-клиента скопируйте папку **engine** в корень вашего сайта.\
Если требуется замена файлов, то нужно согласиться.\
\
**2.** Зайдите в панель администратора вашего сайта. \
Перейдите в раздел **Сторонние модули -> DLE Billing -> Платежные системы**\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FaEbmrQiifbwS7pbYebB3%2Fimage.png?alt=media\&token=58c43aaa-4ef3-42bf-b625-407340fbd4ab)\
\
**3.** Заполните все настройки и начните принимать платежи через **Aaio**!

> Не забудьте указать URL Оповещения в настройках магазина


# Billmanager 6

Готовые CMS модули и SDK

Загрузите архив [aaio\_billmgr6.zip](https://aaio.so/upload/cms/aaio_billmgr6.zip)\
Разархивируйте архив\
\
**1.** С помощью SFTP-клиента скопируйте папки в директорию `/usr/local/mgr5` на сервере.\
Если требуется замена файлов, то нужно согласиться.

> Для работы модуля требуются пакеты: **php-cli**, **php-common**, **php-xml**

\
**2.** Выдайте права **755** PHP файлам модуля и перезагрузите биллинг командами:

```bash
chmod 755 /usr/local/mgr5/cgi/aaio_payment.php
chmod 755 /usr/local/mgr5/cgi/aaio_result.php
chmod 755 /usr/local/mgr5/include/php/bill_func_aaio.php
chmod 755 /usr/local/mgr5/paymethods/pmaaio.php
/usr/local/mgr5/sbin/mgrctl exit -m billmgr
```

\
**3.** Перейдите в Billmanager под аккаунтом администратора в раздел **Провайдер -> Методы оплаты -> Создать**\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2F6q1KDOCF5XB9EOVE17WL%2Fimage.png?alt=media\&token=71d335e6-e38c-408c-921a-f0bbf9971847)

**4.** Найдите модуль **Aaio** и нажмите **Добавить**\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FD2dk0Or7Wwr9IAQMawPE%2Fimage.png?alt=media\&token=7729055b-0cd7-486b-b40b-22633a5b0e3f)

**5.** Заполните все настройки\
![](https://3548882234-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIwR2OSILZQ1sBDtL9yOn%2Fuploads%2FIZXRrEhNqrNaEWt2Qcrf%2Fimage.png?alt=media\&token=51efa5b3-a4a1-4e17-abd3-3284f8fff53e)

**6.** Начните принимать платежи через **Aaio**!

> Не забудьте указать URL Оповещения в настройках магазина.\
> Пример: **billmgr\_url.example/mancgi/aaio\_result.php**

> Debug журнал метода оплаты находится по адресу **/usr/local/mgr5/var/pmaaio.log**


# WooCommerce — Плагин для WordPress

Готовые CMS модули и SDK

{% hint style="info" %}
Ожидается
{% endhint %}


# Xenforo 2.1.0+

Готовые CMS модули и SDK

**Требования:**\
Версия PHP >= 7.4\
Версия Xenforo >= 2.1.0

**Инструкция по установке:**\
**1.** В корень с сайтом загрузить содержимое архива [TC-PaygateAaio-1.0.1.zip](https://aaio.so/upload/cms/TC-PaygateAaio-1.0.1.zip)\
**2.** Установить плагин стандартными средствами **Xenforo**\
**3.** На форуме создать платежный шлюз на странице **/admin.php?payment-profiles** и указать требуемые данные (ID магазина, секретный ключ 1 и 2)\
**4.** В настройках магазина **Aaio** указать:\
\- **URL Оповещения** в формате:\
`https://{forum_domain}/payment_callback.php?_xfProvider=tcAaio`\
\- **URL Успешной и Неудачной оплаты** в формате:\
`https://{forum_domain}/tc-pg-aaio`\
**5.** Начните принимать платежи через **Aaio**!<br>


# Python 3 SDK

Готовые CMS модули и SDK

Благодаря поддержке пользователей, уже имеем целых 3 версии SDK от разных разработчиков.<br>

1\. SDK от [**kewldan**](https://t.me/kewldan) **и** [**lolkof**](https://t.me/lolkof) **(Рекомендуем)**\
Подробнее на сайте [**PyPI**](https://pypi.org/project/aaio)\
**Для установки используйте команду:**\
`pip install aaio`

2\. SDK от [**Belyashik2K**](mailto:lovelybelyashik@gmail.com)\
Подробнее на сайте [**PyPI**](https://pypi.org/project/AaioAsync)\
**Для установки используйте команду:**\
`pip install AaioAsync`

3\. SDK от [**Fre4ka**](mailto:yusufbek0303@gmail.com)\
Подробнее на сайте [**PyPI**](https://pypi.org/project/AaioAPI)\
**Для установки используйте команду:**\
`pip install AaioAPI`


# Typescript SDK

Готовые CMS модули и SDK

Благодаря поддержке пользователя, уже имеем 1 версию SDK от разработчика.\
\
1\. SDK от [**kewldan**](https://t.me/kewldan)\
Подробнее на сайте [**npm**](https://www.npmjs.com/package/aaio.js)\
**Для установки используйте команду:**\
`npm i aaio.js`


# Java SDK

Готовые CMS модули и SDK

Благодаря поддержке пользователя, уже имеем 1 версию SDK от разработчика.\
\
1\. SDK от [itskekoff](https://github.com/itskekoff)\
Подробнее на сайте [**Github**](https://github.com/itskekoff/AaioPaymentsSDK)\
**Для установки следуйте инструкции в репозитории Github**


# Создание заказа запросом (Рекомендуем)

{% hint style="info" %}
**Почему рекомендуем создавать заказ именно отправляя запрос на сервер?** \
*В связи с зачастившими блокировками домена мы выделяем новый домен под форму оплаты. Чтобы не менять его каждый раз в продакшене, мы решили сделать данный метод который будет возвращать Вам всегда актуальный URL для оплаты!*
{% endhint %}

> **Данные для запроса такие-же как и в переходе на форму.** \
> Все сделали для удобства перехода и меньшей мороки в коде.

## Запрос

<mark style="color:green;">`POST`</mark>  `https://aaio.so/merchant/get_pay_url`

### Заголовки

`Accept: application/json` <mark style="color:red;">**\***</mark>\
`Content-Type: application/x-www-form-urlencoded` <mark style="color:red;">**\***</mark>

#### Определения <mark style="color:red;">**\***</mark>**&#x20;- обязательные заголовки. Без них Вы не сможете получить корректный ответ.**

### Параметры <mark style="color:red;">(url-encoded)</mark>

<table><thead><tr><th width="195">name</th><th width="149">type</th><th>description</th></tr></thead><tbody><tr><td>merchant_id <mark style="color:red;"><strong>*</strong></mark></td><td>uuid</td><td>ID Вашего магазина</td></tr><tr><td>amount <mark style="color:red;"><strong>*</strong></mark></td><td>double</td><td>Сумма к оплате в валюте магазина <br>(Если в сумме есть копейки, то отправляйте их с разделителем "." Пример: <code>100.18</code>)</td></tr><tr><td>order_id <mark style="color:red;"><strong>*</strong></mark></td><td>string <br>min: 1 <br>max: 64</td><td>Идентификатор заказа в Вашей системе. Значение параметра может содержать только буквы, цифры и символы <code>:</code> , <code>-</code>, <code>_</code>, <code>[</code>, <code>]</code> ,<code>|</code>.</td></tr><tr><td>sign <mark style="color:red;"><strong>*</strong></mark></td><td>string</td><td>Подпись заказа (<code>SHA256</code> Хеш). <br><a href="/priem-platezhei/sozdanie-zakaza-zaprosom-rekomenduem/metodika-formirovaniya-podpisi">Методика формирования подписи для запроса</a></td></tr><tr><td>currency <mark style="color:red;"><strong>*</strong></mark></td><td>string</td><td>Валюта заказа. Доступные значения: <code>RUB</code>, <code>UAH</code>, <code>EUR</code>, <code>USD</code></td></tr><tr><td>method</td><td>string</td><td>Кодовое название платежной системы (см. <a href="https://wiki.aaio.so/prochee/kodovye-nazvaniya-metodov-popolneniya">способы оплаты</a>). Предлагаемый способ оплаты. Клиент сможет изменить его в процессе оплаты</td></tr><tr><td>desc</td><td>string <br>min: 1 <br>max: 512</td><td>Описание заказа (показывается клиенту при оплате)</td></tr><tr><td>email</td><td>string</td><td>E-Mail клиента</td></tr><tr><td>lang</td><td>string</td><td>Язык интерфейса. Доступные значения: <code>ru</code>, <code>en</code>. По умолчанию: <code>ru</code></td></tr><tr><td>referral</td><td>string</td><td>Внимание! Код реферала недоступен для данного метода, так-как пользователь будет отправлен не на основной домен <code>aaio.so</code>.</td></tr><tr><td>us_key</td><td>string <br>min: 1 <br>max: 2056</td><td><p>Так же Вы можете передавать свои параметры, которые наш сервер вернет на Ваш URL оповещения. Ключи параметров должны начинаться с <code>us_</code> и содержать только латинские символы и цифры. Максимальная длина - <code>15</code>. Значения параметров могут содержать только буквы, цифры и символы <code>-</code>, <code>_</code>, <code>[</code>, <code>]</code>, <code>+</code> ,<code>=</code>,<code>|</code>. Например: </p><p><code>us_name=ivanov&#x26;us_login=ivanov1971</code></p></td></tr></tbody></table>

<mark style="color:red;">Обратите внимание!</mark> Параметры передаются в формате `application/x-www-form-urlencoded`

## Примеры ответа

**Формат ответа** `application/json`

{% tabs %}
{% tab title="Успех - 200" %}

```json
{
	"type": "success",
	"url": "https://......" // URL для оплаты
}
```

{% endtab %}

{% tab title="Ошибка: 400, 401, 429, 500, 503  " %}
**Пользовательские коды ошибок** - `400`, `401`, `429`\
**Серверные коды ошибок** - `500`, `503`

```json
{
  "type": "fail",
  "code": "400",
  "message": "message"
}
```

{% endtab %}

{% tab title="Другой код ответа" %}
Если код ответа другой, то возможна проблема на стороне сервера API. \
**Рекомендуем учитывать такие ситуации в коде.**
{% endtab %}
{% endtabs %}

## Готовые примеры запроса

{% tabs %}
{% tab title="PHP" %}

```php
<?php
$merchant_id = ''; // ID Вашего магазина
$amount = 10.54; // Сумма к оплате
$currency = 'RUB'; // Валюта заказа
$secret = ''; // Секретный ключ №1 из настроек магазина
$order_id = 'php_curl_example'; // Идентификатор заказа в Вашей системе
$sign = hash('sha256', implode(':', [$merchant_id, $amount, $currency, $secret, $order_id]));
$desc = 'Order Payment'; // Описание заказа
$lang = 'ru'; // Язык формы

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://aaio.so/merchant/get_pay_url');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'merchant_id' => $merchant_id,
    'amount' => $amount,
    'currency' => $currency,
    'order_id' => $order_id,
    'sign' => $sign,
    'desc' => $desc,
    'lang' => $lang
]));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); // Таймаут подключения к нашему серверу
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Таймаут обработки запроса

$result = curl_exec($ch); // Ответ
$http_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); // Код ответа

if (curl_errno($ch)) {
	die('Connect error:' . curl_error($ch)); // Вывод ошибки соединения
}
curl_close($ch);

if(!in_array($http_code, [200, 400, 401])) {
	die('Response code: ' . $http_code); // Вывод неизвестного кода ответа
}

$decoded = json_decode($result, true); // Парсинг результа. На выходе получаем массив данных

if(json_last_error() !== JSON_ERROR_NONE) {
	die('Не удалось пропарсить ответ');
}

if($decoded['type'] == 'success') {
	print_r($decoded); // Вывод результата
} else {
	die('Ошибка: ' . $decoded['message']); // Вывод ошибки
}
```

{% endtab %}
{% endtabs %}


# Методика формирования подписи

Создание заказа запросом (Рекомендуем)

Подпись для создания заказа формируется путем нахождения `SHA256` Хеша от строки:\
"`ID Вашего магазина`**:**`Сумма к оплате`**:**`Валюта`**:**`Секретный ключ №1 из настроек магазина`**:**`Идентификатор заказа в Вашей системе`"


# Создание заказа переходом на форму (Устаревшее)

{% hint style="info" %}
**Почему не рекомендуем создавать заказ отправляя пользователя на форму?** \
*В связи с зачастившими блокировками домена мы выделяем новый домен под форму оплаты. Чтобы не менять его каждый раз в продакшене, Вам лучше использовать* [***Создание заказа запросом***](/priem-platezhei/sozdanie-zakaza-zaprosom-rekomenduem)\
\
***Если же домен aaio.so не заблокирован в Вашей стране где ведете бизнес - то смело используйте данный метод.*** \
***Данный метод не будет удален, он все еще поддерживается.***
{% endhint %}

Для создания заказа в магазине Вам необходимо отправить Покупателя на подготовленный URL `GET` либо `POST` запросом с параметрами (в формате **form-data**).

URL `https://aaio.so/merchant/pay`

Параметры  (<mark style="color:red;">\*</mark> обязательные):

<table><thead><tr><th width="172">Параметр</th><th width="124">Тип</th><th>Описание</th></tr></thead><tbody><tr><td>merchant_id <mark style="color:red;">*</mark></td><td>UUID</td><td>ID Вашего магазина</td></tr><tr><td>amount <mark style="color:red;">*</mark></td><td>float</td><td>Сумма к оплате в валюте магазина (Если в сумме есть копейки, то отправляйте их с разделителем "." Пример: <code>100.18</code>)</td></tr><tr><td>order_id <mark style="color:red;">*</mark></td><td>string<br>min: 1<br>max: 64</td><td>Идентификатор заказа в Вашей системе.<br><br>Значение параметра может содержать только буквы, цифры и символы <code>:</code> , <code>-</code>, <code>_</code>, <code>[</code>, <code>]</code> ,<code>|</code>. </td></tr><tr><td>sign <mark style="color:red;">*</mark></td><td>string</td><td>Подпись заказа (<code>SHA256</code> Хеш). <a href="/priem-platezhei/sozdanie-zakaza-perekhodom-na-formu-ustarevshee/metodika-formirovaniya-podpisi">Методика формирования подписи в форме оплаты</a></td></tr><tr><td>currency <mark style="color:red;">*</mark></td><td>string</td><td>Валюта заказа. <br>Доступные значения: <code>RUB</code>, <code>UAH</code>, <code>EUR</code>, <code>USD</code></td></tr><tr><td>method</td><td>string</td><td>Кодовое название платежной системы (см. <a href="/prochee/kodovye-nazvaniya-metodov-popolneniya">способы оплаты</a>).<br>Предлагаемый способ оплаты. <br>Клиент сможет изменить его в процессе оплаты</td></tr><tr><td>desc</td><td>string<br>min: 1<br>max: 512</td><td>Описание заказа (показывается клиенту при оплате)</td></tr><tr><td>email</td><td>string</td><td>E-Mail клиента</td></tr><tr><td>lang</td><td>string</td><td>Язык интерфейса. Доступные значения: <code>ru</code>, <code>en</code>. <br>По умолчанию: <code>ru</code></td></tr><tr><td>referral</td><td>string</td><td>Код реферала. Добавим данный код в Cookie покупателя. Если в течении 30 дней покупатель зарегистрируется в сервисе с данным кодом - он будет считаться Вашим рефералом</td></tr><tr><td>us_key</td><td>string<br>min: 1<br>max: 2056</td><td>Так же Вы можете передавать свои параметры, которые наш сервер вернет на Ваш URL оповещения.<br><br>Ключи параметров должны начинаться с <code>us_</code> и содержать только латинские символы и цифры. Максимальная  длина - <code>15</code>. <br><br>Значения параметров могут содержать только буквы, цифры и символы <code>-</code>, <code>_</code>, <code>[</code>, <code>]</code>, <code>+</code> ,<code>=</code>,<code>|</code>. <br><br>Например:<br><code>&#x3C;input type="text" name="us_name" value="ivanov"></code><br><code>&#x3C;input type="text" name="us_login" value="ivanov1971"></code></td></tr></tbody></table>


# Методика формирования подписи

Создание заказа переходом на форму (Устаревшее)

Подпись для создания заказа формируется путем нахождения `SHA256` Хеша от строки:\
"`ID Вашего магазина`**:**`Сумма к оплате`**:**`Валюта`**:**`Секретный ключ №1 из настроек магазина`**:**`Идентификатор заказа в Вашей системе`"


# Пример формы на PHP

Создание заказа переходом на форму (Устаревшее)

<pre class="language-php"><code class="lang-php">&#x3C;?php
$merchant_id = ''; // ID Вашего магазина
$amount = 10.54; // Сумма к оплате
$currency = 'RUB'; // Валюта заказа
$secret = ''; // Секретный ключ №1 из настроек магазина
$order_id = 'php_form_order_1'; // Идентификатор заказа в Вашей системе
$sign = hash('sha256', implode(':', [$merchant_id, $amount, $currency, $secret, $order_id]));
$desc = 'Order Payment'; // Описание заказа
$lang = 'ru'; // Язык формы
<strong>?>
</strong></code></pre>

```html
<form method="POST" action="https://aaio.so/merchant/pay">
	<input type="hidden" name="merchant_id" value="<?php echo $merchant_id ?>">
	<input type="hidden" name="amount" value="<?php echo $amount ?>">
	<input type="hidden" name="currency" value="<?php echo $currency ?>">
	<input type="hidden" name="order_id" value="<?php echo $order_id ?>">
	<input type="hidden" name="sign" value="<?php echo $sign ?>">
	<input type="hidden" name="desc" value="<?php echo $desc ?>">
	<input type="hidden" name="lang" value="<?php echo $lang ?>">
	<input type="submit" name="pay" value="Пополнить">
</form>
```


# Пример получения ссылки на PHP

Создание заказа переходом на форму (Устаревшее)

<pre class="language-php"><code class="lang-php">&#x3C;?php
$merchant_id = ''; // ID Вашего магазина
$amount = 10.54; // Сумма к оплате
$currency = 'RUB'; // Валюта заказа
$secret = ''; // Секретный ключ №1 из настроек магазина
$order_id = 'php_url_order_1'; // Идентификатор заказа в Вашей системе
$sign = hash('sha256', implode(':', [$merchant_id, $amount, $currency, $secret, $order_id]));
$desc = 'Order Payment'; // Описание заказа
$lang = 'ru'; // Язык формы

// Выводим ссылку
echo 'https://aaio.so/merchant/pay?' . http_build_query([
    'merchant_id' => $merchant_id,
    'amount' => $amount,
    'currency' => $currency,
    'order_id' => $order_id,
    'sign' => $sign,
    'desc' => $desc,
    'lang' => $lang
<strong>]);
</strong>?>
</code></pre>


# Пример получения ссылки на Python

Создание заказа переходом на форму (Устаревшее)

```python
import hashlib
from urllib.parse import urlencode

merchant_id = '' # ID Вашего магазина
amount = 10.54 # Сумма к оплате
currency = 'RUB' # Валюта заказа
secret = '' # Секретный ключ №1 из настроек магазина
order_id = 'python_order_1' # Идентификатор заказа в Вашей системе
desc = 'Order Payment' # Описание заказа
lang = 'ru' # Язык формы

sign = f':'.join([
    str(merchant_id),
    str(amount),
    str(currency),
    str(secret),
    str(order_id)
])

params = {
    'merchant_id': merchant_id,
    'amount': amount,
    'currency': currency,
    'order_id': order_id,
    'sign': hashlib.sha256(sign.encode('utf-8')).hexdigest(),
    'desc': desc,
    'lang': lang
}

# Выводим ссылку
print("https://aaio.so/merchant/pay?" + urlencode(params))
```


# Редирект клиента с формы оплаты

Редирект с формы оплаты на Ваши URL Успеха и Неудачи выполняется `GET` запросом с параметрами (в формате **form-data**):

<table><thead><tr><th width="169.33333333333331">Параметр</th><th width="128">Тип</th><th>Описание</th></tr></thead><tbody><tr><td>order_id</td><td>string</td><td>Идентификатор заказа в Вашей системе<br></td></tr><tr><td>amount</td><td>float</td><td>Сумма заказа</td></tr><tr><td>currency</td><td>string</td><td>Валюта заказа. <br>Доступные значения: <code>RUB</code>, <code>UAH</code>, <code>EUR</code>, <code>USD</code></td></tr></tbody></table>


# Оповещение об оплате заказа

## Как это работает?

После оплаты заказа мы один раз отправляем **HTTP уведомление** на Ваш **URL Оповещения**.\
**Важно!** Мы не отправляем повторно **HTTP уведомление** в случае неуспешного ответа. Если до Вас уведомление не дошло, в списке заказов будет отображатся ошибка возле статуса заказа <mark style="color:red;">**"HTTP 4xx"**</mark>. **Вы всегда можете самостоятельно отправить уведомление.**\
\
Отправляем уведомление только **POST** запросом с параметрами в формате **form-data (var1=val1\&var2=val2...)**. Отправка уведомления будет выполнена, если у Вашего магазина указан **URL Оповещения**.

> Прежде чем принимать запросы от нашего сервера, убедитесь что наши IP Адреса могут зайти на Ваш сайт.

**Параметры которые мы отправляем:**

<table><thead><tr><th width="198.33333333333331">Параметр</th><th width="117">Тип</th><th>Описание</th></tr></thead><tbody><tr><td>status</td><td>string</td><td><p>Статус заказа. <br><strong>Проверять необязательно!</strong><br></p><p><strong>Может иметь значения:</strong><br><code>success</code> - Оплачен<br><code>hold</code> - Оплачен, но средства в холде<br>Оба статуса означают что заказ успешно оплачен!<br><br><strong>Не у всех методов может сообщать о холде. Это исправляем.</strong></p></td></tr><tr><td>merchant_id</td><td>UUID</td><td>ID Вашего магазина</td></tr><tr><td>invoice_id</td><td>UUID</td><td>ID заказа в нашей системе</td></tr><tr><td>order_id</td><td>string<br>min: 1<br>max: 64</td><td>Идентификатор заказа в Вашей системе</td></tr><tr><td>amount</td><td>float</td><td>Сумма заказа</td></tr><tr><td>currency</td><td>string</td><td>Валюта заказа. <br>Доступные значения: <code>RUB</code>, <code>UAH</code>, <code>EUR</code>, <code>USD</code></td></tr><tr><td>profit</td><td>float</td><td>Сумма зачисленная Вам на баланс в RUB</td></tr><tr><td>commission</td><td>float</td><td>Сумма комиссии магазина в RUB</td></tr><tr><td>commission_client</td><td>float</td><td>Сумма комиссии клиента в RUB</td></tr><tr><td>commission_type</td><td>text</td><td>Формат соотношения: <br><code>Комиссия магазина:Комиссия покупателя</code><br>Пример:<br><code>100:0</code></td></tr><tr><td>sign</td><td>string</td><td>Подпись заказа (<code>SHA256</code> Хеш). <a href="/priem-platezhei/opoveshenie-ob-oplate-zakaza/metodika-formirovaniya-podpisi">Методика формирования подписи в скрипте оповещения</a></td></tr><tr><td>method</td><td>string</td><td>Кодовое название платежной системы (см. с<a href="/prochee/kodovye-nazvaniya-metodov-popolneniya">пособы оплаты</a>)</td></tr><tr><td>desc</td><td>string<br>min: 1<br>max: 512</td><td>Описание заказа</td></tr><tr><td>email</td><td>string</td><td>E-Mail покупателя</td></tr><tr><td>us_key</td><td>string<br>min: 1<br>max: 2056</td><td>Дополнительные параметры с префиксом us_ переданные в форму оплаты</td></tr></tbody></table>

\ <br>


# Методика формирования подписи

Оповещение об оплате заказа

Подпись для скрипта оповещения формируется путем нахождения `SHA256` Хеша от строки:\
"`ID Вашего магазина`**:**`Сумма к оплате`**:**`Валюта`**:**`Секретный ключ №2 из настроек магазина`**:**`Идентификатор заказа в Вашей системе`"


# Пример обработчика на PHP

Оповещение об оплате заказа

```php
<?php
$secret = 'secret2'; // Секретный ключ №2 из настроек магазина
$amount = 100.32; // Сумма заказа
$currency = 'RUB'; // Валюта

if($_SERVER['REQUEST_METHOD'] !== 'POST') {
	die("wrong request method");
}

if($_POST['amount'] < $amount) {
	die("wrong amount");
}

if($_POST['currency'] !== $currency) {
	die("wrong currency");
}

function getIP() {
	$ip = $_SERVER['REMOTE_ADDR'];
		
	if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	}
		
	if(isset($_SERVER['HTTP_X_REAL_IP'])) {
		$ip = $_SERVER['HTTP_X_REAL_IP'];
	}
	
	if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
		$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
	}

	$explode = explode(',', $ip);
		
	if(count($explode) > 1) {
		$ip = $explode[0];
	}
	
	return trim($ip);
}
	
// Проверка на IP адрес сервиса (по желанию)
$ctx = stream_context_create([
	'http' => [
        	'timeout' => 10
    	]
]);

$ips = json_decode(file_get_contents('https://aaio.io/api/public/ips', false, $ctx));
if (isset($ips->list) && !in_array(getIP(), $ips->list)) {
	die("hacking attempt");
}
// Конец проверки на IP адрес сервиса

$sign = hash('sha256', implode(':', [$_POST['merchant_id'], $_POST['amount'], $_POST['currency'], $secret, $_POST['order_id']]));

if (!hash_equals($_POST['sign'], $sign)) {
	die("wrong sign");
}

//Так же, рекомендуется проверять не был ли этот заказ уже оплачен или отменен
//Оплата прошла успешно, можно проводить операцию.

die('OK');
```


# Оповещение о выполнении либо отмене вывода

Добавлено 08.09.2023

## Как это работает?

После <mark style="color:red;">**отмены**</mark> либо <mark style="color:green;">**выполнения**</mark> вывода мы один раз отправляем **HTTP уведомление** на Ваш **URL Оповещения**.\
**Важно!** Мы не отправляем повторно **HTTP уведомление** в случае неуспешного ответа. Если до Вас уведомление не дошло, в списке выводов будет отображатся ошибка возле статуса вывода <mark style="color:red;">**"HTTP 4xx"**</mark>. **Вы всегда можете самостоятельно отправить уведомление.**\
\
Отправляем уведомление только **POST** запросом с параметрами в формате **form-data (var1=val1\&var2=val2...)**. Отправка уведомления будет выполнена, если у Вас в [настройках аккаунта](https://aaio.so/business/api/payoff-webhook) указан **URL Оповещения**, либо Вы указали его при создании вывода в параметре **webhook\_url.**

**Важно!** Отправляем **HTTP уведомление** только по тем заявкам, которые созданы через **API**.

> Прежде чем принимать запросы от нашего сервера, убедитесь что наши IP Адреса могут зайти на Ваш сайт.

**Параметры которые мы отправляем:**

<table><thead><tr><th width="215.33333333333331">Параметр</th><th width="129">Тип</th><th>Описание</th></tr></thead><tbody><tr><td>id</td><td>UUID</td><td>ID вывода средств в нашей системе</td></tr><tr><td>my_id</td><td>string</td><td>ID вывода средств в вашей системе<br><br><strong>Если не указан - передается пустое поле.</strong></td></tr><tr><td>method</td><td>string</td><td>Кодовое название платежной системы</td></tr><tr><td>bank</td><td>string</td><td>Название банка СБП<br><br><strong>Параметр передается если</strong> <code>method = sbp</code></td></tr><tr><td>wallet</td><td>string</td><td>Номер счета/кошелька</td></tr><tr><td>amount</td><td>int / double</td><td>Придёт на счет (в RUB)</td></tr><tr><td>amount_in_currency</td><td>int / double</td><td>Придёт на счет (в валюте)</td></tr><tr><td>amount_currency</td><td>string</td><td>Валюта отправки на счет</td></tr><tr><td>amount_rate</td><td>int / double</td><td>Курс по которому идет расчет к отправке в валюте.<br><br><strong>Параметр передается если валюта отправки не RUB!</strong></td></tr><tr><td>amount_down</td><td>int / double</td><td>Списано с баланса (в RUB)</td></tr><tr><td>commission</td><td>int / double</td><td>Сумма комиcсии (в RUB)</td></tr><tr><td>commission_type</td><td>int</td><td>Тип комиссии:<br><code>0</code> - с суммы платежа<br><code>1</code> - с баланса</td></tr><tr><td>status</td><td>string</td><td>Статус:<br><code>cancel</code> - отменен<br><code>success</code> - выполнен<br><br><strong>Другое состояние вывода не отправляем.</strong></td></tr><tr><td>cancel_message</td><td>string</td><td>Причина отмены вывода.<br><br><strong>Параметр передается если статус</strong> <code>cancel</code></td></tr><tr><td>date</td><td>datetime<br>Y-m-d H:i:s</td><td>Дата создания</td></tr><tr><td>complete_date</td><td>datetime<br>Y-m-d H:i:s</td><td>Дата отмены либо выполнения</td></tr><tr><td>sign</td><td>string</td><td>Подпись (<code>SHA256</code> Хеш). <a href="/vyvod-sredstv/opoveshenie-o-vypolnenii-libo-otmene-vyvoda/metodika-formirovaniya-podpisi">Методика формирования подписи в скрипте оповещения</a></td></tr></tbody></table>

<br>


# Методика формирования подписи

Оповещение о выполнении либо отмене вывода

Подпись для скрипта оповещения формируется путем нахождения `SHA256` Хеша от строки:\
"`ID вывода в нашей системе`**:**`Секретный ключ для проверки подлинности уведомления из настроек аккаунта`**:**`Списано с баланса (в RUB)`


# Пример обработчика на PHP

Оповещение о выполнении либо отмене вывода

```php
<?php
$secret = 'secret_webhook_payoff'; // Секретный ключ для проверки подлинности уведомления из настроек аккаунта

if($_SERVER['REQUEST_METHOD'] !== 'POST') {
	die("wrong request method");
}

if(!in_array(@$_POST['status'], ['cancel', 'success'])) {
	die("wrong status");
}

function getIP() {
	$ip = $_SERVER['REMOTE_ADDR'];
		
	if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	}
		
	if(isset($_SERVER['HTTP_X_REAL_IP'])) {
		$ip = $_SERVER['HTTP_X_REAL_IP'];
	}
	
	if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
		$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
	}

	$explode = explode(',', $ip);
		
	if(count($explode) > 1) {
		$ip = $explode[0];
	}
	
	return trim($ip);
}
	
// Проверка на IP адрес сервиса (по желанию)
$ctx = stream_context_create([
	'http' => [
		'timeout' => 10
    	]
]);

$ips = json_decode(file_get_contents('https://aaio.io/api/public/ips', false, $ctx));
if (isset($ips->list) && !in_array(getIP(), $ips->list)) {
	die("hacking attempt");
}
// Конец проверки на IP адрес сервиса

$sign = hash('sha256', implode(':', [$_POST['id'], $secret, $_POST['amount_down']]));

if (!hash_equals($_POST['sign'], $sign)) {
	die("wrong sign");
}

// Код который необходимо выполнить на Вашей стороне

die('OK');
```


# Получение баланса

API для бизнеса

## Запрос

<mark style="color:blue;">`GET`</mark> / <mark style="color:green;">`POST`</mark>  `https://aaio.so/api/balance`

### Заголовки

`Accept: application/json` <mark style="color:red;">**\***</mark>\
`X-Api-Key: {api_key}` <mark style="color:red;">**\***</mark>

#### Определения

`{api_key}` - Ключ API из раздела <https://aaio.so/business/api/keys> с разрешениями:\ <mark style="color:green;">Получение методов пополнения и вывода</mark>\
\ <mark style="color:red;">**\***</mark>**&#x20;- обязательные заголовки. Без них Вы не сможете получить корректный ответ.**

## Примеры ответа

**Формат ответа** `application/json`

{% tabs %}
{% tab title="Успех - 200" %}

```json
{
    "type": "success",
    "balance": 1592.03, // Доступный основной баланс к выводу
    "referral": 346.49, // Доступный реферальный баланс для вывода на основной баланс
    "hold": 0 // Замороженный баланс
}
```

{% endtab %}

{% tab title="Ошибка: 400, 401, 429, 500, 503  " %}
**Пользовательские коды ошибок** - `400`, `401`, `429`\
**Серверные коды ошибок** - `500`, `503`

```json
{
  "type": "fail",
  "code": "400",
  "message": "message"
}
```

{% endtab %}

{% tab title="Другой код ответа" %}
Если код ответа другой, то возможна проблема на стороне сервера API. \
**Рекомендуем учитывать такие ситуации в коде.**
{% endtab %}
{% endtabs %}

## Готовые примеры запроса

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X 'GET' \
'https://aaio.so/api/balance' \
-H 'accept: application/json' \
-H 'x-api-key: API_KEY'
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$api_key = ''; // Ключ API из раздела https://aaio.so/cabinet/api

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://aaio.so/api/balance');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    	'Accept: application/json',
	'X-Api-Key: ' . $api_key
]);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); // Таймаут подключения к нашему серверу
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Таймаут обработки запроса

$result = curl_exec($ch); // Ответ
$http_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); // Код ответа

if (curl_errno($ch)) {
	die('Connect error:' . curl_error($ch)); // Вывод ошибки соединения
}
curl_close($ch);

if(!in_array($http_code, [200, 400, 401])) {
	die('Response code: ' . $http_code); // Вывод неизвестного кода ответа
}

$decoded = json_decode($result, true); // Парсинг результа. На выходе получаем массив данных

if(json_last_error() !== JSON_ERROR_NONE) {
	die('Не удалось пропарсить ответ');
}

if($decoded['type'] == 'success') {
	print_r($decoded); // Вывод результата
} else {
	die('Ошибка: ' . $decoded['message']); // Вывод ошибки
}
```

{% endtab %}

{% tab title="Python" %}

```python
import requests, sys
from requests.exceptions import ConnectTimeout, ReadTimeout

url = 'https://aaio.so/api/balance'
api_key = '' # Ключ API из раздела https://aaio.so/cabinet/api

headers = {
    'Accept': 'application/json',
    'X-Api-Key': api_key
}

try:
    response = requests.post(url, headers=headers, timeout=(15, 60))
except ConnectTimeout:
    print('ConnectTimeout') # Не хватило времени на подключение к сайту
    sys.exit()
except ReadTimeout:
    print('ReadTimeout') # Не хватило времени на выполнение запроса
    sys.exit()

if(response.status_code in [200, 400, 401]):
    try:
        response_json = response.json() # Парсинг результата
    except:
        print('Не удалось пропарсить ответ')
        sys.exit()

    if(response_json['type'] == 'success'):
        print(response_json) # Вывод результата
    else:
        print('Ошибка: ' + response_json['message']) # Вывод ошибки
else:
    print('Response code: ' + str(response.status_code)) # Вывод неизвестного кода ответа

```

{% endtab %}
{% endtabs %}


# Вывод средств

API для бизнеса

## Запрос

<mark style="color:green;">`POST`</mark>  `https://aaio.so/api/create-payoff`

### Заголовки

`Accept: application/json` <mark style="color:red;">**\***</mark>\
`Content-Type: application/x-www-form-urlencoded` <mark style="color:red;">**\***</mark>\
`X-Api-Key: {api_key}` <mark style="color:red;">**\***</mark>

#### Определения

`{api_key}` - Ключ API из раздела <https://aaio.so/business/api/keys> с разрешениями:\ <mark style="color:green;">Вывод средств</mark>\
\ <mark style="color:red;">**\***</mark>**&#x20;- обязательные заголовки. Без них Вы не сможете получить корректный ответ.**

### Параметры <mark style="color:red;">(url-encoded)</mark>

<table><thead><tr><th width="227">name</th><th width="117">type</th><th>description</th></tr></thead><tbody><tr><td>my_id</td><td>string</td><td>ID вывода средств в Вашей системе</td></tr><tr><td>wallet <mark style="color:red;"><strong>*</strong></mark></td><td>string</td><td>Номер счета/кошелька в допустимом формате (без пробелов и разделителей)</td></tr><tr><td>amount <mark style="color:red;"><strong>*</strong></mark></td><td>double / int</td><td>Сумма вывода в RUB</td></tr><tr><td>method <mark style="color:red;"><strong>*</strong></mark></td><td>string</td><td>Кодовое название доступной платежной системы для вывода <a href="/prochee/kodovye-nazvaniya-metodov-vyvoda">(см. способы вывода средств)</a></td></tr><tr><td>commission_type</td><td>int</td><td>Комиссия: <br><code>0</code> - с суммы платежа (по умолчанию) <br><code>1</code> - с баланса</td></tr><tr><td>bank</td><td>int</td><td>Код банка СБП<br><strong>Поле обязательное при методе</strong> <code>sbp</code><br><br> <a href="/api/banki-dlya-vyvoda-sredstv-na-sbp">(банки для вывода средств на СБП)</a></td></tr><tr><td>mobile_operator</td><td>string</td><td>Кодовое название мобильного оператора.<br><strong>Поле обязательное при методе</strong> <code>mobile_ru</code><br><br><code>beeline_ru</code> - Билайн<br><code>tele2</code> - Tele2<br><code>mts_ru</code> - МТС<br><code>megafon_ru</code> - Мегафон</td></tr><tr><td>webhook_url</td><td>url</td><td>Webhook URL для отправки оповещения о выполнении либо отмене вывода.<br><br>Данный URL будет использоваться вместо того что указан в настройках аккаунта если вы укажите его в параметре.</td></tr></tbody></table>

<mark style="color:red;">Обратите внимание!</mark> Параметры передаются в формате `application/x-www-form-urlencoded`

## Примеры ответа

**Формат ответа** `application/json`

{% tabs %}
{% tab title="Успех - 200" %}
Пример если к отправке будет валюта USD, USDT, BTC, UAH:

```json
{
	"type": "success",
	"id": "52a16aea-d308-11ed-afa1-0242ac120002", // ID Вывода средств в нашей системе
	"my_id": "my_id_123", // ID Вывода средств в Вашей системе
	"method": "tether_trc20", // Кодовое название платежной системы
	"wallet": "*********", // Номер счета/кошелька
	"amount": 485, // Придёт на счет (в RUB)
	"amount_in_currency": 5, // Придёт на счет (в валюте)
	"amount_currency": "USDT", // Валюта отправки на счет
	"amount_rate": 96.92, // Курс конвертации
	"amount_down": 500, // Списано с баланса (в RUB)
	"commission": 15, // Сумма комиссии (в RUB)
	"commission_type": 0, // Тип комиссии
	"status": "in_process" // Статус (in_process - в процессе, cancel - отменено, success - выполнено)
}
```

Пример если к отправке будет валюта RUB:

```json
{
	"type": "success",
	"id": "52a16aea-d308-11ed-afa1-0242ac120002", // ID Вывода средств в нашей системе
	"my_id": "my_id_123", // ID Вывода средств в Вашей системе
	"method": "qiwi", // Кодовое название платежной системы
	"wallet": "*********", // Номер счета/кошелька
	"amount": 485, // Придёт на счет (в RUB)
	"amount_in_currency": 485, // Придёт на счет (в валюте)
	"amount_currency": "RUB", // Валюта отправки на счет
	"amount_down": 500, // Списано с баланса (в RUB)
	"commission": 15, // Сумма комисии (в RUB)
	"commission_type": 0, // Тип комиссии
	"status": "in_process" // Статус (in_process - в процессе, cancel - отменено, success - выполнено)
}
```

{% endtab %}

{% tab title="Ошибка: 400, 401, 429, 500, 503  " %}
**Пользовательские коды ошибок** - `400`, `401`, `429`\
**Серверные коды ошибок** - `500`, `503`

```json
{
  "type": "fail",
  "code": "400",
  "message": "message"
}
```

{% endtab %}

{% tab title="Другой код ответа" %}
Если код ответа другой, то возможна проблема на стороне сервера API. \
**Рекомендуем учитывать такие ситуации в коде.**
{% endtab %}
{% endtabs %}

## Готовые примеры запроса

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X 'POST' \
'https://aaio.so/api/create-payoff' \
-H 'accept: application/json' \
-H 'x-api-key: API_KEY' \
-d 'my_id=my_id_123' \
-d 'method=tether_trc20' \
-d 'amount=500' \
-d 'commission_type=0' \
-d 'wallet=*********'
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$api_key = ''; // Ключ API из раздела https://aaio.so/cabinet/api
$my_id = 'my_id_123'; // ID вывода средств в Вашей системе
$method = 'tether_trc20'; // Кодовое название платежной системы
$amount = 500; // Сумма вывода
$wallet = '*********'; // Номер счета/кошелька
$commission_type = 0; // Тип комиссии

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://aaio.so/api/create-payoff');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    	'Accept: application/json',
	'X-Api-Key: ' . $api_key
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
	'my_id' => $my_id,
	'method' => $method,
	'amount' => $amount,
	'wallet' => $wallet,
	'commission_type' => $commission_type
]));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); // Таймаут подключения к нашему серверу
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Таймаут обработки запроса

$result = curl_exec($ch); // Ответ
$http_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); // Код ответа

if (curl_errno($ch)) {
	die('Connect error:' . curl_error($ch)); // Вывод ошибки соединения
}
curl_close($ch);

if(!in_array($http_code, [200, 400, 401])) {
	die('Response code: ' . $http_code); // Вывод неизвестного кода ответа
}

$decoded = json_decode($result, true); // Парсинг результа. На выходе получаем массив данных

if(json_last_error() !== JSON_ERROR_NONE) {
	die('Не удалось пропарсить ответ');
}

if($decoded['type'] == 'success') {
	print_r($decoded); // Вывод результата
} else {
	die('Ошибка: ' . $decoded['message']); // Вывод ошибки
}
```

{% endtab %}

{% tab title="Python" %}

```python
import requests, sys
from requests.exceptions import ConnectTimeout, ReadTimeout

url = 'https://aaio.so/api/create-payoff'
api_key = '' # Ключ API из раздела https://aaio.so/cabinet/api
my_id = 'my_id_123' # ID вывода средств в Вашей системе
method = 'tether_trc20' # Кодовое название платежной системы
amount = 500; # Сумма вывода
wallet = '' # Номер счета/кошелька
commission_type = 0 # Тип комиссии

params = {
    'my_id': my_id,
    'method': method,
    'amount': amount,
    'wallet': wallet,
    'commission_type': commission_type,
}

headers = {
    'Accept': 'application/json',
    'X-Api-Key': api_key
}

try:
    response = requests.post(url, data=params, headers=headers, timeout=(15, 60))
except ConnectTimeout:
    print('ConnectTimeout') # Не хватило времени на подключение к сайту
    sys.exit()
except ReadTimeout:
    print('ReadTimeout') # Не хватило времени на выполнение запроса
    sys.exit()

if(response.status_code in [200, 400, 401]):
    try:
        response_json = response.json() # Парсинг результата
    except:
        print('Не удалось пропарсить ответ')
        sys.exit()

    if(response_json['type'] == 'success'):
        print(response_json) # Вывод результата
    else:
        print('Ошибка: ' + response_json['message']) # Вывод ошибки
else:
    print('Response code: ' + str(response.status_code)) # Вывод неизвестного кода ответа

```

{% endtab %}
{% endtabs %}


# Курс валют при выводе средств

API для бизнеса

## Запрос

<mark style="color:blue;">`GET`</mark> / <mark style="color:green;">`POST`</mark>  `https://aaio.so/api/rates-payoff`

### Заголовки

`Accept: application/json` <mark style="color:red;">**\***</mark>\
`X-Api-Key: {api_key}` <mark style="color:red;">**\***</mark>

#### Определения

`{api_key}` - Ключ API из раздела <https://aaio.so/business/api/keys> с разрешениями:\ <mark style="color:green;">Вывод средств</mark>\
\ <mark style="color:red;">**\***</mark>**&#x20;- обязательные заголовки. Без них Вы не сможете получить корректный ответ.**

## Примеры ответа

**Формат ответа** `application/json`

{% tabs %}
{% tab title="Успех - 200" %}

```json
{
    "type": "success",
    "USD": 96.54, // Курс USD
    "UAH": 3.56, // Курс UAH
    "USDT": 96.93, // Курс USDT
    "BTC": 2712968 // Курс BTC
}
```

{% endtab %}

{% tab title="Ошибка: 400, 401, 429, 500, 503  " %}
**Пользовательские коды ошибок** - `400`, `401`, `429`\
**Серверные коды ошибок** - `500`, `503`

```json
{
  "type": "fail",
  "code": "400",
  "message": "message"
}
```

{% endtab %}

{% tab title="Другой код ответа" %}
Если код ответа другой, то возможна проблема на стороне сервера API. \
**Рекомендуем учитывать такие ситуации в коде.**
{% endtab %}
{% endtabs %}

## Готовые примеры запроса

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X 'GET' \
'https://aaio.so/api/rates-payoff' \
-H 'accept: application/json' \
-H 'x-api-key: API_KEY'
```

{% endtab %}
{% endtabs %}


# Банки для вывода средств на СБП

API для бизнеса

## Запрос

<mark style="color:blue;">`GET`</mark> / <mark style="color:green;">`POST`</mark>  `https://aaio.so/api/sbp-banks-payoff`

### Заголовки

`Accept: application/json` <mark style="color:red;">**\***</mark>\
`X-Api-Key: {api_key}` <mark style="color:red;">**\***</mark>

#### Определения

`{api_key}` - Ключ API из раздела <https://aaio.so/business/api/keys> с разрешениями:\ <mark style="color:green;">Вывод средств</mark>\
\ <mark style="color:red;">**\***</mark>**&#x20;- обязательные заголовки. Без них Вы не сможете получить корректный ответ.**

## Примеры ответа

**Формат ответа** `application/json`

{% tabs %}
{% tab title="Успех - 200" %}

```json
{
    "type": "success",
    "list": [
        {
            "bankId": "100000000199", // Код банка, который необходим при создании Вывода
            "bankName": "ИШБАНК" // Название банка
        }
    ]
}
```

{% endtab %}

{% tab title="Ошибка: 400, 401, 429, 500, 503  " %}
**Пользовательские коды ошибок** - `400`, `401`, `429`\
**Серверные коды ошибок** - `500`, `503`

```json
{
  "type": "fail",
  "code": "400",
  "message": "message"
}
```

{% endtab %}

{% tab title="Другой код ответа" %}
Если код ответа другой, то возможна проблема на стороне сервера API. \
**Рекомендуем учитывать такие ситуации в коде.**
{% endtab %}
{% endtabs %}

## Готовые примеры запроса

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X 'GET' \
'https://aaio.so/api/sbp-banks-payoff' \
-H 'accept: application/json' \
-H 'x-api-key: API_KEY'
```

{% endtab %}
{% endtabs %}


# Информация о заявке на вывод средств

API для бизнеса

## Запрос

<mark style="color:blue;">`GET`</mark> / <mark style="color:green;">`POST`</mark>  `https://aaio.so/api/info-payoff`

### Заголовки

`Accept: application/json` <mark style="color:red;">**\***</mark>\
`Content-Type: application/x-www-form-urlencoded` <mark style="color:red;">**\***</mark>\
`X-Api-Key: {api_key}` <mark style="color:red;">**\***</mark>

#### Определения

`{api_key}` - Ключ API из раздела <https://aaio.so/business/api/keys> с разрешениями:\ <mark style="color:green;">Информация про вывод средств</mark>\
\ <mark style="color:red;">**\***</mark>**&#x20;- обязательные заголовки. Без них Вы не сможете получить корректный ответ.**

### Параметры <mark style="color:red;">(url-encoded)</mark>

<table><thead><tr><th width="160">name</th><th width="91">type</th><th>description</th></tr></thead><tbody><tr><td>my_id <mark style="color:red;"><strong>*</strong></mark></td><td>string</td><td>Идентификатор вывода в Вашей системе</td></tr><tr><td>id <mark style="color:red;"><strong>*</strong></mark></td><td>uuid</td><td>Идентификатор вывода в нашей системе</td></tr><tr><td></td><td></td><td>Поиск можно выполнить с одним из выше перечисленных параметров. <br><code>id</code> в приоритете если указаны оба значения.</td></tr></tbody></table>

<mark style="color:red;">Обратите внимание!</mark> Параметры передаются в формате `application/x-www-form-urlencoded`

## Примеры ответа

**Формат ответа** `application/json`

{% tabs %}
{% tab title="Успех - 200" %}

```json
{
	"type": "success",
	"id": "52a16aea-d308-11ed-afa1-0242ac120002", // ID Вывода средств в нашей системе
	"my_id": "my_id_123", // ID Вывода средств в Вашей системе
	"method": "tether_trc20", // Кодовое название платежной системы
	"bank": "", // Название банка СБП (передается только при методе sbp)
	"phone_operator": "", // Кодовое название оператора (передается только при методе mobile_ru)
	"wallet": "*********", // Номер счета/кошелька
	"amount": 485.00, // Придёт на счет (в RUB)
	"amount_down": 500.00, // Списано с баланса (в RUB)
	"commission": 15.00, // Сумма комиссии (в RUB)
	"commission_type": 0, // Тип комиссии
	"status": "success", // Статус (in_process - в процессе, cancel - отменено, success - выполнено)
	"cancel_message": "", // Причина отмены (отображается только при статусе cancel)
	"date": "2023-03-10 17:08:42", // Дата создания
	"complete_date": "2023-03-10 17:09:21" // Дата отмены либо выполнения (отображается только при статусе cancel и success)
}
```

{% endtab %}

{% tab title="Ошибка: 400, 401, 429, 500, 503  " %}
**Пользовательские коды ошибок** - `400`, `401`, `429`\
**Серверные коды ошибок** - `500`, `503`

```json
{
  "type": "fail",
  "code": "400",
  "message": "message"
}
```

{% endtab %}

{% tab title="Другой код ответа" %}
Если код ответа другой, то возможна проблема на стороне сервера API. \
**Рекомендуем учитывать такие ситуации в коде.**
{% endtab %}
{% endtabs %}

## Готовые примеры запроса

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X 'POST' \
'https://aaio.so/api/info-payoff' \
-H 'accept: application/json' \
-H 'x-api-key: API_KEY' \
-d 'my_id=my_id_123'
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$api_key = ''; // Ключ API из раздела https://aaio.so/cabinet/api
$my_id = 'my_id_123'; // ID вывода средств в Вашей системе 

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://aaio.so/api/info-payoff');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    	'Accept: application/json',
	'X-Api-Key: ' . $api_key
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
	'my_id' => $my_id
]));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); // Таймаут подключения к нашему серверу
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Таймаут обработки запроса

$result = curl_exec($ch); // Ответ
$http_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); // Код ответа

if (curl_errno($ch)) {
	die('Connect error:' . curl_error($ch)); // Вывод ошибки соединения
}
curl_close($ch);

if(!in_array($http_code, [200, 400, 401])) {
	die('Response code: ' . $http_code); // Вывод неизвестного кода ответа
}

$decoded = json_decode($result, true); // Парсинг результа. На выходе получаем массив данных

if(json_last_error() !== JSON_ERROR_NONE) {
	die('Не удалось пропарсить ответ');
}

if($decoded['type'] == 'success') {
	print_r($decoded); // Вывод результата
} else {
	die('Ошибка: ' . $decoded['message']); // Вывод ошибки
}
```

{% endtab %}

{% tab title="Python" %}

```python
import requests, sys
from requests.exceptions import ConnectTimeout, ReadTimeout

url = 'https://aaio.so/api/info-payoff'
api_key = '' # Ключ API из раздела https://aaio.so/cabinet/api
my_id = 'my_id_123' # ID вывода средств в Вашей системе 

params = {
    'my_id': my_id
}

headers = {
    'Accept': 'application/json',
    'X-Api-Key': api_key
}

try:
    response = requests.post(url, data=params, headers=headers, timeout=(15, 60))
except ConnectTimeout:
    print('ConnectTimeout') # Не хватило времени на подключение к сайту
    sys.exit()
except ReadTimeout:
    print('ReadTimeout') # Не хватило времени на выполнение запроса
    sys.exit()

if(response.status_code in [200, 400, 401]):
    try:
        response_json = response.json() # Парсинг результата
    except:
        print('Не удалось пропарсить ответ')
        sys.exit()

    if(response_json['type'] == 'success'):
        print(response_json) # Вывод результата
    else:
        print('Ошибка: ' + response_json['message']) # Вывод ошибки
else:
    print('Response code: ' + str(response.status_code)) # Вывод неизвестного кода ответа
```

{% endtab %}
{% endtabs %}


# Информация о заказе

API для бизнеса

## Запрос

<mark style="color:blue;">`GET`</mark> / <mark style="color:green;">`POST`</mark>  `https://aaio.so/api/info-pay`

### Заголовки

`Accept: application/json` <mark style="color:red;">**\***</mark>\
`Content-Type: application/x-www-form-urlencoded` <mark style="color:red;">**\***</mark>\
`X-Api-Key: {api_key}` <mark style="color:red;">**\***</mark>

#### Определения

`{api_key}` - Ключ API из раздела <https://aaio.so/business/api/keys> с разрешениями:\ <mark style="color:green;">Информация об созданном счете</mark>\
\ <mark style="color:red;">**\***</mark>**&#x20;- обязательные заголовки. Без них Вы не сможете получить корректный ответ.**

### Параметры <mark style="color:red;">(url-encoded)</mark>

<table><thead><tr><th width="160">name</th><th width="91">type</th><th>description</th></tr></thead><tbody><tr><td>order_id <mark style="color:red;"><strong>*</strong></mark></td><td>string</td><td>Идентификатор заказа в Вашей системе</td></tr><tr><td>merchant_id <mark style="color:red;"><strong>*</strong></mark></td><td>uuid</td><td>ID Вашего магазина</td></tr></tbody></table>

<mark style="color:red;">Обратите внимание!</mark> Параметры передаются в формате `application/x-www-form-urlencoded`

## Примеры ответа

**Формат ответа** `application/json`

{% tabs %}
{% tab title="Успех - 200" %}

```json
{
	"type": "success",
	"id": "48ebfc18-e6c7-11ed-a05b-0242ac120003", // ID заказа в нашей системе
	"order_id": "my_id_123", // Идентификатор заказа в Вашей системе
	"desc": "Описание заказа",
	"merchant_id": "f56b279c-d250-11ed-afa1-0242ac120002", // ID Вашего магазина
	"merchant_domain": "aaio.io", // Домен Вашего магазина
	"method": "tether_trc20", // Кодовое название платежной системы если указано
	"amount": 500, // Сумма в валюте платежа
	"currency": "RUB", // Валюта платежа
	"profit": 485, // Сумма зачисления на баланс (в RUB), отображается если указан метод
	"commission": 15, // Комиссия магазина (в RUB), отображается если указан метод
	"commission_client": 0, // Комиссия клиента (в RUB), отображается если указан метод
	"commission_type": "100:0", // Тип комиссии в соотношении (Комиссия магазина:Комиссия покупателя)
	"email": "example@domain.com", // Почта отображается если указана
	"status": "success", // Статус (in_process - в процессе, success - оплачен, expired - истек, hold - оплачен, средства заморожены)
	"date": "2023-03-10 17:08:42", // Дата создания
	"expired_date": "2023-03-11 17:09:21", // Дата до которой необходимо оплатить заказ
	"complete_date": "2023-03-10 17:09:21", // Дата выполнения (отображается только при статусе success)
	"us_vars": [] // Пользовательские значения
}
```

{% endtab %}

{% tab title="Ошибка: 400, 401, 429, 500, 503  " %}
**Пользовательские коды ошибок** - `400`, `401`, `429`\
**Серверные коды ошибок** - `500`, `503`

```json
{
  "type": "fail",
  "code": "400",
  "message": "message"
}
```

{% endtab %}

{% tab title="Другой код ответа" %}
Если код ответа другой, то возможна проблема на стороне сервера API. \
**Рекомендуем учитывать такие ситуации в коде.**
{% endtab %}
{% endtabs %}

## Готовые примеры запроса

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X 'POST' \
'https://aaio.so/api/info-pay' \
-H 'accept: application/json' \
-H 'x-api-key: API_KEY' \
-d 'merchant_id=f56b279c-d250-11ed-afa1-0242ac120002' \
-d 'order_id=my_id_123'
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$api_key = ''; // Ключ API из раздела https://aaio.io/cabinet/api
$merchant_id = 'f56b279c-d250-11ed-afa1-0242ac120002'; // ID Вашего магазина
$order_id = 'my_id_123'; // Идентификатор заказа в Вашей системе

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://aaio.so/api/info-pay');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    	'Accept: application/json',
	'X-Api-Key: ' . $api_key
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
	'merchant_id' => $merchant_id,
	'order_id' => $order_id
]));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); // Таймаут подключения к нашему серверу
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Таймаут обработки запроса

$result = curl_exec($ch); // Ответ
$http_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); // Код ответа

if (curl_errno($ch)) {
	die('Connect error:' . curl_error($ch)); // Вывод ошибки соединения
}
curl_close($ch);

if(!in_array($http_code, [200, 400, 401])) {
	die('Response code: ' . $http_code); // Вывод неизвестного кода ответа
}

$decoded = json_decode($result, true); // Парсинг результа. На выходе получаем массив данных

if(json_last_error() !== JSON_ERROR_NONE) {
	die('Не удалось пропарсить ответ');
}

if($decoded['type'] == 'success') {
	print_r($decoded); // Вывод результата
} else {
	die('Ошибка: ' . $decoded['message']); // Вывод ошибки
}
```

{% endtab %}

{% tab title="Python" %}

```python
import requests, sys
from requests.exceptions import ConnectTimeout, ReadTimeout

url = 'https://aaio.so/api/info-pay'
api_key = '' # Ключ API из раздела https://aaio.io/cabinet/api
merchant_id = 'f56b279c-d250-11ed-afa1-0242ac120002' # ID Вашего магазина
order_id = 'my_id_123' # Идентификатор заказа в Вашей системе

params = {
    'merchant_id': merchant_id,
    'order_id': order_id
}

headers = {
    'Accept': 'application/json',
    'X-Api-Key': api_key
}

try:
    response = requests.post(url, data=params, headers=headers, timeout=(15, 60))
except ConnectTimeout:
    print('ConnectTimeout') # Не хватило времени на подключение к сайту
    sys.exit()
except ReadTimeout:
    print('ReadTimeout') # Не хватило времени на выполнение запроса
    sys.exit()

if(response.status_code in [200, 400, 401]):
    try:
        response_json = response.json() # Парсинг результата
    except:
        print('Не удалось пропарсить ответ')
        sys.exit()

    if(response_json['type'] == 'success'):
        print(response_json) # Вывод результата
    else:
        print('Ошибка: ' + response_json['message']) # Вывод ошибки
else:
    print('Response code: ' + str(response.status_code)) # Вывод неизвестного кода ответа
```

{% endtab %}
{% endtabs %}


# Доступные методы для вывода средств

API для бизнеса

## Запрос

<mark style="color:blue;">`GET`</mark> / <mark style="color:green;">`POST`</mark>  `https://aaio.so/api/methods-payoff`

### Заголовки

`Accept: application/json` <mark style="color:red;">**\***</mark>\
`X-Api-Key: {api_key}` <mark style="color:red;">**\***</mark>

#### Определения

`{api_key}` - Ключ API из раздела <https://aaio.so/business/api/keys> с разрешениями:\ <mark style="color:green;">Получение методов пополнения и вывода</mark>\
\ <mark style="color:red;">**\***</mark>**&#x20;- обязательные заголовки. Без них Вы не сможете получить корректный ответ.**

## Примеры ответа

**Формат ответа** `application/json`

{% tabs %}
{% tab title="Успех - 200" %}

```json
{
    "type": "success",
    "list": {
        "tether_trc20": { // Кодовое название метода
            "name": "Tether TRC-20", // Название метода
            "min": 500, // Минимальная сумма к отправке в рублях
            "max": 40000, // Максимальная сумма к отправке в рублях
            "commission_percent": 3, // Процент комиссии
            "commission_sum": 0 // Сумма фиксированной комиссии в рублях
        }
    }
}
```

{% endtab %}

{% tab title="Ошибка: 400, 401, 429, 500, 503  " %}
**Пользовательские коды ошибок** - `400`, `401`, `429`\
**Серверные коды ошибок** - `500`, `503`

```json
{
  "type": "fail",
  "code": "400",
  "message": "message"
}
```

{% endtab %}

{% tab title="Другой код ответа" %}
Если код ответа другой, то возможна проблема на стороне сервера API. \
**Рекомендуем учитывать такие ситуации в коде.**
{% endtab %}
{% endtabs %}

## Готовые примеры запроса

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X 'POST' \
'https://aaio.so/api/methods-payoff' \
-H 'accept: application/json' \
-H 'x-api-key: API_KEY'
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$api_key = ''; // Ключ API из раздела https://aaio.so/cabinet/api

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://aaio.so/api/methods-payoff');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    	'Accept: application/json',
	'X-Api-Key: ' . $api_key
]);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); // Таймаут подключения к нашему серверу
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Таймаут обработки запроса

$result = curl_exec($ch); // Ответ
$http_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); // Код ответа

if (curl_errno($ch)) {
	die('Connect error:' . curl_error($ch)); // Вывод ошибки соединения
}
curl_close($ch);

if(!in_array($http_code, [200, 400, 401])) {
	die('Response code: ' . $http_code); // Вывод неизвестного кода ответа
}

$decoded = json_decode($result, true); // Парсинг результа. На выходе получаем массив данных

if(json_last_error() !== JSON_ERROR_NONE) {
	die('Не удалось пропарсить ответ');
}

if($decoded['type'] == 'success') {
	print_r($decoded); // Вывод результата
} else {
	die('Ошибка: ' . $decoded['message']); // Вывод ошибки
}
```

{% endtab %}

{% tab title="Python" %}

```python
import requests, sys
from requests.exceptions import ConnectTimeout, ReadTimeout

url = 'https://aaio.so/api/methods-payoff'
api_key = '' # Ключ API из раздела https://aaio.so/cabinet/api

headers = {
    'Accept': 'application/json',
    'X-Api-Key': api_key
}

try:
    response = requests.post(url, headers=headers, timeout=(15, 60))
except ConnectTimeout:
    print('ConnectTimeout') # Не хватило времени на подключение к сайту
    sys.exit()
except ReadTimeout:
    print('ReadTimeout') # Не хватило времени на выполнение запроса
    sys.exit()

if(response.status_code in [200, 400, 401]):
    try:
        response_json = response.json() # Парсинг результата
    except:
        print('Не удалось пропарсить ответ')
        sys.exit()

    if(response_json['type'] == 'success'):
        print(response_json) # Вывод результата
    else:
        print('Ошибка: ' + response_json['message']) # Вывод ошибки
else:
    print('Response code: ' + str(response.status_code)) # Вывод неизвестного кода ответа
```

{% endtab %}
{% endtabs %}


# Доступные методы для создания заказа

API для бизнеса

## Запрос

<mark style="color:blue;">`GET`</mark> / <mark style="color:green;">`POST`</mark>  `https://aaio.so/api/methods-pay`

### Заголовки

`Accept: application/json` <mark style="color:red;">**\***</mark>\
`Content-Type: application/x-www-form-urlencoded` <mark style="color:red;">**\***</mark>\
`X-Api-Key: {api_key}` <mark style="color:red;">**\***</mark>

#### Определения

`{api_key}` - Ключ API из раздела <https://aaio.so/business/api/keys> с разрешениями:\ <mark style="color:green;">Получение методов пополнения и вывода</mark>\
\ <mark style="color:red;">**\***</mark>**&#x20;- обязательные заголовки. Без них Вы не сможете получить корректный ответ.**

### Параметры <mark style="color:red;">(url-encoded)</mark>

<table><thead><tr><th width="159">name</th><th width="91">type</th><th>description</th></tr></thead><tbody><tr><td>merchant_id <mark style="color:red;"><strong>*</strong></mark></td><td>uuid</td><td>ID Вашего магазина</td></tr></tbody></table>

<mark style="color:red;">Обратите внимание!</mark> Параметры передаются в формате `application/x-www-form-urlencoded`

## Примеры ответа

**Формат ответа** `application/json`

{% tabs %}
{% tab title="Успех - 200" %}

```json
{
    "type": "success",
    "list": {
        "tether_trc20": { // Кодовое название метода
            "name": "Tether TRC-20", // Название метода
            "min": { // Минимальная сумма для каждой валюты
                "RUB": 410,
                "UAH": 169,
                "USD": 6,
                "EUR": 5
            },
            "max": { // Максимальная сумма для каждой валюты
                "RUB": 25000,
                "UAH": 10246,
                "USD": 312,
                "EUR": 287
            },
            "commission_percent": 3, // Общий процент комиссии
            "commission_user_percent": 3, // Процент комиссии на покупателе
            "commission_merchant_percent": 0, // Процент комиссии на магазине
            "commission_type": "0:100" // Процентное соотношение комиссии в формате "Комиссия магазина:Комиссия покупателя"
        }
    }
}
```

{% endtab %}

{% tab title="Ошибка: 400, 401, 429, 500, 503  " %}
**Пользовательские коды ошибок** - `400`, `401`, `429`\
**Серверные коды ошибок** - `500`, `503`

```json
{
  "type": "fail",
  "code": "400",
  "message": "message"
}
```

{% endtab %}

{% tab title="Другой код ответа" %}
Если код ответа другой, то возможна проблема на стороне сервера API. \
**Рекомендуем учитывать такие ситуации в коде.**
{% endtab %}
{% endtabs %}

## Готовые примеры запроса

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X 'POST' \
'https://aaio.so/api/methods-pay' \
-H 'accept: application/json' \
-H 'x-api-key: API_KEY' \
-d 'merchant_id=f56b279c-d250-11ed-afa1-0242ac120002'
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$api_key = ''; // Ключ API из раздела https://aaio.so/cabinet/api
$merchant_id = 'f56b279c-d250-11ed-afa1-0242ac120002'; // ID Вашего магазина

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://aaio.so/api/methods-pay');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
   	'Accept: application/json',
	'X-Api-Key: ' . $api_key
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
	'merchant_id' => $merchant_id
]));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); // Таймаут подключения к нашему серверу
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Таймаут обработки запроса

$result = curl_exec($ch); // Ответ
$http_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); // Код ответа

if (curl_errno($ch)) {
	die('Connect error:' . curl_error($ch)); // Вывод ошибки соединения
}
curl_close($ch);

if(!in_array($http_code, [200, 400, 401])) {
	die('Response code: ' . $http_code); // Вывод неизвестного кода ответа
}

$decoded = json_decode($result, true); // Парсинг результа. На выходе получаем массив данных

if(json_last_error() !== JSON_ERROR_NONE) {
	die('Не удалось пропарсить ответ');
}

if($decoded['type'] == 'success') {
	print_r($decoded); // Вывод результата
} else {
	die('Ошибка: ' . $decoded['message']); // Вывод ошибки
}
```

{% endtab %}

{% tab title="Python" %}

```python
import requests, sys
from requests.exceptions import ConnectTimeout, ReadTimeout

url = 'https://aaio.so/api/methods-pay'
api_key = '' # Ключ API из раздела https://aaio.so/cabinet/api
merchant_id = 'f56b279c-d250-11ed-afa1-0242ac120002' # ID Вашего магазина

params = {
    'merchant_id': merchant_id
}

headers = {
    'Accept': 'application/json',
    'X-Api-Key': api_key
}

try:
    response = requests.post(url, data=params, headers=headers, timeout=(15, 60))
except ConnectTimeout:
    print('ConnectTimeout') # Не хватило времени на подключение к сайту
    sys.exit()
except ReadTimeout:
    print('ReadTimeout') # Не хватило времени на выполнение запроса
    sys.exit()

if(response.status_code in [200, 400, 401]):
    try:
        response_json = response.json() # Парсинг результата
    except:
        print('Не удалось пропарсить ответ')
        sys.exit()

    if(response_json['type'] == 'success'):
        print(response_json) # Вывод результата
    else:
        print('Ошибка: ' + response_json['message']) # Вывод ошибки
else:
    print('Response code: ' + str(response.status_code)) # Вывод неизвестного кода ответа
```

{% endtab %}
{% endtabs %}


# Кодовые названия методов пополнения

На данной странице указаны допустимые кодовые названия методов. Доступные методы для Вас можно найти в личном кабинете

| Кодовое название             | Название                                                             |
| ---------------------------- | -------------------------------------------------------------------- |
| **cards\_ru**                | Карты РФ                                                             |
| **cards\_ua**                | Карты Украина                                                        |
| **cards\_kz**                | Карты Казахстана                                                     |
| cards\_uzs                   | Карты Узбекистана                                                    |
| cards\_azn                   | Карты Азербайджана                                                   |
| **sbp**                      | СБП (p2p, QR-код -  индивидуально)                                   |
| **sbp\_sber**, **sbp\_tink** | СБП с переводом в другую страну (инструкции для Сбербанк и Тинькофф) |
| **qiwi**                     | QIWI кошелек                                                         |
| **perfectmoney**             | Perfect Money                                                        |
| **yoomoney**                 | Yoomoney                                                             |
| **advcash**                  | Advcash                                                              |
| **payeer**                   | Payeer                                                               |
| **skins**                    | Оплата скинами                                                       |
| **beeline\_ru**              | Билайн РФ (оплата телефоном)                                         |
| **tele2**                    | Tele2 (оплата телефоном)                                             |
| **megafon\_ru**              | Мегафон РФ (оплата телефоном)                                        |
| **mts\_ru**                  | МТС РФ (оплата телефоном)                                            |
| **yota**                     | YOTA (оплата телефоном)                                              |
| **bitcoin**                  | Bitcoin                                                              |
| **bitcoincash**              | Bitcoin Сash                                                         |
| **ethereum**                 | Ethereum                                                             |
| **tether\_trc20**            | Tether (TRC-20)                                                      |
| **tether\_erc20**            | Tether (ERC-20)                                                      |
| **tether\_ton**              | Tether (TON)                                                         |
| **tether\_polygon**          | Tether (Polygon)                                                     |
| **tether\_bsc**              | Tether (BSC)                                                         |
| **usdcoin\_trc20**           | USD Coin (TRC-20)                                                    |
| **usdcoin\_erc20**           | USD Coin (ERC-20)                                                    |
| **usdcoin\_bsc**             | USD Coin (BSC)                                                       |
| **bnb\_bsc**                 | Binance Coin (BSC)                                                   |
| **notcoin**                  | Notcoin                                                              |
| **hamstercoin**              | Hamster Kombat                                                       |
| **tron**                     | TRON                                                                 |
| **litecoin**                 | Litecoin                                                             |
| **dogecoin**                 | Dogecoin                                                             |
| **dai\_erc20**               | DAI (ERC-20)                                                         |
| **dai\_bsc**                 | DAI (BSC)                                                            |
| **dash**                     | DASH                                                                 |
| **monero**                   | Monero                                                               |
| **coupon**                   | Купон (внутренняя система Aaio)                                      |
| **balance**                  | Баланс Aaio (внутренняя система Aaio)                                |


# Кодовые названия методов вывода

На данной странице указаны допустимые кодовые названия методов. Доступные методы для Вас можно найти в личном кабинете

| Кодовое название  | Название            |
| ----------------- | ------------------- |
| **cards\_ru**     | Карты РФ            |
| **cards\_ua**     | Карты Украина       |
| **mobile\_ru**    | Мобильная связь РФ  |
| **sbp**           | СБП                 |
| **qiwi**          | QIWI кошелек        |
| **perfectmoney**  | Perfect Money (USD) |
| **yoomoney**      | Yoomoney            |
| **payeer**        | Payeer (RUB)        |
| **bitcoin**       | Bitcoin             |
| **tether\_trc20** | Tether (TRC-20)     |
| **tron**          | Tron                |
| **litecoin**      | Litecoin            |


