# Moneta SDK PHP SDK PHP для использования платежных методов [Монета | PayAnyWay](https://moneta.ru/info/d/ru/public/welcome.htm) [Документация SDK](docs/) [Документация Монеты](https://docs.moneta.ru/) ## Требования PHP 8.0 (и выше) ## Установка ### Установка через composer 1. Добавьте строку `"moneta-integrations/moneta-sdk-php": "^2.0"` в список зависимостей вашего проекта в файле composer.json ``` ... "require": { "moneta-integrations/moneta-sdk-php": "^2.0" } ... ``` а также разместите следующие скрипты в секции "scripts" файла composer.json. Эти скрипты скопируют каталог конфигурации (config) из пакета moneta-integrations/moneta-sdk-php и разместят его в корне вашего проекта: ``` ... "scripts": { "moneta-copy-config": [ "php -r \"if(!is_dir('config')){ mkdir('config');}\"", "php -r \"copy('vendor/moneta-integrations/moneta-sdk-php/config/account.php', 'config/account.php');\"", "php -r \"copy('vendor/moneta-integrations/moneta-sdk-php/config/url.php', 'config/url.php');\"" ] } ... ``` 2. Обновите зависимости проекта. В консоли перейдите в каталог, где лежит composer.json, и выполните команду: ```bash composer update ``` 3. Затем выполните скрипт: ``` composer moneta-copy-config ``` > Обратите внимание, что каталог конфигурации появится в корне вашего проекта. При инициализации объекта MonetaSDK вам потребуется передавать путь до каталога конфигурации, например: ```php include_once('vendor/autoload.php'); $orderId = 'ORDER_471'; $amount = 123.45; $description = 'Оплата заказа ORDER_471'; $configPath = 'config'; $mSdk = new Moneta\MonetaSdk($orderId, $amount, $description, $configPath); $mSdk->getAssistantPaymentLink(); ``` 4. В коде вашего проекта подключите автозагрузку файлов нашего клиента: ```php include_once('vendor/autoload.php'); ``` ### Установка через git 1. Выполните следующую команду: ```git git clone https://git.pub.moneta.ru/Moneta-Labs/moneta-sdk-php.git ``` 2. В коде вашего проекта подключите автозагрузку файлов нашего клиента: ```php include_once('moneta-sdk-php/autoload.php'); ``` ## Начало работы 1. В конфигурации SDK укажите свои данные: 1.1. Если вы планируете использовать базовый функционал (выставление ссылок на оплату через Assistant), то заполните только следующие параметры: `id` --- номер бизнес счета; `secret` --- код проверки целостности данных; `demo_mode` --- указать `true`, если вы проводите интеграцию на демо-стенде (demo.moneta.ru). 1.2. Если вы планируете использовать функционал MerchantAPI, то требуется указать дополнительно: `username` --- логин от личного кабинета [Moneta | PayAnyWay](https://www.payanyway.ru/backoffice/auth/signin); `password` --- пароль от личного кабинета [Moneta | PayAnyWay](https://www.payanyway.ru/backoffice/auth/signin); `payment_password` --- платежный пароль. Полное описание config-файлов можете прочитать в [документации к SDK](/docs/config.md). 2. Пример генерации ссылки на оплату с помощью [MONETA.Assistant](https://www.moneta.ru/doc/MONETA.Assistant.ru.pdf): ```php include_once('vendor/autoload.php'); $orderId = 'ORDER_471'; // Номер заказа в системе магазина $amount = 123.45; // Сумма заказа $mSdk = new Moneta\MonetaSdk($orderId, $amount); $mSdk->getAssistantPaymentLink(); // Результат: https://demo.moneta.ru/assistant.htm?MNT_ID=96324612&MNT_AMOUNT=123.45&MNT_TRANSACTION_ID=ORDER_471&MNT_CURRENCY_CODE=RUB&MNT_SIGNATURE=93742a04b8b3124779c13a5cfc414784&moneta.locale=ru ``` Когда ссылка будет сгенерирована, нужно направить на неё плательщика.. 3. После оплаты на указанный PayURL в настройках счета будет направлено платежное уведомление от Монеты. В вашем обработчике уведомление потребуется сменить статус заказа в системе магазина, а также сформировать ответ для Монеты. 3.1. Ответ без передачи номенклатуры: ```php include_once('vendor/autoload.php'); $orderId = $_POST['MNT_TRANSACTION_ID']; // Номер заказа, по которому пришло уведомление $mSdk = new Moneta\MonetaSdk($orderId); $mSdk->responseToPaymentNotification(); // Результат: SUCCESS ``` В результате для Монеты будет предоставлен минимальный ответ `SUCCESS`. Для платежной системы это будет означать, что система магазина приняла уведомление и изменила статус заказа, после чего в Монете у операции будет присвоен статус "Выполнена". ⠀⠀⠀3.2. Ответ с передачей номенклатуры: ```php include_once('vendor/autoload.php'); $orderId = $_POST['MNT_TRANSACTION_ID']; // Номер заказа, по которому пришло уведомление $mSdkReceipt = new Moneta\MonetaSdkReceipt(); // Минимальный набор данных о товаре: $mSdkReceipt->items = [ [ 'name' => 'Тестовый товар 2', 'price' => 123.45, 'quantity' => 1, ] ]; // Минимальный набор данных о плательщике $mSdkReceipt->customer = [ 'email' => 'com@moneta.ru', ]; // Если имеется доставка, то указать ее стоимость: $mSdkReceipt->delivery = 67.89; $mSdk = new Moneta\MonetaSdk($orderId); $mSdk->responseToPaymentNotification($mSdkReceipt); // Результат: ответ в формате xml, см. ниже ``` В результате для Монеты будет сформирован ответ в формате xml с номенклатурой: ```xml 12346578 ORDER_471 200 ec134dd3a9d2d0e84597f5bf0eef8a3e INVENTORY [{"name":"Тестовый товар 2","price":123.45,"quantity":1,"vatTag":"1105","pm":"full_payment","po":"commodity"}] CUSTOMER com@moneta.ru DELIVERY 67.89 ``` ## Документация SDK В документации описаны методы и примеры их использования: - #### [Описание config-файлов](docs/config.md); - #### [Базовые методы](docs/baseMethods.md); - #### [Обработка http-уведомлений от Монеты](docs/notifications.md); - #### [Методы MerchantAPI](docs/merchantAPI.md).