Skip to content

Внешние системы (ICAN) ​

Кредитная система ICAN и системы партнёров обращаются к Wasyt напрямую, сервер → сервер, по секретному ключу вместо токена пользователя.

Заголовки ​

ЗаголовокКто передаётЗначение
External-System-Secret-KeyвсеКлюч внешней системы. Неверный или пустой — любой метод отвечает 404
Company-Ican-UuidICANUUID компании в ICAN
Company-Wasyt-UuidICAN, партнёрUUID компании в Wasyt (wasyt_uuid)
Company-Partner-Uuidпартнёр (/external/partner/*)UUID компании у партнёра
Acceptвсеapplication/json
Accept-Languageвсеru, uz или oz — язык названий и ошибок
  • Заголовок компании определяет, от чьего имени идёт запрос: система работает как директор этой компании и видит её филиалы. Сначала проверяется Company-Ican-Uuid (у партнёра — Company-Partner-Uuid), затем Company-Wasyt-Uuid.
  • Компания ищется вместе с отключёнными. Кредитные методы (trade-sale, trade-sale-transaction, seller-cart, external-credit-payment) полностью работают и для отключённой компании или филиала.

Ключ только на сервере

Ключ не должен попадать в браузер или мобильное приложение: с ним можно действовать от имени любой компании.

Кредитный контракт по шагам ​

  1. Справочники. GET /external/credit/records/{type} с cashbox, stock и product (filter[stock_id], filter[name_or_barcode]) — ID кассы, склада и товаров для продажи.
  2. Расчёт. POST /external/credit/trade-sale/products-total-price проверяет строки и ничего не сохраняет: возвращает products_total_price и минимальную цену каждой строки products[].effective_min_price.
  3. Продажа. POST /external/credit/trade-sale/create с company_wasyt_uuid, ценой каждой строки, source_data (снимок контракта) и sold_amount. Товар списывается со склада, продажа создаётся в статусе in_progress; её id нужен во всех следующих шагах.
  4. Оплаты. Каждая оплата клиента — POST /external/credit/trade-sale-transaction/create с sale_id, credit_transaction_id и credit_status. Когда оплаты покрывают sold_amount, продажа становится completed. id ответа сохраните как wasyt_payment_id.
  5. Возврат денег. POST /external/credit/trade-sale-transaction/refund-information с payment_id возвращает кассу оплаты, paid_amount и ненулевые остатки кассы по типам оплаты. Сам возврат кредитная система проводит у себя.
  6. Отмена. POST /external/credit/trade-sale/cancel с invoice_id отменяет продажу в статусе in_progress: товар возвращается на склад, оплаченная сумма списывается с кассы продажи.

Одна оплата — один раз

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

Типы оплаты ICAN ​

Типы оплаты кредитной системы можно передавать как есть — Wasyt переводит их в свои:

Тип ICANТип Wasyt
cashcash
bank, terminal, mib, blacklistbank
auto_payment, auto_payment_my_uzcard, auto_payment_uniaccess, auto_payment_prizmabank
card, card_client, card_click, card_payme, card_uzumcard
discount, systemsystem — засчитывается в оплату, касса не двигается

В trade-sale-transaction/create автосписания auto_payment* зачисляются на главную кассу компании (если она есть), остальные — на кассу cashbox_id, а без неё — на кассу продажи. debt (в долг) в кредитных продажах запрещён, а external-credit-payment принимает только cash, card и bank.

Контракты без продажи в Wasyt ​

Для контрактов, заключённых до подключения склада, продажи в Wasyt нет. Их оплаты проводит POST /external/credit/external-credit-payment/create: контракт описывается в самом запросе (credit_id, credit_number, клиент), деньги попадают в кассу, но не в выручку продаж. Возврат — тот же метод с type = outcome и payment_id возвращаемой оплаты; данные для окна возврата отдаёт тот же refund-information.

Подборы продавцов ​

  1. GET /external/credit/records/seller — продавцы для фильтра filter[creator_id].
  2. GET /external/credit/seller-cart — подборы; продаваемые: filter[status][]=picking&filter[status][]=sent и filter[stock_id].
  3. GET /external/credit/seller-cart/{model}/cheque — подбор как чек, с текущими ценами и остатками.
  4. trade-sale/create с seller_cart_id: подбор получает статус completed, продажа (и бонус, если он настроен) записывается на его продавца.

Синхронизация ​

ICAN передаёт свои компании и адресные справочники в /external/sync/*: company, region, region-district, region-mfy. Запись определяется по ican_uuid: новая создаётся, существующая обновляется, поэтому один и тот же запрос можно отправлять повторно.

Партнёры ​

  1. GET /external/partner/records/{type} с region, region_district, region_mfy — адресные справочники с wasyt_uuid; нужен только ключ.
  2. POST /external/partner/company создаёт компанию партнёра (район — district_wasyt_uuid) и возвращает её wasyt_uuid. Повторный запрос с этим wasyt_uuid обновляет компанию.
  3. Дальше данные компании читаются через records/{type} с заголовком Company-Wasyt-Uuid (или Company-Partner-Uuid): филиалы, кассы, склады, остатки, товары.

POST /external/partner/find-by-url работает без ключа: по адресу сайта возвращает партнёра и его оформление.