Skip to content
msp3CloudPayments
Приём оплаты через CloudPayments для MiniShop3: счёт, шесть уведомлений, одно- и двухстадийная схема
  • MODX 3
  • PHP 8.2
  • miniShop3
  1. Компоненты
  2. msp3CloudPayments
  3. Интеграция и сценарии

Интеграция msp3CloudPayments

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

Запросы к CloudPayments

ДействиеЗапросКогда
Создать счётPOST /orders/createОформление заказа. Покупатель уходит на ссылку из ответа
Узнать статусv2/payments/findКнопка синхронизации во вкладке
Списать холдpayments/confirmПосле блокировки. Затем заказ отмечается оплаченным
Отменить холдpayments/voidДо списания
Вернуть деньгиpayments/refundНужен TransactionId из уведомления Pay
Отменить неоплаченный счётorders/cancelПо номеру счёта. Webhook не ждёт

В запросах логин это Public ID, пароль это API Secret.

Обычный способ создаёт счёт без подтверждения. Двухстадийный способ передаёт RequireConfirmation=true.

Уведомления

CloudPayments шлёт форму в UTF-8. Подпись в заголовке X-Content-HMAC: Base64 от HMAC-SHA256 сырого тела. Ключ подписи это API Secret. Выключить проверку нельзя. Неверная подпись отвечает кодом 13.

ТипURL
Paywebhook.php?event=pay
Checkwebhook.php?event=check
Failwebhook.php?event=fail
Confirmwebhook.php?event=confirm
Refundwebhook.php?event=refund
Cancelwebhook.php?event=cancel

Полный адрес: https://ваш-домен.ru/assets/components/msp3cloudpayments/webhook.php?event=pay. JSON-маршрут ядра MiniShop3 не подходит.

Check статус заказа не меняет. Он ищет попытку по ms3_ref и сверяет сумму.

Ответ CheckЗначение
{"code":0}Сумма совпала, попытка найдена
10Попытка не найдена. Пустое тело Check тоже отвечает 10
12Сумма не совпала с суммой заказа
13Неверная подпись, пустое тело Pay или редирект 301
СобытиеПопытка оплаты
pay и статус Completedpaid
pay и статус Authorizedauthorized
confirmpaid
failfailed
cancelcancelled
refundrefunded

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

Номер попытки ms3_ref имеет вид {номер заказа}-{случайная строка}. Тот же номер пакет кладёт в данные счёта. В API это поле JsonData. InvoiceId это номер заказа MiniShop3.

Для возврата в данных попытки нужен TransactionId из уведомления Pay.

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

После Pay со статусом Authorized заказ ещё не оплачен. Спишите холд (payments/confirm) или дождитесь Confirm. Оба пути отмечают оплату.

Пока попытка ждёт оплату или деньги только заблокированы, вкладка возврат не вызывает payments/refund. Сначала нужно уведомление или списание.

Отмена холда: payments/void. Неоплаченный счёт: orders/cancel по номеру счёта CloudPayments.

Чек 54-ФЗ

Включите msp3cloudpayments_payment_receipt. Тогда вместе со счётом уходит чек. В данных счёта это блок CloudPayments.CustomerReceipt внутри JsonData. В заказе нужен email.

Строку чека можно поправить событием msp3CloudPaymentsOnPrepareReceiptItem.

Система налогообложения: 0-5. НДС по умолчанию none. Признак способа расчёта по умолчанию 4. Предмет товара 1, предмет доставки 4.

Переход со старого mspCloudPayments

Резолвер копирует непустые mspcloudpayments_public_id, api_secret, currency, success_url, fail_url, json_data_extra, debug в ключи msp3cloudpayments_*, если новые пусты. Старый способ не удаляется. Выключите его и пропишите шесть новых адресов уведомлений.