Оберіть, як платитиме покупець
| Варіант | Кому підходить | Складність |
|---|---|---|
Готова сторінка оплати — перенаправлення на checkout_url | Будь-який сайт, найшвидший запуск. Показує суму, мережу, адресу, QR і живий статус | Один API-запит |
Власна сторінка оплати — показуєте crypto.address і crypto.amount_coin | Власний UX, покупець не залишає ваш домен | API-запит + ваш інтерфейс |
| CMS — WooCommerce, Shopify | Магазини на платформах | Див. розділи нижче |
Крок 1 — створіть замовлення на сервері
Ніколи не створюйте замовлення з браузера із секретним ключем. Викликайте API зі свого сервера, передаючи суму кошика й монету, яку обрав покупець:
curl -X POST https://api.utopay.app/v1/crypto/payments \
-H "Authorization: Bearer utopay_sk_live_..." \
-H "content-type: application/json" \
-d '{ "coin": "bep20/usdt", "amount": 49.90, "currency": "EUR",
"description": "Order #1042",
"success_url": "https://shop.example/thanks",
"cancel_url": "https://shop.example/cart" }'
З акаунтом гаманець для виплат береться з налаштувань проєкту. Без акаунта використовуйте POST /v1/crypto/pay і передайте payout_address. Список монет і мереж із мінімальними сумами — у GET /v1/crypto/coins.
Крок 2 — надішліть покупця на оплату
- Перенаправте на
checkout_url: сторінка показує точну суму, мережу, QR-код і живий статус, а потім повертає покупця на вашsuccess_url. - Або виведіть
crypto.addressіcrypto.amount_coinсамостійно й опитуйтеGET /v1/payments/:id, поки покупець на сторінці.
Крок 3 — підтвердьте оплату вебхуком
Не покладайтеся лише на повернення на сайт. Позначайте замовлення оплаченим, коли ваш ендпоінт отримає підписану подію payment.succeeded; обробляйте payment.underpaid, якщо надійшло менше, ніж потрібно. Перевіряйте заголовок x-utopay-signature своїм секретом whsec_… — приклади на Node.js, PHP і Python є в документації з вебхуків.
<?php // PHP: перевірка вебхука UTOPAY
$raw = file_get_contents("php://input");
parse_str(str_replace(",", "&", $_SERVER["HTTP_X_UTOPAY_SIGNATURE"]), $sig);
$expected = hash_hmac("sha256", $sig["t"] . "." . $raw, getenv("UTOPAY_WHSEC"));
if (!hash_equals($expected, $sig["v1"] ?? "") || abs(time() - (int)$sig["t"]) > 300) {
http_response_code(400); exit;
}
$event = json_decode($raw, true);
if ($event["event"] === "payment.succeeded") { /* позначити $event["data"]["id"] оплаченим */ }
http_response_code(200);
WordPress і WooCommerce
Для WooCommerce є готовий плагін UTOPAY — див. розділ плагіни. Без плагіна магазин на WooCommerce підключається через API: створіть замовлення в хуку woocommerce_checkout_order_processed, надішліть покупця на checkout_url і завершіть замовлення з обробника вебхука.
Shopify
Shopify показує як платіжний шлюз лише схвалені платіжні застосунки. Робоча схема — ручний спосіб оплати (наприклад, «Оплата криптою») плюс сторінка оплати UTOPAY: під час оформлення замовлення ваш застосунок або автоматизація створює замовлення UTOPAY на суму покупки й надсилає покупцеві лист із checkout_url. Потім вебхук позначає замовлення в Shopify оплаченим.
Чек-лист перед запуском
- Перевірте весь сценарій із тестовими ключами (
utopay_sk_test_…) — тестові замовлення не йдуть у блокчейн. - Переконайтеся, що гаманець для виплат підтримує всі мережі, які ви пропонуєте.
- Показуйте назву мережі поруч із сумою — перекази не в ту мережу найчастіша причина звернень у підтримку.
- Зберігайте
idзамовлення UTOPAY разом зі своїм замовленням і дедуплікуйте вебхуки за ним. - Заздалегідь вирішіть, що робити із замовленнями в статусі
underpaid.
Оновлено · Команда UTOPAY