# BestChange v2

## Установка парсера

Используя параметры ниже, установите парсер через функционал "**Install plugin**" по инструкции [install-plugin](https://manual.boxexchanger.net/dopolnitelnye-sistemy/install-plugin "mention").

<details>

<summary>Параметры для Install Plugin</summary>

**Plugin type**: <mark style="color:orange;">**`Parser-rate module`**</mark>

**Plugin URL**: <mark style="color:orange;">**`@boxexchanger-plugins/parser-bestchange-v2`**</mark>

**Directory path**: <mark style="color:orange;">**`bestchange-v2`**</mark>

**Auth: (Deploy token)**: оставляем пустым

**Package tag**: <mark style="color:orange;">**`latest`**</mark>

</details>

## Настройка парсера

1. Для запуска парсера, следуйте инструкции [#konfiguraciya-parsera](https://manual.boxexchanger.net/obmen/parser-kursov/..#konfiguraciya-parsera "mention").

{% hint style="info" %}
Для применения изменений в поле, необходимо соглашаться с перезагрузкой процессов сервера.&#x20;
{% endhint %}

2. В поле **"api\_key**" укажите API ключ (см. уточнение ниже) для получения курсов обмена -> нажмите "**Применить изменения (API\_KEY)**.

{% hint style="info" %}
API ключ для получения курсов обмена вы можете сгенерировать в ЛК BestChange по ссылке: <https://www.bestchange.ru/partner/profile.html>. На странице "Профиль" - в разделе "API для получения курсов обмена", согласитесь с условиями использования BestChange -> нажмите "[**Получить**](#user-content-fn-1)[^1]" -> [**скопируйте**](#user-content-fn-2)[^2] API ключ.
{% endhint %}

3. Поле "**batch**" рекомендуем оставлять без изменений. Значение в данном поле отвечает за количество курсов, которое будет обрабатываться в одном API запросе. Максимальное значение: 500.
4. В поле "**places**" укажите места по которым необходимо получить курсы. К примеру, если необходимо получить курсы по 1,2 и 4 месту из списка BestChange по паре - введите <mark style="color:orange;">**`1,2,4`**</mark> -> нажмите "**Применить изменения (PLACES)"**
5. В поле "**routes**" введите пары, по которым необходимо получить курсы. **Подробнее о формате и особенностях ввода пар:**

{% hint style="info" %}
Обратите внимание, в качестве XML для валют и городов необходимо использовать сигнатуры, представленные на странице BestChange: <https://www.bestchange.ru/wiki/rates.html>
{% endhint %}

{% hint style="info" %}

* **Особенности при указании пар:**\
  а) **Безналичные валюты:** <mark style="color:orange;">**`XML1_XML2`**</mark>. К примеру, для того чтобы получить курсы по паре <mark style="color:green;">**USDT TRC20 -> Monobank UAH**</mark> необходимо ввести <mark style="color:orange;">**`USDTTRC20_MONOBUAH`**</mark>\
  б) **Наличные валюты**: <mark style="color:orange;">**`XML1_XML2-CITY`**</mark>. К примеру, для того чтобы получить курсы по паре <mark style="color:green;">**Cash USD KIEV -> USDT TRC20**</mark> необходимо ввести <mark style="color:orange;">**`CASHUSD_USDTTRC20-KIEV`**</mark>
* Пары необходимо разделять запятой (<mark style="color:orange;">**`,`**</mark>). **Пример**: <mark style="color:orange;">**`USDTTRC20_MONOBUAH,CASHUSD_USDTTRC20-KIEV,BTC_USDTTRC20`**</mark>
  {% endhint %}

-> нажмите "**Применить изменения (ROUTES)"**.

