integrationmonitoring/moneta-php-sdk

This package is abandoned and no longer maintained. The author suggests using the moneta-integrations/moneta-sdk-php package instead.

PHP SDK of the payment gateway Moneta

This package has no released version yet, and little information is available.


README

SDK PHP для использования платежных методов Монета | PayAnyWay

Документация SDK
Документация Монеты

Требования

PHP 8.0 (и выше)

Установка

Установка через composer

  1. Добавьте строку "moneta/moneta-sdk-php": "^2.0" в список зависимостей вашего проекта в файле composer.json
    ...
     "require": {
         "php": ">=8.0.0",
         "moneta/moneta-sdk-php": "^2.0"
     }
    ...
    

    а также разместите следующе скрипты, они скопируют из пакета moneta/moneta-sdk-php каталог конфигурации (config) и разместят у вас в корне проекта.

    ...
    "scripts": {
         "moneta-copy-config": [
             "php -r \"if(!is_dir('config')){ mkdir('config');}\"",
             "php -r \"copy('vendor/moneta/moneta-sdk-php/config/account.php', 'config/account.php');\"",
             "php -r \"copy('vendor/moneta/moneta-sdk-php/config/url.php', 'config/url.php');\""
         ]
     }
    ...
    
  2. Обновите зависимости проекта. В консоли перейдите в каталог, где лежит composer.json, и выполните команду:
    composer update
    
  3. Выполните скрипт:
    composer moneta-copy-config
    
  4. В коде вашего проекта подключите автозагрузку файлов нашего клиента:
    include_once('vendor/autoload.php');
    

    Установка через git

  5. Выполните следующую команду:
    git clone https://git.pub.moneta.ru/moneta-labs/integrations/moneta-sdk-php
    
  6. В коде вашего проекта подключите автозагрузку файлов нашего клиента:
    include_once('moneta-sdk-new/autoload.php');
    

    Начало работы

  7. В конфигурации SDK укажите свои данные:
    1.1. Если вы планируете использовать базовый функционал (однофазная оплата), то заполните только следующие параметры:
    id --- номер бизнес счета;
    secret --- код проверки целостности данных;
    demo_mode --- указать true, если вы проводите интеграцию на демо-стенде (demo.moneta.ru).

    1.2. Если вы планируете использовать функционал MerchantAPI, то требуется указать дополнительно:
    username --- логин от личного кабинета Moneta | PayAnyWay;
    password --- пароль от личного кабинета Moneta | PayAnyWay;
    payment_password --- платежный пароль.

    Полное описание config-файлов можете прочитать здесь.

  8. Пример генерации ссылки на оплату с помощью MONETA.Assistant:

    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. Ответ без передачи номенклатуры:  

include_once('vendor/autoload.php');

$orderId = $_POST['MNT_TRANSACTION_ID']; // Номер заказа, по которому пришло уведомление $mSdk = new Moneta\MonetaSdk($orderId); $mSdk->responseToPaymentNotification(); // Результат: SUCCESS

В результате для Монеты будет предоставлен минимальный ответ `SUCCESS`. Для платежной системы это будет обозначать, что система магазина приняла уведомление и изменила на своей стороне статус, после чего в Монете у операции будет присвоен статус "Выполнена".  

3.2. Ответ с передачей номенклатуры:  

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 version="1.0" encoding="UTF-8"?>

<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>

## Документация SDK
В документации представлено подробное описание методов, а также приведены примеры их использования.
- #### [Описание config-файлов](docs/config.md);
- #### [Базовые методы](docs/baseMethods.md);
- #### [Обработка http-уведомлений от Монеты](docs/notifications.md);
- #### [Методы MerchantAPI](docs/merchantAPI.md).