dicr / yii2-exchange1c
1C 与 Bitrix 网站交换协议
3.0.0
2022-01-08 17:12 UTC
Requires
- php: ~8.0
- ext-curl: *
- ext-mbstring: *
- ext-simplexml: *
- ext-zip: *
- dicr/yii2-helper: ~6.0
- dicr/yii2-http: ~4.0
- dicr/yii2-log: ~3.0
- dicr/yii2-validate: ~3.0
- yiisoft/yii2: ~2.0
- yiisoft/yii2-httpclient: ~2.0
Requires (Dev)
- phpunit/phpunit: ~9.5
- roave/security-advisories: dev-latest
README
库中实现了1C服务器端协议处理请求的部分,以及模拟1C向网站服务器请求的客户端部分。
服务器端
包括
- 可配置模块
dicr\exchange1c\Module
- web-控制器
dicr\exchane1c\DefaultController
用于处理1C的请求 - 抽象协议处理器
dicr\exchange1c\BaseHandler
实现了基本功能。
服务器端配置
$config = [
'modules' => [
'exchange1c' => dicr\exchange1c\Module::class,
'handler' => 'ВашОбработчикИмпорта::class',
// опционально можно добавить авторизацию
'as basicAuth' => [
'class' => yii\filters\auth\HttpBasicAuth::class,
'auth' => static function($username, $password) {
// проверка логина и пароля
}
]
]
];
由模块调用的1C交换处理器应实现接口 dicr\exchange1c\Handler
。为了方便,您可以继承实现交换和工具的抽象基类 dicr\exchange1c\BaseHandler
。您只需重定义从 SimpleXmlElement
文档导入数据的方法(importProp
、importGroup
、importProd
)到您自己的网站数据库。
客户端部分
包括
- 可配置组件
dicr\exchange1c\Client
- 控制台应用程序和控制器
dicr\exchange1c\ClientController
客户端配置
$config = [
'components' => [
'client' => [
'class' => dicr\exchange1c\Client::class,
'url' => 'https://адрес_обмена/сайта',
// опционально авторизация на сайте
'login' => 'логин',
'password' => 'пароль'
]
]
];
使用方法
/** @var dicr\exchange1c\Client $client */
$client = Yii::$app->get('client');
// авторизация (получает куку авторизации)
$client->requestCatalogCheckAuth();
// инициализация параметров обмена (получает zip, file_limit)
$client->requestCatalogInit();
// загрузка файла на сайт
$data = $client->requestCatalogFile('/home/files/import.xml');
// импорт данных
$client->requestCatalogImport('import.xml');
控制台应用程序
也可以在控制台中使用客户端部分。
创建配置文件 configs/local.php
并提供数据
/** @var ?string адрес обмена на сайте */
const EXCHANGE_URL = 'https://мой-сайт.рф/exchange1c';
/** @var ?string логин */
const EXCHANGE_LOGIN = 'мой-логин';
/** @var ?string пароль */
const EXCHANGE_PASSWORD = 'мой пароль';
命令行参数
# отправка каталога на сайт
./yii client/catalog-file /home/files/import.xml
# отправка заказов на сайт
./yii client/sale-file /home/files/orders.xml
# запрос заказов с сайта
./yii client/sale-query