plakidan/monobank-pay

这是一个简单的Monobank Acquiring库,名为"MonoPay",基于REST API(v2304)文档,文档位于https://api.monobank.ua/docs/acquiring.html

v0.2.0 2024-05-12 07:23 UTC

This package is auto-updated.

Last update: 2024-09-12 08:10:37 UTC


README

REST API文档 在这里

进行查询需要使用从个人账户https://fop.monobank.ua/获得的令牌或从https://api.monobank.ua/获得的测试令牌

安装库

composer require plakidan/monobank-pay

还提供了php5.6的版本

composer require plakidan/monobank-pay:dev-php5.6-adaptation

最小要求

  • php >=7.4
  • guzzlehttp/guzzle >= 7.0
  • starkbank/ecdsa >= 0.0.5

使用示例

require_once 'vendor/autoload.php';

//створили клієнта - через нього запити будуть слатись
$monoClient = new \MonoPay\Client('YOUR_TOKEN_HERE');

//із клієнта можна отримати id та назву мерчанта
echo $monoClient->getMerchantId();
echo $monoClient->getMerchantName();

//для створення платежів створюємо цей об'єкт
$monoPayment = new \MonoPay\Payment($monoClient);

//створення платежу
$invoice = $monoPayment->create(
    1000,
    [
        //деталі оплати
        'merchantPaymInfo' => [
            'reference' => 'my_shop_order_28142', //номер чека, замовлення, тощо; визначається мерчантом (вами)
            'destination' => 'Оплата за замовлення #28142', //призначення платежу
            'basketOrder' => [ //наповнення замовлення, використовується для відображення кошика замовлення
                [
                    'name' => 'Товар1', //назва товару
                    'qty' => 2, //кількість
                    'sum' => 500, //сума у мінімальних одиницях валюти за одиницю товару
                    'icon' => 'https://example.com/images/product1.jpg', //посилання на зображення товару
                    'unit' => 'уп.', //назва одиниці вимiру товару
                ],
            ],
        ],
        'redirectUrl' => 'https://example.com/order-result', //адреса для повернення (GET) - на цю адресу буде переадресовано користувача після завершення оплати (у разі успіху або помилки)
        'webHookUrl' => 'https://example.com/mono-webhook', //адреса для CallBack (POST) – на цю адресу буде надіслано дані про стан платежу при кожній зміні статусу. Зміст тіла запиту ідентичний відповіді запиту “перевірки статусу рахунку”
        'validity' => 3600 * 24 * 7, //строк дії в секундах, за замовчуванням рахунок перестає бути дійсним через 24 години
        'paymentType' => 'debit', //debit | hold. Тип операції. Для значення hold термін складає 9 днів. Якщо через 9 днів холд не буде фіналізовано — він скасовується
    ]
);
print_r($invoice);

//інформація про платіж
$invoice = $monoPayment->info('2305046jUBEj8WfyaBdB');
print_r($invoice);

//відшкодування
$result = $monoPayment->refund('2305046jUBEj8WfyaBdB');
print_r($result);

//скасування посилання на оплату
$result = $monoPayment->cancel('2305046jUBEj8WfyaBdB');
print_r($result);

//деталі успішної оплати
$invoiceDetails = $monoPayment->successDetails('2305046jUBEj8WfyaBdB');
print_r($invoiceDetails);

//списати заблоковану сумму
//зверніть увагу: списати можна тільки таку самму або меншу сумму яку ви заблокували
$result = $monoPayment->captureHold('2305046jUBEj8WfyaBdB', 500);
print_r($result);

//список успішних оплат за останні сутки
$list = $monoPayment->items(time() - 60 * 60 * 24);
print_r($list);

//оплата по токену (токен можна отримати якщо створити платіж і додати в цей платіж помітку saveCardData)
$result = $monoPayment->createWithCardToken('67XZtXdR4NpKU3',50.99,[
        'ccy' => 980, //валюта гривня
        'initiationKind' => \MonoPay\Payment::TOKEN_PAYMENT_INIT_KIND_MERCHANT //або client - ініціатор платежу
    ]);
print_r($result);

//список прив'язаник карток
$result = $monoPayment->listCardTokens('user_245'); //user_245 - walletId який ви вказували при створенні токену на прешому платежі
print_r($result);

//видалення картки 
deleteCardToken('67XZtXdR4NpKU3');

获取Webhook

注意!!!必须使用try-catch封装Webhook的处理,因为如果您以非200状态码响应,而Webhook很多,您的IP可能会被临时封禁(不知道多久,我有过一天)

require_once 'vendor/autoload.php';

//створили клієнта - через нього запити будуть слатись
$monoClient = new \MonoPay\Client('YOUR_TOKEN_HERE');

//отримання публічного ключа (бажано закешувати)
$publicKey = $monoClient->getPublicKey();

//класс для роботи з вебхуком
$monoWebhook = new \MonoPay\Webhook($monoClient, $publicKey, $_SERVER['HTTP_X_SIGN']);
//отримуємо вхідні дані
$body = file_get_contents('php://input');
//валідуємо дані
if ($monoWebhook->verify($body)) {
    echo 'Ці дані прислав монобанк, можна обробляти';
} else {
    echo 'Дані прислав шахрай, ігноруємо';
}

待办事项列表

  • 将输入参数和输出数据转换为具有描述性方法的类
  • 向Gorokhovsky请求一杯啤酒

补充说明。我乐于接受您的pull请求