От заказа до подтверждённого платежа.
Все секретные запросы выполняйте на сервере магазина. Ключ API не должен попадать в браузер покупателя.
Создайте счёт
POST /api/v1/processing/invoices
curl https://crypto.payx.kz/api/v1/processing/invoices \
-H 'Authorization: Bearer YOUR_SERVER_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"orderId": "order-1042",
"amount": "100",
"currency": "USD",
"settlementCoin": "USDT"
}'Валюта счёта: USD / Валюта расчётов. orderId — Номер заказа. amount — сумма строкой с точкой в качестве разделителя.
Повторный orderId в одном магазине возвращает тот же счёт. Изменение параметров отклоняется: 409 IDEMPOTENCY_CONFLICT.
Откройте checkoutUrl
{
"data": {
"id": "INVOICE_UUID",
"status": "created",
"checkoutUrl": "https://crypto.payx.kz/pay/OPAQUE_TOKEN"
}
}Сумма заказа, выбор монеты и сети, индивидуальный адрес и обязательный memo, если он нужен.
GET /api/v1/processing/invoices/:id · Bearer API key
Проверьте webhook и статус
Подпись HMAC-SHA256 считается от timestamp + точка + исходное тело запроса. Проверяйте время и подпись до обработки; не обрабатывайте eventId повторно.
Payx-Event-Id: EVENT_UUID
Payx-Timestamp: UNIX_SECONDS
Payx-Signature: HMAC_SHA256_HEX
{
"eventId": "EVENT_UUID",
"type": "payment.paid",
"invoiceId": "INVOICE_UUID",
"orderId": "order-1042",
"status": "paid",
"settlementCoin": "USDT"
}После подтверждения поступления и необходимых расчётов. Магазин получает подписанный webhook и может запросить состояние через API. Возврат покупателя на сайт сам по себе не подтверждает оплату.