moneta-sdk-php/docs/merchantAPI.md

145 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Методы MerchantAPI
[Документация Монеты](https://docs.moneta.ru/)
* [Однофазный платеж](#однофазный-платеж)
* [Двухфазный платеж (операция с холдированием)](#двухфазный-платеж)
* [Подтверждение операции](#подтверждение-операции)
* [Отмена операции](#отмена-операции)
* [Привязка карты (получение токена для рекуррентных платежей)](#привязка-карты)
* [Оплата по рекуррентному токену](#рекуррентный-платеж)
* [Возврат по операции](#возврат)
* [Получить детали операции по ID](#детали-операции-по-id)
* [Документация SDK](#Документация)
---
> **Эти методы доступны только для юридических лиц и ИП. Чтобы узнать, поддерживает ли ваш бизнес-счёт рекуррентные платежи и операции с холдированием, обратитесь в коммерческий отдел: com@payanyway.ru.**
### Однофазный платеж <a name="однофазный-платеж"></a>
[Однофазный платеж в документации](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);
}
```
---
### Двухфазный платеж (операция с холдированием) <a name="двухфазный-платеж"></a>
[Двухфазный платеж в документации](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);
}
```
> **При проведении двухфазного платежа(холдирование), нужно подтвердить или отменить операцию.**
---
### Подтверждение операции<a name="подтверждение-операции"></a>
[Подтверждение операции в документации](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);
```
---
### Отмена операции<a name="отмена-операции"></a>
[Отмена операции в документации](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);
```
---
### Привязка карты (получение токена для рекуррентных платежей)<a name="привязка-карты"></a>
[Привязка карты в документации](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`). Чтобы проводить рекуррентный платеж без дальнейшего участия плательщика: требуется записать токен в базу данны.___
### Оплата по рекуррентному токену<a name="рекуррентный-платеж"></a>
[Оплата по рекуррентному токену в документации](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]`.
---
### Возврат по операции<a name="возврат"></a>
[Возврат по операции в документации (стр. 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<a name="детали-операции-по-id"></a>
[Возврат по операции в документации (стр. 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 <a name="Документация"></a>
- #### [Базовые методы](baseMethods.md);
- #### [Описание config-файлов](config.md);
- #### [Обработка http-уведомлений от Монеты](notifications.md);