Если вы используете 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.