## Обработка http-уведомлений от Монеты [Документация Монеты](https://docs.moneta.ru/) * [Минимальный ответ на платежное уведомление (PayURL)](#Минимальный-ответ-pay-url) * [Ответ с передачей номенклатуры (PayURL)](#Ответ-с-номенклатурой-pay-url) * [Ответ на проверочный запрос с передачей номенклатуры (CheckURL)](#Ответ-с-номенклатурой-pay-url) * [Документация SDK](#Документация) --- ### Минимальный ответ на платежное уведомление (PayURL) [Минимальный ответ в документации](https://docs.moneta.ru/payments/payment-notification/) Чтобы сгенерировать минимальный ответ для платежного уведомления от Монеты, требуется создать объект `MonetaSDK` и передать номер заказа. В результате для Монеты будет предоставлен минимальный ответ `SUCCESS` и на стороне платежной системы статус операции будет изменен на "Выполнена" ```php include_once('vendor/autoload.php'); $orderId = $_POST['MNT_TRANSACTION_ID']; $mSdk = new Moneta\MonetaSdk($orderId); $mSdk->responseToPaymentNotification(); ``` --- ### Ответ с передачей номенклатуры (PayURL) [Ответ с передачей номенклатуры в документации (раздел "Передача номенклатуры через ответ скрипта Pay URL")](https://docs.moneta.ru/54-fz/module/_index.files/Assistant54FZ.pdf) Чтобы передать номенклатуру в ответе на платежное уведомление, нужно создать объект `MonetaSdkReceipt` и заполнить переменные объекта: 1. `items`* --- переменная товаров, тип `array`. В примере ниже показан максимальный и минимальный набор передаваемых параметров товара. Подробное о параметрах и их значениях можно прочитать в [документации раздел "Передача номенклатуры через ответ скрипта Pay URL"](https://docs.moneta.ru/54-fz/module/_index.files/Assistant54FZ.pdf). > Обратите внимание, что значения `vat` отличаются от того, что написано в документации: > `none` - без НДС > `vat0` - НДС по ставке 0% > `vat10` - НДС чека по ставке 10% > `vat110` - НДС чека по расчетной ставке 10/110 > `vat20` - НДС чека по ставке 20% > `vat120` - НДС чека по расчетной ставке 20/120 > `vat5` - 5% > `vat15` - по расчётной ставке 5% > `vat7` - 7% > `vat17` - по расчётной ставке 7 2. `customer`* --- переменная плательщика, тип `array`. Используется для отправки чека. Параметр `email` --- обязательный 3. `delivery` --- переменная доставки, тип `float`. Если есть доставка, то указать ее стоимость. Параметры, отмеченные *, являются обязательными. Их нужно передать при создании объекта MonetaSDKReceipt. После этого создайте объект `MonetaSDK`, передав номер заказа и сумму. Затем вызовите метод `responseToPaymentNotification`, передайте в него ранее созданный объект `MonetaSdkReceipt`. В результате система Монета получит ответ в формате XML, статус операции изменится на "Выполнена", а в кассовый сервис [kassa.payanyway](https://kassa.payanyway.ru/) будет передана номенклатура для печати чеков. ```php include_once('vendor/autoload.php'); $mSdkReceipt = new Moneta\MonetaSdkReceipt(); // "Тестовый товар №1" ——— максимальный набор параметров товара // "Тестовый товар №2" ——— минимальный набор параметров товара $mSdkReceipt->items = [ [ 'name' => 'Тестовый товар №1', 'price' => 123.45, 'quantity' => 1, 'measure' => 'шт', "paymentMethod" => "full_payment", "paymentObject" => "commodity", 'vat' => 'none', 'agentInfo' => [ 'type' => 'payment_agent', ], 'supplierInfo' => [ 'name' => 'Поставщик 1', 'inn' => '1234567890', 'phones' => [ '79995558844', '79998855221' ] ] ], [ 'name' => 'Тестовый товар №2', 'price' => 999, 'quantity' => 2, ] ]; $mSdkReceipt->customer = [ 'email' => 'com@moneta.ru', 'phone' => '74956465848' ]; $mSdkReceipt->delivery = 456.78; $orderId = $_POST['MNT_TRANSACTION_ID']; $mSdk = new Moneta\MonetaSdk($orderId); $mSdk->responseToPaymentNotification($mSdkReceipt); ``` --- ### Ответ на проверочный запрос с передачей номенклатуры (CheckURL) [Ответ на проверочный запрос с передачей номенклатуры (раздел "Ответ на проверочный запрос (check url - уведомление)")](https://www.payanyway.ru/info/p/ru/public/merchants/cmsspecification.pdf) Если вы используете кассу БПА ПА (Payanyway) и в настройках счёта указан CheckURL, вам нужно ответить на проверочный запрос, передав номенклатуру. Ответ нужно предоставить до оплаты. Если система магазина не ответит на запрос, пользователь не сможет перейти к оплате. Чтобы передать номенклатуру в ответе, создайте объект `MonetaSdkReceipt` и заполните его переменные: 1. `items`* --- переменная товаров, тип `array`. В примере ниже показан максимальный и минимальный набор передаваемых параметров товара. Подробное о параметрах и их значениях можно прочитать в документации в разделе "Ответ на проверочный запрос (check url - уведомление)". 2. `customer`* --- переменная плательщика, тип `array`. Используется для отправки чека. Параметр `email` --- обязательный 3. `delivery` --- переменная доставки, тип `float`. Если есть доставка, то указать ее стоимость. `*` --- обязательная переменная, её нужно заполнить. После заполнения переменных создайте объект `MonetaSDK`, передав номер заказа и сумму. Затем вызовите метод `responseToCheckRequest`, передав в него ранее созданный объект `MonetaSdkReceipt`. В результате система Монета получит ответ в формате JSON, и пользователь сможет перейти на страницу оплаты. ```php include_once('vendor/autoload.php'); $mSdkReceipt = new Moneta\MonetaSdkReceipt(); $mSdkReceipt->items = [ [ 'name' => 'Тестовый товар №1', 'price' => 123.45, 'quantity' => 1, 'measure' => 'шт', "paymentMethod" => "full_payment", "paymentObject" => "commodity", 'vat' => 'none', 'agentInfo' => [ 'payingAgent' => [ 'operation' => 'Наименование операции банковского платежного агента', 'phones' => [ '79995558844', '79998855221' ] ], 'supplierInfo' => [ 'name' => 'Поставщик 1', 'inn' => '1346', 'phones' => [ '79995558844', '79998855221' ] ] ] ], [ 'name' => 'Тестовый товар2', 'price' => 999, 'quantity' => 2, ] ]; $mSdkReceipt->customer = [ 'name' => 'Иванов Иван Иванович', 'inn' => '1234567890', 'email' => 'com@moneta.ru', 'phone' => '75556664477' ]; $mSdkReceipt->additionalCheckProp = 'Дополнительный реквизит чека'; $mSdkReceipt->additionalUserProps = [ 'name' => 'Доп. реквизиты пользователя', 'value' => 'Значение', ]; $mSdkReceipt->delivery = 456.78; $orderId = $_POST['MNT_TRANSACTION_ID']; $amount = $_POST['MNT_AMOUNT']; $mSdk = new Moneta\MonetaSdk($orderId, $amount); $mSdk->responseToCheckRequest($mSdkReceipt); ``` > **Если вы передаете номенклатуру в ответе на проверочный запрос, то на платежное уведомление можно отдать минимальный ответ в виде SUCCESS ([Пример](#Минимальный-ответ-pay-url))**. --- ## Документация SDK - #### [Описание config-файлов](config.md); - #### [Базовые методы](baseMethods.md); - #### [Методы MerchantAPI](merchantAPI.md).