Подключите оплату Paynet за 15 минут
Пошаговое руководство для разработчика: возьмите тестовый API-ключ, создайте платеж, перенаправьте покупателя на страницу оплаты и проверьте webhook, с тестовыми картами, чтобы не тратить реальные деньги.
Это руководство проведет вас от нуля до работающего платежа примерно за пятнадцать минут. Вы создадите платеж, отправите покупателя на страницу оплаты и подтвердите результат через webhook, все в тестовом режиме, так что реальные деньги не двигаются.
1. Получите тестовый API-ключ
Каждый аккаунт Paynet начинается с тестового API-ключа с именем Default. Он находится в разделе API-ключи вашей панели управления, там же можно создать еще один. Тестовые ключи начинаются с sk_test_, и каждый платеж, созданный с таким ключом, является платежом sandbox: банк не задействуется, ничего не списывается, и подтвержденный домен пока не нужен.
2. Создайте платеж
Отправьте один запрос с суммой в армянских драмах, номером вашего заказа и адресом, куда вернуть покупателя:
curl https://paynet.am/api/v1/payments \
-H "X-Paynet-Key: sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "AMD",
"order_id": "ORD-1001",
"return_url": "https://shop.am/return",
"callback_url": "https://shop.am/webhooks/paynet"
}'
Поле processor необязательно. Если его не передать, покупатель выберет способ оплаты на странице оплаты. В ответе есть checkout_url. Перенаправьте покупателя туда.
3. Используйте тестовые карты
На странице оплаты sandbox результат определяет номер карты:
4111 1111 1111 1111- одобрено4000 0000 0000 0002- отклонено4000 0000 0000 0069- недостаточно средств4000 0000 0000 0119- тайм-аут процессора
Срок действия, CVV и имя держателя не проверяются, вводите что угодно.
4. Проверьте webhook
Когда платеж достигает финального статуса, Paynet отправляет подписанный POST-запрос на ваш callback_url. Paynet отправляет два события:
transaction.status.updated- платеж достиг финального статуса:completed,failedилиexpired.payment.refunded- возврат выполнен. В этом случае тело также содержит объектrefund.
Так выглядит завершенный платеж sandbox (сокращенно):
{
"delivery_id": "...",
"event": "transaction.status.updated",
"livemode": false,
"timestamp": "2026-06-02T09:00:00+04:00",
"transaction": { "uuid": "...", "order_id": "ORD-1001", "status": "completed", "amount": 5000, "currency": "AMD" }
}
Принимайте решение по имени события и полю transaction.status, а не по отдельному событию на каждый исход. Сначала проверьте заголовок X-Paynet-Signature: это hex HMAC-SHA256 от исходного тела запроса, вычисленный с секретом webhook того сайта, на котором оформлен платеж (раздел «Сайты», кнопка webhook, «Показать секрет»). Для тестового платежа, пока у вас нет собственного подтвержденного сайта, это ваша платежная страница Paynet: m плюс номер вашего аккаунта .pay.paynet.am. Проверку подписи нельзя пропускать никогда. Затем отсейте дубликаты по delivery_id и перечитайте платеж через GET /api/v1/orders/{order_id}/payment, прежде чем отмечать заказ оплаченным.
5. Запуск
Для реальных платежей нужно несколько вещей: подтвержденный домен для return_url и callback_url, верифицированный бизнес и реальный провайдер (ARCA, Idram или Telcell), подключенный и включенный для этого домена. После этого замените тестовый ключ на боевой (sk_live_). Тот же код, который вы только что проверили, работает в production, переписывать ничего не нужно.