moneta-sdk-php/README.md

157 lines
8.2 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# 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
<?xml version="1.0" encoding="UTF-8"?>
<MNT_RESPONSE>
<MNT_ID>12346578</MNT_ID>
<MNT_TRANSACTION_ID>ORDER_471</MNT_TRANSACTION_ID>
<MNT_RESULT_CODE>200</MNT_RESULT_CODE>
<MNT_SIGNATURE>ec134dd3a9d2d0e84597f5bf0eef8a3e</MNT_SIGNATURE>
<MNT_ATTRIBUTES>
<MNT_ATTRIBUTE>
<KEY>INVENTORY</KEY>
<VALUE>[{"name":"Тестовый товар 2","price":123.45,"quantity":1,"vatTag":"1105","pm":"full_payment","po":"commodity"}]</VALUE>
</MNT_ATTRIBUTE>
<MNT_ATTRIBUTE>
<KEY>CUSTOMER</KEY>
<VALUE>com@moneta.ru</VALUE>
</MNT_ATTRIBUTE>
<MNT_ATTRIBUTE>
<KEY>DELIVERY</KEY>
<VALUE>67.89</VALUE>
</MNT_ATTRIBUTE>
</MNT_ATTRIBUTES>
</MNT_RESPONSE>
```
## Документация SDK
В документации описаны методы и примеры их использования:
- #### [Описание config-файлов](docs/config.md);
- #### [Базовые методы](docs/baseMethods.md);
- #### [Обработка http-уведомлений от Монеты](docs/notifications.md);
- #### [Методы MerchantAPI](docs/merchantAPI.md).