Если вы используете CS-Cart:
Если на своей стороне вы используете Cs-Cart, вы можете воспользоваться модулем Клиент API для CS-Cart для синхронизации заказов.
Чтобы использовать модуль вам нужно:
1. Установить его из архива в CS-Cart.
2. Задать в настройках логин и ключ доступа к API Marketplace.
3. Убедиться, что значение в config.php равно стандартному ('marketplace_url' → 'https://marketplace.cs-cart.com')
4. Создать файл test_addon.php в корне магазина со следующим содержимым:
<?php use Tygh\Addons\MarketplaceOrderSync\Collections\ProductCollection; use Tygh\Addons\MarketplaceOrderSync\DataTransferObjects\Customer; use Tygh\Addons\MarketplaceOrderSync\DataTransferObjects\License; use Tygh\Addons\MarketplaceOrderSync\DataTransferObjects\Order; use Tygh\Addons\MarketplaceOrderSync\DataTransferObjects\Product; use Tygh\Addons\MarketplaceOrderSync\ServiceProvider; define('AREA', 'C'); try { require(dirname(__FILE__) . '/init.php'); $service = ServiceProvider::getService(); $order_id = $service->registerOrder( new Order( new Customer( '{email покупателя}', '{имя покупателя}', '{фамилия покупателя}', '{номер телефона покупателя}' ), new ProductCollection( [ new Product( '{External ID товара}', {количество товара}, new License(new DateTimeImmutable('{дата окончания лицензии}')) ), ] ) ) ); echo 'Created order ID:' . $order_id; die; } catch (Exception $e) { \Tygh\Tools\ErrorHandler::handleException($e); } catch (Throwable $e) { \Tygh\Tools\ErrorHandler::handleException($e); } 5. Открыть http://ваш_домен/test_addon.php.
6. Если вы верно указали {External ID} товара, логин и ключ доступа к API Marketplace, то вы увидите ID заказа. В случае ошибки возникнет исключение:
- Неправильный ID товара — ProductNotFoundException.
- Неправильный ключ доступа к API — NotAuthorizedException.
- У продавца не включена привилегия External orders synchronization — OrderPlacementNotAllowedException.
7. Необходимо заполнить поле customer notes. Указать: наименование товара, количество, сумму.
8. Не забудьте проверить, что в созданном на Маркетплейсе заказе данные совпадают с теми, что были переданы.
Если вы используете другие платформы
Для добавления на маркетплейс заказа, созданного за пределами маркетплейса, вам необходимо отправить на marketplace.cs-cart.com следующий POST-запрос:
POST https://marketplace.cs-cart.com/api/2.1/external_orders/
Content-Type: application/json
Authorization: Basic {логин вендора} {api key}
{ "products": [ { "external_id": "{❗️ external ID товара вендора}", "license": { "expires_on": "{❗️ дата истечения лицензии в формате YYYY-MM-DD}", "domain": "{домен}" } } ], "customer": { "email": "{❗️ email покупателя}", "first_name": "{❗️ имя покупателя}", "last_name": "{❗️ фамилия покупателя}", "phone_number": "{номер телефона}" }, "reset_order_total": {1 — сбросить total заказа в 0, 0 — рассчитать стоимость заказа}} ❗️ — обязательные параметры.
На что нужно обратить внимание:
- Заказ без products и customer синхронизировать нельзя.
- Заказ без products[].license синхронизировать нельзя.
- При передаче вместо products[].licence.expires_on чего либо кроме валидной даты API отдает читаемое сообщение об ошибке.
- При reset_order_total = 0 стоимость заказа считается правильно (в случае, если параметр reset_order_total = 1, заказу ставится сумма 0 и комиссия не взимается).
- Если товару присвоена глобальная опция с кодом BaseDomainName, то в заказе сохраняется переданный домен.
- Нельзя подставить external ID товара другого вендора.
- При передаче email зарегистрированного пользователя заказ привязывается к нему.
- При передаче email незарегистрированного пользователя создается новый пользователь.
- При синхронизации заказов не отправляются электронные письма с оповещениями.
- Выписанная на заказ лицензия истекает в срок, указанный в параметре expires_on.