Skip to content
msFastOrder
msFastOrder
Быстрый заказ в один клик через модальное окно для MODX 3 и MiniShop3
  1. Компоненты
  2. msFastOrder
  3. Для разработчика

AJAX API (connector)

Единственная точка входа для фронтенда:

POST {msfastorder_connector_url}
Content-Type: application/x-www-form-urlencoded

По умолчанию: /assets/components/msfastorder/connector.php

Файл: assets/components/msfastorder/connector.php Вызывается из msfo.js (ProductLoader, FormHandler).

Общие правила

ПравилоДеталь
МетодТолько POST (GET → 405)
csrf_tokenОбязателен; из window.msfoConfig.csrfToken
actionWhitelist (см. ниже)
ОтветJSON, UTF-8
Rate limitНа order/create по IP (сессия)

При неверном токене: HTTP 403, success: false.

При превышении лимита: HTTP 429, message из lexicon msfastorder_error_rate_limit.

Разрешённые actions

actionRate limitОписание
product/getнетДанные товара для модалки
order/validateнетВалидация без создания заказа
order/createдаСоздание заказа (MS или MAIL)
rate-limit/resetТолько при msfastorder_debug=1, сброс счётчика в сессии

product/get

Параметры POST:

ПолеТипОбязательно
actionstringда → product/get
csrf_tokenstringда
idintда, ID товара

Успех:

json
{
  "success": true,
  "data": {
    "id": 123,
    "pagetitle": "Название",
    "alias": "tovar",
    "price": 40461,
    "old_price": 0,
    "article": "SKU-1",
    "weight": 1.2,
    "thumb": "/assets/.../image.jpg",
    "has_variants": true,
    "variants": [
      {
        "id": 42,
        "sku": "...",
        "price": 41000,
        "old_price": 0,
        "count": 10,
        "options": { "color": "red" },
        "name": "red"
      }
    ]
  }
}

Если нет превью — thumb из msfastorder_default_image.

Ошибка:

json
{
  "success": false,
  "message": "Product not found"
}

order/validate

Те же поля, что у order/create, с action=order/validate.

Успех:

json
{
  "success": true,
  "message": "...",
  "errors": null
}

Ошибка валидации:

json
{
  "success": false,
  "message": "...",
  "errors": {
    "receiver": "Поле \"ФИО\" обязательно для заполнения"
  }
}

Сообщения с подстановкой [[+field]] через lexicon msfastorder_field_*.

order/create

Режим задаётся системной настройкой msfastorder_method (MS | MAIL), не параметром сниппета.

Параметры POST:

ПолеТипОбязательноОписание
actionstringдаorder/create
csrf_tokenstringдаCSRF
product_idintдаID товара
countintнетПо умолчанию 1
optionsstring (JSON)нетvariant_id и опции товара
receiverstring*Если в msfastorder_required_fields
phonestring*
emailstring*
citystringнет
commentstringнет

Примеры options:

json
{"variant_id": 42}
json
{"variant_id": 42, "options": {"color": "red", "size": "L"}}
json
{"color": "red"}

Парсинг: OrderProcessor::parseOptions().

Успех (MS)

json
{
  "success": true,
  "message": "...",
  "data": {
    "order_id": 15,
    "order_num": "00015",
    "method": "MS",
    "total": 80922,
    "payment_link": "https://site.ru/..."
  }
}
  • payment_link — из MiniShop3Integration::getPaymentLink() для msfastorder_payment_id.
  • При пустом email в MS-режиме PHP может сгенерировать email (generateEmail()), чтобы MS3 принял заказ.
  • Настройка msfastorder_generate_email в транспорте пока не переключает это поведение.
Способ оплаты MS3payment_link
DefaultPaymentСтраница успеха ?msorder={uuid}
ЮKassa (msp3YooKassa)URL checkout

См. Системные настройки, Интеграция.

Успех (MAIL)

json
{
  "success": true,
  "message": "...",
  "data": {
    "order_id": "MAIL-1716200000",
    "method": "MAIL",
    "total": 40461
  }
}

payment_link отсутствует. Письма через EmailService.

Ошибка

json
{
  "success": false,
  "message": "Validation failed",
  "errors": {
    "phone": "..."
  }
}

или без errors:

json
{
  "success": false,
  "message": "Order creation failed"
}

Коды HTTP

КодПричина
405Не POST
403Неверный CSRF; rate-limit/reset без debug
400Недопустимый action
429Rate limit на order/create
500Исключение; при msfastorder_debug в JSON может быть debug

Пример curl

bash
# Токен — из HTML страницы с [[!msFastOrder]]
curl -sS -X POST 'https://example.com/assets/components/msfastorder/connector.php' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'action=order/create' \
  --data-urlencode 'csrf_token=YOUR_TOKEN' \
  --data-urlencode 'product_id=123' \
  --data-urlencode 'count=2' \
  --data-urlencode 'receiver=Иван' \
  --data-urlencode 'phone=+79991234567' \
  --data-urlencode 'options={"variant_id":null}'

Сброс rate limit (staging, msfastorder_debug=1):

bash
curl -X POST '.../connector.php' \
  -d 'action=rate-limit/reset' \
  -d 'csrf_token=YOUR_TOKEN'

PHP (плагины, кастом)

php
$modx->lexicon->load('msfastorder:default');
$processor = new \MsFastOrder\Processors\OrderProcessor($modx);
$result = $processor->createOrder([
    'product_id' => 123,
    'count' => 2,
    'receiver' => 'Иван',
    'phone' => '+79991234567',
    'email' => 'a@b.c',
    'options' => json_encode(['variant_id' => 5]),
]);

Сервисы:

КлассНазначение
MiniShop3IntegrationТовар, заказ MS3, payment_link
OrderServicemsfastorder_logs
EmailServiceПисьма MAIL
OrderValidatorВалидация полей
ClientConfigmsfoConfig, CSRF

Связка с фронтом: frontend.