Skip to content
msp3CDEKPay
Приём оплаты через CDEK Pay для MiniShop3: ссылка, QR СБП, webhook и чеки
  • MODX 3
  • PHP 8.2
  • miniShop3
  1. Компоненты
  2. msp3CDEKPay
  3. Интеграция и сценарии

Интеграция msp3CDEKPay ​

Шаги установки: Быстрый старт.

Запросы к CDEK Pay ​

ДействиеЗапросКогда
Ссылка на оплатусоздание заказа на оплатуСпособ Оплата через CDEK Pay
QR СБПQR СБПСпособ Оплата через CDEK Pay (СБП QR)
Возвратcancellation_requestsПосле webhook. Нужны id платежа, сумма и причина
Заблокировать ссылкуpayment_orders/{access_key}/blockКлюч ссылки у попытки
СинхронизироватьGET paymentsФильтр по ключу ссылки
Список чековGET cashbox/receiptsКнопка Чеки на вкладке заказа
Чек полного расчётаPOST cashbox/full_payment_requestsid платежа CDEK
Чек коррекцииPOST cashbox/correctionreceipt_id

Холда нет. send() отклоняет заказ дешевле 1 рубля. Сумма в API в копейках. Текст платежа: Order #<номер>, не длиннее 100 символов.

Ключ ссылки access_key пакет сохраняет как номер платежа и внешний номер попытки. Id платежа CDEK: другое поле. Оно приходит в webhook. Возврат и чек полного расчёта без этого id не проходят.

Пока попытка не оплачена, вкладка возврат не отправляет.

Webhook ​

Один адрес на магазин:

text
https://ваш-домен.ru/assets/components/msp3cdekpay/webhook.php

Тело: JSON с объектом payment и подписью SHA-256 из полей объекта и секретного ключа. Для валюты TST берётся тестовый секрет, для RUR боевой. Неверная подпись отвечает 401. Пустое тело и обычная форма отвечают 400.

Пакет отмечает попытку оплаченной или возвращённой. Он перебирает только активные способы Оплата через CDEK Pay и Оплата через CDEK Pay (СБП QR).

HTTPКогда
400Нет объекта payment или подписи
401Неверная подпись
500В MODX не зарегистрирован сервис ms3_payment_lifecycle
409Ошибка применения webhook в lifecycle (кроме «попытка не найдена»)
200Успех, выплата наложенного платежа, неизвестный тип уведомления (ignored), нет подходящей попытки

Неизвестный ключ ссылки тоже отвечает 200, чтобы CDEK Pay не слал повтор.

Для одного способа можно указать адрес ядра:

text
https://ваш-домен.ru/assets/components/minishop3/api.php/api/v1/payment/webhook/{ID_СПОСОБА}

После оплаты MiniShop3 ставит заказу ms3_status_paid. Неуспех: ms3_payment_on_failed_status (по умолчанию 0, статус не меняется). Полный возврат: ms3_payment_on_refunded_status (по умолчанию 5).

Выплата наложенного платежа (payout_amount) статус заказа не меняет. Пакет отвечает 200 и вызывает событие msp3CdekPayOnPayout. Если в MiniShop3 есть класс EventGate, события идут через него.

Строки лога начинаются с [msp3CDEKPay].

Как проходит оплата ​

Статус заказа ставит MiniShop3 после обработки попытки.

Ссылка на оплату приходит в поле link. У QR СБП это qr_link, плюс картинка qr_image.

Вкладка заказа ​

Вкладку подключает plugin msp3cdekpay_bootstrap: OnMODXInit (автозагрузка) и msOnManagerCustomCssJs (скрипт и стили на странице заказа).

ДействиеЧто нужно
Возвратid платежа из webhook, сумма, причина
Заблокировать ссылкуключ ссылки попытки
Синхронизироватьключ ссылки. Логин или секрет пустые: ответ успешный, список попыток без запроса к API, в интерфейсе пояснение (note)
Чекизапрос GET cashbox/receipts по заказу
Чек полного расчётаid платежа CDEK
Чек коррекцииreceipt_id

Учётные данные для кнопок вкладки: логин и секреты (сначала свойства способа заказа).

Чек 54-ФЗ ​

Включите msp3cdekpay_payment_receipt и кассу в кабинете. Без корректного email покупателя чек не уходит.

В чек попадают товары заказа (предмет расчёта 1) и доставка, если её стоимость больше нуля. Сумма строк подгоняется под сумму заказа.

Строку чека можно поправить событием msp3CdekPayOnPrepareReceiptItem. В него приходят позиция, заказ и товар заказа.