6. В поле "**cityKey**" укажите формат отображения названия города в паре:\
   а) Значение <mark style="color:orange;">**`name`**</mark> (**по умолчанию**). При таком параметре, название города в админ панели будет отображаться как имя города на английском языке, которое указано на [странице](https://www.bestchange.com/wiki/rates.html) BestChange. К примеру, если в поле "**routes**" ввести <mark style="color:orange;">**`CASHUSD_USDTTRC20-WRCL`**</mark>, то в админ панели пара будет отображаться как <mark style="color:green;">**TOP\_1 - CASHUSD - WROCLAW -> USDTTRC20**</mark>.\
   б) Значение <mark style="color:orange;">**`code`**</mark>. При таком параметре, название города в админ панели будет отображаться как сигнатура города, которая указана на [странице](https://www.bestchange.com/wiki/rates.html) BestChange. К примеру, если в поле "**routes**" ввести <mark style="color:orange;">**`CASHUSD_USDTTRC20-WRCL`**</mark>, то в админ панели пара будет отображаться как <mark style="color:green;">**TOP\_1 - CASHUSD - WRCL -> USDTTRC20**</mark>.\
   \
   -> нажмите "**Применить изменения (CITYKEY)"**.

{% hint style="warning" %}
В случае изменения формата отображения города в поле "**cityKey**" при условии, что парсер активен и в нем существуют пары - существующие курсы с предущим названием города перестанут обновляться, однако будут добавлены новые курсы, которые указаны в поле "**routes**" с обновленным названием города.&#x20;
{% endhint %}

6. В поле "**sourceRate**" укажите источник курса:\
   а) Значение <mark style="color:orange;">**`bestchange.ru`**</mark>. При таком параметре курсы будут парситься из русскоязычной версии BestChange.\
   б) Значение <mark style="color:orange;">**`bestchange.com`**</mark>. При таком параметре курсы будут парситься из англоязычной версии BestChange.
7. В поле "**Интервал**" укажите в миллисекундах частоту обновления курсов. Рекомендуемое значение: `15000` -> нажмите "**Применить изменения (INTERVAL)".**
8. В поле "**ignoreChangerIds**" вы можете указать BestChange id обменных сервисов, курсы которых будут игнорироваться при парсинге.&#x20;

{% hint style="success" %}
Обязательно добавьте в поле "**ignoreChangerIds**" BestChange Id вашего обменного сервиса. Данный шаг необходим для того чтобы парсер игнорировал курс вашего обменника при получении курсов и учитывал лишь курсы ваших конкурентов.
{% endhint %}

9. Парсер настроен.&#x20;

{% hint style="info" %}
Перед использованием парсера также ознакомьтесь с разделом [#prioritetnost-obnovlenii-kursov](https://manual.boxexchanger.net/obmen/parser-kursov/..#prioritetnost-obnovlenii-kursov "mention") для понимания порядка обновления курсов.&#x20;
{% endhint %}

### Валидация курсов

В случае, если на BestChange отсутствуют курсы по паре, указанной в поле "**routes**" -> система установит курс 0 для такой пары.&#x20;

* На клиентской части, направление с курсом 0 будет отображаться, однако станет [**недоступным**](#user-content-fn-3)[^3] для создания заявки.&#x20;
* В админ панели на странице "**Настройка направлений"** - в поле с направлением, у которого выставлен курс 0, будет отображаться <mark style="color:red;">**знак предупреждения**</mark>. При наведении на данный знак, будет отображаться комментарий "[**Parser rate invalid rate can't be 0**](#user-content-fn-4)[^4]".
* В случае, если на BestChange курс по паре появится, то в парсере курс автоматически обновится и направление будет снова доступно для создания заявки на клиентской части. В админ панели, в свою очередь, курс также обновится и пропадет знак предупреждения. &#x20;

[^1]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FMeNsWjfsXgZpceCSnuZj%2Fimage.png?alt=media\&token=c8d6fe03-4667-4f39-a2d6-5ae3f559fa19)

[^2]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2F9uZgpAUz7j5LEYdhY1uf%2Fimage.png?alt=media\&token=964e40be-7dbb-47d1-8602-2f07d32e4bda)

[^3]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FWshV0kUY8KLqzmM4PLjT%2Fimage.png?alt=media\&token=2e0c79b2-69ab-43c1-96f4-035cbdad5722)

[^4]: ![](https://3272217808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMtUdLxlDooDfKq13Is6%2Fuploads%2FTOCdpjhOXuzHDQlHRvGU%2Fimage.png?alt=media\&token=27e8cdb4-d4b4-43db-8e31-675a225a6c14)


---

# 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://manual.boxexchanger.net/obmen/parser-kursov/bestchange-v2.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.
