WT CDEK library

WT CDEK library

Скачивания 3311 Просмотры 5237 CTR 63% Pack Free

Небольшая нативная PHP Joomla библиотека для работы с API v.2 службы доставки CDEK. Пакет состоит из плагина для хранения настроек, PHP-библиотеки и виджета карты для выбора пунктов выдачи заказа. Библиотека представляет собой клиент для авторизации в CDEK API по OAuth, работы с некоторыми методами API: получения ряда данных и расчета стоимости доставки. Поддерживается Joomla 4.2.7 и выше.

WT CDEK library

Описание

Внимание

Данное расширение предназначено для Joomla-разработчиков. Они могут использовать его в качестве зависимости при разработке своих расширений для Joomla.

Pull Requests welcome со стороны Joomla разработчиков!

В составе пакета

  • библиотека WT CDEK library
  • плагин настроек для подключения к API CDEK System - WT Cdek
  • официальный виджет выбора типа доставки от CDEK
  • плагин задачи стандартного планировщика задач Joomla для копирования и обновления данных CDEK в локальную базу данных

Библиотека представляет собой клиент для подключения к API CDEK и несколько методов для работы с ним с предварительной проверкой структуры данных, а также обработку ошибок при запросе. Для работы с библиотекой под рукой необходимо иметь официальную документацию CDEK API.

https://api-docs.cdek.ru

Подключение библиотеки в своё расширение для Joomla

<?php

use Webtolk\Cdekapi\Cdek;

\defined('_JEXEC') or die;

// Вариант 1: брать credentials из настроек плагина
$cdek = new Cdek();

// Вариант 2: передать credentials явно
$cdek = new Cdek(test_mode: true, client_id: 'your_client_id', client_secret: 'your_client_secret');

Авторизация происходит автоматически. Токен кэшируется средствами Joomla.

Пример: поиск города

<?php

use Webtolk\Cdekapi\Cdek;

defined('_JEXEC') or die;

$cdek = new Cdek();

$result = $cdek->location()->getCities([
    'postal_code' => '410012',
    'city'        => 'Саратов',
    'size'        => 1,
]);

Результат запроса:

Array
(
    [0] => Array
        (
            [code] => 428
            [city_uuid] => 7e54a0b3-76f0-41e2-92e0-f1e600ad84fd
            [city] => Саратов
            [fias_guid] => bf465fda-7834-47d5-986b-ccdb584a85a6
            [country_code] => RU
            [country] => Россия
            [region] => Саратовская область
            [region_code] => 47
            [fias_region_guid] => df594e0e-a935-4664-9d26-0bae13f904fe
            [sub_region] => городской округ Саратов
            [longitude] => 46.034266
            [latitude] => 51.533562
            [time_zone] => Europe/Saratov
            [payment_limit] => -1
        )

)

Доступные сущности REST API CDEK

В 1.3.0 библиотека поддерживает следующие сущности:

  • calculator()
  • check()
  • delivery()
  • deliverypoints()
  • intakes()
  • international()
  • location()
  • oauth()
  • orders()
  • passport()
  • payment()
  • photoDocument()
  • prealert()
  • print()
  • reverse()
  • webhooks()

У каждой сущности свой набор методов. Подробные примеры вынесены в каталог docs/ в git репозитории библиотеки.

Официальный виджет выбора типа доставки от CDEK (выбор пунктов выдачи заказа на карте)

В состав библиотеки включен виджет последней на данный момент версии: 3.10.2.

cdek widget скриншот
cdek widget скриншот

 

Подключение JavaScript виджета CDEK

Javascript виджета оформлен как Joomla Web Asset. В своём коде подключаем его с помощью WebAssetManager следующим образом:

<?php
use Joomla\CMS\Factory;

defined('_JEXEC') or die('Restricted access');

$doc  = Factory::getApplication()->getDocument();

/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $doc->getWebAssetManager();
$wa->useScript('cdek-widget-umd');

В остальном при настройке следуем документации виджета.

Service.php виджета

Виджет представляет собой Яндекс.карту, которая по ajax получает список пунктов выдачи заказа. Для работы с данной библиотекой нужно при инициализации виджета указать параметр servicePath - url для ajax-запроса. По умолчанию в комплекте с виджетом идёт файл service.php, который является точкой входа для ajax-запроса. В данной библиотеке функционал этого файла (получение списка ПВЗ и калькуляции тарифов) перенесён в системный плагин Joomla.

<?php
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Session\Session;

defined('_JEXEC') or die('Restricted access');

$service_url = new Uri(Uri::base());
$service_url->setPath('/index.php');
$service_url->setQuery([
    'option'                => 'com_ajax',
    'plugin'                => 'wtcdek',
    'group'                 => 'system',
    'format'               => 'raw',
    'city_code'          => $city_code, // CDEK код города для получения списка ПВЗ только для выбранного города
    Session::getFormToken() => 1
]);
// URL string
$service_url->toString();

Для javascript используем либо Joomla Script options, либо php echo, в зависимости от структуры вашего расширения.

Копирование и обновление данных CDEK в локальную базу данных

Добавлен плагин стандартного планировщика задач Joomla (появился в Joomla 4.1), который позволяет копировать и обновлять по расписанию списки стран и регионов доставки, населенных пунктов, а так же пунктов выдачи заказа. Эти данные вы можете использовать затем в своих расширениях.

Рекомендуется настроить выполнение задач планировщика Joomla с помощью серверного CRON, так как некоторые справочники довольно большого объёма и их обновление может занимать продолжительное время.

Чтобы запустить выполнение задач планировщика с помощью CLI Вам нужно подключиться к своему серверу по SSH и выполнить команду:

php /path/to/site/public_html/cli/joomla.php scheduler:run

Если требуется запустить конкретную задачу, то посмотреть список можно с помощью команды

php /path/to/site/public_html/cli/joomla.php scheduler:list

а затем запустить задачу по её id

php /path/to/site/public_html/cli/joomla.php scheduler:run --id=XXX

Также будьте внимательны, на некоторых хостингах существует ограничение на занимаемый объём базы данных.

Joomla

Тип расширения:
Пакет
Состав пакета:
Библиотека, Плагин
Версия Joomla:
4.2.7, 5.2.1, 5.2.2, 6.0.3, 6.1.0

Что нового

Исправлено

Ошибка поля tariffinfo

Исправлена ошибка указания лейаута для поля tariffinfo
Локализация

Типы контрагентов

Добавлены языковые константы типов контрагентов.

Смотрите также

Расширения Joomla WebTolk

104 Всего расширений
12 Категорий
532 Выпущено версий
706962 Всего скачиваний