UNPKG

cdek

Version:
347 lines (346 loc) 11.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Cdek = void 0; const eventemitter_ts_1 = require("./core/eventemitter.js"); const restclient_ts_1 = require("./core/restclient.js"); class Cdek extends eventemitter_ts_1.EventEmitter { rest; constructor(options) { super(); this.rest = new restclient_ts_1.RestClient(options); } /** * Обработчик входящих вебхуков. * Парсит запрос, определяет тип события и вызывает соответствующий event listener. */ webhookHandler() { return async (request) => { const data = await request.json(); switch (data.type) { case "ORDER_STATUS": this.emit("ORDER_STATUS", data); break; case "PRINT_FORM": this.emit("PRINT_FORM", data); break; case "PREALERT_CLOSED": this.emit("PREALERT_CLOSED", data); break; case "ACCOMPANYING_WAYBILL": this.emit("ACCOMPANYING_WAYBILL", data); break; case "DELIV_AGREEMENT": this.emit("DELIV_AGREEMENT", data); break; case "DELIV_PROBLEM": this.emit("DELIV_PROBLEM", data); break; case "OFFICE_AVAILABILITY": this.emit("OFFICE_AVAILABILITY", data); break; case "ORDER_MODIFIED": this.emit("ORDER_MODIFIED", data); break; } return new Response("OK"); }; } // --- LOCATION --- /** Получение списка регионов */ getRegions(params) { return this.rest.get({ url: "/location/regions", query: params, }); } /** Получение списка населенных пунктов */ getCities(params) { return this.rest.get({ url: "/location/cities", query: params, }); } /** Получение локации по координатам */ getCityByCoordinates(latitude, longitude) { return this.rest.get({ url: "/location/coordinates", query: { latitude, longitude }, }); } // --- WEBHOOKS --- /** Добавление подписки на вебхуки */ addWebhook(params) { return this.rest.post({ url: "/webhooks", payload: params, }); } /** Получение информации о подписке по UUID */ getWebhookByUUID(uuid) { return this.rest.get({ url: `/webhooks/${uuid}`, }); } /** Получение списка всех подписок */ getWebhooks() { return this.rest.get({ url: "/webhooks", }); } /** Удаление подписки на вебхуки */ deleteWebhookByUUID(uuid) { return this.rest.delete({ url: `/webhooks/${uuid}`, }); } // --- ORDERS --- /** Регистрация заказа */ addOrder(params) { return this.rest.post({ url: "/orders", payload: params, }); } /** Получение информации о заказе по UUID */ getOrderByUUID(uuid) { return this.rest.get({ url: `/orders/${uuid}`, }); } /** Получение информации о заказе по номеру СДЭК */ getOrderByCdekNumber(cdek_number) { return this.rest.get({ url: "/orders", query: { cdek_number: cdek_number }, }); } /** Получение информации о заказе по номеру ИМ */ getOrderByImNumber(im_number) { return this.rest.get({ url: "/orders", query: { im_number: im_number }, }); } /** Изменение заказа */ updateOrder(params) { return this.rest.patch({ url: "/orders", payload: params, }); } /** Удаление заказа */ deleteOrderByUUID(uuid) { return this.rest.delete({ url: `/orders/${uuid}`, }); } /** Регистрация отказа */ addRefusal(order_uuid) { return this.rest.post({ url: `/orders/${order_uuid}/refusal`, }); } /** Регистрация клиентского возврата */ createClientReturn(params) { return this.rest.post({ url: `orders/${params.order_uuid}/clientReturn`, payload: { tariff_code: params.tariff_code }, }); } // --- INTAKES (Couriers) --- /** Регистрация заявки на вызов курьера */ addCourier(params) { return this.rest.post({ url: "/intakes", payload: params, }); } /** Получение информации о заявке на вызов курьера */ getCourierDetails(uuid) { return this.rest.get({ url: `/intakes/${uuid}`, }); } /** Удаление заявки на вызов курьера */ deleteCourier(uuid) { return this.rest.delete({ url: `/intakes/${uuid}`, }); } /** Получение всех заявок по заказу */ getIntakes(orderUuid) { return this.rest.get({ url: `/orders/${orderUuid}/intakes`, }); } // --- PRINT --- /** Формирование квитанции к заказу */ createOrderReceipt(params) { return this.rest.post({ url: "/print/orders", payload: params, }); } /** Получение квитанции к заказу */ getOrderReceipt(uuid) { return this.rest.get({ url: `/print/orders/${uuid}`, }); } /** Скачивание квитанции по UUID */ downloadOrderReceiptByUUID(uuid) { return this.rest.download(`/print/orders/${uuid}.pdf`); } /** Скачивание квитанции по URL */ downloadOrderReceiptByURL(url) { return this.rest.download(url, false); } /** Формирование ШК места */ createBarcodeCP(params) { return this.rest.post({ url: "/print/barcodes", payload: params, }); } /** Получение ШК места */ getBarcodeCP(uuid) { return this.rest.get({ url: `/print/barcodes/${uuid}`, }); } /** Скачивание ШК места по UUID */ downloadBarcodeCPByUUID(uuid) { return this.rest.download(`/print/barcodes/${uuid}.pdf`); } /** Скачивание ШК места по URL */ downloadBarcodeCPByURL(url) { return this.rest.download(url, false); } // --- DELIVERY (Appointment) --- /** Регистрация договоренности о доставке */ addDeliveryAppointment(params) { return this.rest.post({ url: "/delivery", payload: params, }); } /** Получение информации о договоренности о доставке */ getDeliveryAppointment(uuid) { return this.rest.get({ url: `/delivery/${uuid}`, }); } /** Получение интервалов доставки (для существующего заказа) */ getDeliveryIntervals(params) { return this.rest.get({ url: "/delivery/intervals", query: params, }); } // --- PREALERT --- /** Регистрация преалерта */ addPrealert(params) { return this.rest.post({ url: "/prealert", payload: params, }); } /** Получение информации о преалерте */ getPrealert(uuid) { return this.rest.get({ url: `/prealert/${uuid}`, }); } // --- INFO (Passport, Check, Registry) --- /** Получение паспортных данных */ getPassportData(params) { return this.rest.get({ url: "/passport", query: params, }); } /** Получение информации о чеке */ getCashboxCheck(params) { return this.rest.get({ url: "/check", query: params, }); } /** Получение реестра наложенных платежей */ getCashOnDeliveryRegistry(params) { return this.rest.get({ url: "/registries", query: params, }); } /** Получение информации о переводе наложенного платежа */ getCashOnDeliveryTransfer(params) { return this.rest.get({ url: "/payment", query: params, }); } /** Получение списка ПВЗ */ getPickupPoints(params) { return this.rest.get({ url: "/deliverypoints", query: params, }); } // --- CALCULATOR --- /** Расчет по коду тарифа */ calculatorByTariff(params) { return this.rest.post({ url: "/calculator/tariff", payload: params, }); } /** Расчет по доступным тарифам */ calculatorByAvaibleTariffs(params) { return this.rest.post({ url: "/calculator/tarifflist", payload: params, }); } /** Получение списка всех доступных тарифов по договору */ availableTariffs(lang) { return this.rest.get({ url: "/calculator/alltariffs", query: lang ? { lang } : undefined, }); } /** Таможенный калькулятор (расчет пошлин) */ calculatorCustoms(params) { return this.rest.post({ url: "/calculator/customs", payload: params, }); } // --- REVERSE --- /** Проверка доступности реверса */ checkReverseAvailability(params) { return this.rest.post({ url: "/reverse/availability", payload: params, }); } // --- OTHER --- /** Получение заказов с готовыми фото */ getFinishedOrders(params) { return this.rest.post({ url: "/photoDocument", payload: params, }); } /** Принудительное обновление токена */ refreshToken() { return this.rest.auth(); } get token() { return this.rest.token?.access_token; } get tokenExpire() { return this.rest.token_expire; } } exports.Cdek = Cdek;