Основа для публикации backend-командой. Все адреса .invalid, карты, аптеки и ответы в примерах учебные. Публичный доступ к документации не даёт доступа к API; рабочий адрес и данные подключения выдаёт Олекстра.
PharmApi
JSON поверх POST. Поддерживаемые префиксы backend: /api/v1.0, /api/v1.1, /compat/pharmapi/v1.0, /compat/pharmapi/v1.1. Рабочий префикс определяется выданной инструкцией сети.
Аутентификация
authorization-token: NETWORK_LOGIN
authorization-secret: NETWORK_SECRET
Content-Type: application/jsonОтсутствующий/пустой заголовок даёт 401; неизвестная, выключенная учётная запись или неверный секрет — 403. Проверка аутентификации выполняется до разбора метода.
1. Расчёт get_discount
POST https://pos.example.invalid/api/v1.1/get_discount
{
"card_number": "DEMO_CARD",
"phone_number": "",
"pharmacy_id": "DEMO_POINT",
"pos_id": "1",
"orders": [
{
"barcode": "4600000000008",
"count": 1,
"price": 100
}
]
}orders содержит barcode, count и price; any_data и qr_code передаются в применимом профиле. Денежные значения обрабатываются backend в десятичной арифметике. Успешный HTTP-ответ проверяется также по status, error_code и результатам строк. Для подтверждения сохраните все возвращённые коды transaction.
2. Подтверждение confirm_purchase
{
"card_number": "DEMO_CARD",
"phone_number": "",
"pharmacy_id": "DEMO_POINT",
"pos_id": "1",
"transactions": [
"RETURNED_TRANSACTION"
]
}Адрес — тот же префикс с /confirm_purchase. Передайте полный набор кодов из расчёта. Отправка новой команды вместо повтора прежней не является способом устранить неопределённый исход.
3. Отмена cancel_purchase
{
"card_number": "DEMO_CARD",
"pharmacy_id": "DEMO_POINT",
"pos_id": "1",
"transactions": [
"RETURNED_TRANSACTION"
]
}Адрес — тот же префикс с /cancel_purchase. Возврат ограничен правилами программы. Не переносите сюда voucherId или confirmationToken из Сооплаты.
Справочник и данные
Backend имеет входы pl, update_pharmacies, update_prices и sellout. pl использует отдельный XML/multipart формат; он не является JSON-методом кассового расчёта. Состав и права загрузки уточняются в профиле сети.
Информационные подсказки
Штатного канала их передачи в PharmApi нет. Обычное message ошибки не является подтверждённым каналом рекламной подсказки.