## Методы MerchantAPI [Документация Монеты](https://docs.moneta.ru/) * [Однофазный платеж](#однофазный-платеж) * [Двухфазный платеж (операция с холдированием)](#двухфазный-платеж) * [Подтверждение операции](#подтверждение-операции) * [Отмена операции](#отмена-операции) * [Привязка карты (получение токена для рекуррентных платежей)](#привязка-карты) * [Оплата по рекуррентному токену](#рекуррентный-платеж) * [Возврат по операции](#возврат) * [Получить детали операции по ID](#детали-операции-по-id) * [Документация SDK](#Документация) --- > **Эти методы доступны только для юридических лиц и ИП. Чтобы узнать, поддерживает ли ваш бизнес-счёт рекуррентные платежи и операции с холдированием, обратитесь в коммерческий отдел: com@payanyway.ru.** ### Однофазный платеж [Однофазный платеж в документации](https://docs.moneta.ru/protocols/#post-/-MRCHNT--invoice-request--simple) Создайте объект `MonetaSdk`, передав номер заказа и сумму, а также по желанию описание. Затем вызовите метод `createInvoice`, будет возвращен номер операции в системе Монета. Данный номер операции требуется передать в метод `getPaymentLink`, тем самым можно получить ссылку на оплату, по которой надо будет перевести плательщика. ```php include_once('vendor/autoload.php'); $mSdk = new Moneta\MonetaSdk(uniqid('', true), 123.45); $operationId = $mSdk->createInvoice(); $paymentLink = $mSdk->getPaymentLink($operationId); if (!empty($paymentLink)) { header('Location: ' . $paymentLink); } ``` --- ### Двухфазный платеж (операция с холдированием) [Двухфазный платеж в документации](https://docs.moneta.ru/protocols/#post-/-MRCHNT--invoice-request--hold) Создайте объект `MonetaSdk`, передав номер заказа и сумму, а также по желанию описание. Затем вызовите метод `createInvoice` и передайте в качестве аргумента true, будет возвращен номер операции с холдированием в системе Монета. Данный номер операции требуется передать в метод `getPaymentLink`, тем самым можно получить ссылку на оплату, по которой надо будет перевести плательщика. ```php include_once('vendor/autoload.php'); $mSdk = new Moneta\MonetaSdk(uniqid('', true), 123.45); $operationId = $mSdk->createInvoice(true); $paymentLink = $mSdk->getPaymentLink($operationId); if (!empty($paymentLink)) { header('Location: ' . $paymentLink); } ``` > **При проведении двухфазного платежа(холдирование), нужно подтвердить или отменить операцию.** --- ### Подтверждение операции [Подтверждение операции в документации](https://docs.moneta.ru/protocols/#post-/-MRCHNT--confirm-transaction-request) Чтобы подтвердить операцию нужно создать объект `MonetaSdk`, передать номер заказа и вызвать метод `confirmInvoice`, передав номер операции. В ответе будет возвращен массив с информацией об операции. ```php include_once('vendor/autoload.php'); $orderId = $_POST['MNT_TRANSACTION_ID']; $operationId = $_POST['MNT_OPERATION_ID']; $mSdk = new Moneta\MonetaSdk($transactionId); $mSdk->confirmInvoice($operationId); ``` --- ### Отмена операции [Отмена операции в документации](https://docs.moneta.ru/protocols/#post-/-MRCHNT--cancel-transaction-request) Чтобы отменить операцию нужно создать объект `MonetaSdk`, передать номер заказа и вызвать метод `confirmInvoice`, передав номер операции. В ответе будет возвращен массив с информацией об операции. ```php include_once('vendor/autoload.php'); $orderId = $_POST['MNT_TRANSACTION_ID']; $operationId = $_POST['MNT_OPERATION_ID']; $mSdk = new Moneta\MonetaSdk($transactionId); $mSdk->cancelInvoice($operationId); ``` --- ### Привязка карты (получение токена для рекуррентных платежей) [Привязка карты в документации](https://docs.moneta.ru/protocols/#post-/-MRCHNT--payment-request--get-token-only) Для привязки карты создайте объект `MonetaSdk`, передав номер, сумму заказа, и, при необходимости, описание. Затем вызовите метод `createRecurrentInvoice` — он вернёт номер операции в системе Монета.в. Этот номер нужно передать в метод `getPaymentLink`, чтобы получить ссылку для оплаты, по которой надо будет перевести плательщика. ```php include_once('vendor/autoload.php'); $mSdk = new Moneta\MonetaSdk(uniqid('', true), 456.78); $operationId = $mSdk->createRecurrentInvoice(); $paymentLink = $mSdk->getPaymentLink($operationId); if (!empty($paymentLink)) { header('Location: ' . $paymentLink); } ``` На платежной форме плательщику потребуется ввести свои карточный данные, а также поставить галочку в чекбоксе "Запомнить карту". После успешной оплаты, на указанный PayURL, указанный в настройках бизнес-счета будет отправлено http-уведомление, в котором будет передан токен для рекуррентных платежей (название параметра в уведомлении: `paymenttoken`). Чтобы проводить рекуррентный платеж без дальнейшего участия плательщика: требуется записать токен в базу данны.___ ### Оплата по рекуррентному токену [Оплата по рекуррентному токену в документации](https://docs.moneta.ru/protocols/#post-/-MRCHNT--payment-request--by-token) Чтобы привязать карту, создайте объект `MonetaSdk`, передав номер заказа, сумму и, при необходимости, описание. Затем вызовите метод recurringPayment, передав токен плательщика, который получили и сохранили в сценарии "[Привязка карты (получение токена для рекуррентных платежей)](#привязка-карты)". В ответе вы получите массив с информацией об операции. ```php include_once("moneta-sdk-lib/autoload.php"); $paymentToken = '123456'; $mSdk = new Moneta\MonetaSdk(uniqid('', true), 123.45, 'Оплата за подписку, январь 2025'); $mSdk->recurringPayment($paymentToken); ``` > Обратите внимание: при вызове `recurringPayment` в системе Монеты к переданному номеру заказа добавится "_MONETA" с временной меткой. Например, "6787bc9f456b29.67450389_MONETA1736948895". Это нужно для уникальности номера заказа, иначе операция не создастся. Чтобы получить исходный номер заказа из уведомления, разделите MNT_TRANSACTION_ID с помощью функции `explode`: `explode('_MONETA', $transactionId)[0]`. --- ### Возврат по операции [Возврат по операции в документации (стр. 218)](https://www.moneta.ru/doc/MONETA.MerchantAPI.v2.ru.pdf) Чтобы выполнить возврат, создайте объект `MonetaSdk`, передав номер, сумму возврата и, при необходимости, описание. Затем вызовите метод refund, передав номер операции из системы Монета. В ответе вы получите массив с информацией о возврате. ```php include_once("moneta-sdk-lib/autoload.php"); $mSdk = new Moneta\MonetaSdk(uniqid('', true), 123.45, 'Возврат по заказу ' . uniqid('', true)); $operationId = 1234567890; $mSdk->refund($operationId); ``` --- ### Получить детали операции по ID [Возврат по операции в документации (стр. 240)](https://www.moneta.ru/doc/MONETA.MerchantAPI.v2.ru.pdf) Создайте объект `MonetaSdk`, передав пустой номер заказа. Затем вызовите метод `getOperationDetailsById`, передав номер операции, по которой нужно получить информацию. В ответе вам вернется массив с информацией об операции в системе Монета. ```php include_once("moneta-sdk-lib/autoload.php"); $mSdk = new Moneta\MonetaSdk(''); $operationId = 1234567890; $mSdk->getOperationDetailsById($operationId); ``` --- ## Документация SDK - #### [Базовые методы](baseMethods.md); - #### [Описание config-файлов](config.md); - #### [Обработка http-уведомлений от Монеты](notifications.md);