# PHP-версия модуля доставки 5POST/BXB

То же самое, что Python-сервис, но на PHP — чтобы работало на обычном хостинге
без запуска постоянного процесса. PHP отрабатывает на каждый запрос сам.

## Что загрузить на хостинг

В одну папку веб-сервера (например в корень домена или поддомена) положить:

```
points.php          ← эндпоинт списка пунктов
point_info.php      ← эндпоинт цены по выбранному пункту
health.php          ← проверка (открыть в браузере)
common.php          ← общая логика
tariff.php          ← расчёт BXB
bxb_tariffs.json    ← матрица тарифов
points.json         ← база пунктов (~10 МБ, с координатами)
```

`bxb_tariffs.json` и `points.json` должны лежать **рядом** с php-файлами
(скрипт ищет их в своей папке, затем на уровень выше).

## Требования

- **PHP 7.4+** (используются стрелочные функции; на 8.x тоже работает).
- Расширение **mbstring** (почти всегда включено) — для регистра в кириллице.
- Память ~256 МБ на запрос списка (база 10 МБ грузится в память). На общем
  хостинге обычно ок; скрипт сам поднимает лимит до 256M.

## Проверка после загрузки

Открой в браузере:

```
https://ТВОЙ-ДОМЕН/health.php
```

Должен прийти JSON вида `{"ok":true,"points_total":25381,"points_geocoded":...}`.
Если `points_geocoded` близко к `points_total` — координаты на месте, карта будет.

## Адреса для InSales

В настройках «внешнего источника пунктов» (pick_up_source) указать:

- **url** (список):      `https://ТВОЙ-ДОМЕН/points.php`
- **point_info_url**:    `https://ТВОЙ-ДОМЕН/point_info.php`

Оба отвечают с CORS, метод POST. HTTPS у большинства хостингов уже есть.

## Производительность (по желанию)

`points.json` грузится целиком на каждый запрос. Если хостинг слабый и список
открывается медленно — позже сделаем «лёгкий» файл только из экспортных пунктов
с координатами (≈22 тыс. вместо 25 тыс., и без лишних полей). Сейчас не нужно.
