Примеры cURL
Минимальные запросы для ручной проверки контракта. Базовый адрес и ключ берите из окружения; не вставляйте реальный ключ в историю команд общего компьютера и не запускайте примеры против чужого или не выданного вам адреса.
export ELEVENPAY_BASE_URL="<базовый адрес, выданный при подключении>"
export ELEVENPAY_API_KEY="ep_live_<keyid>_<secret>"Пилотный режим
Счета Cashier создают реальный запрос на оплату на телефон плательщика (окружение live; песочницы нет). Не используйте номер реального плательщика для проб.
Создать счёт
curl -i -X POST "$ELEVENPAY_BASE_URL/v1/cashier/invoices" \
-H "Authorization: Bearer $ELEVENPAY_API_KEY" \
-H "Idempotency-Key: order-1001-v1" \
-H "Content-Type: application/json" \
-d '{"amount":"1500.00","currency":"KZT","merchant_order_id":"order_demo_1001","customer_phone":"77001234567"}'Ожидаемо: 201 Created с invoice_state: "queued". Тот же запрос ещё раз → 200 OK и заголовок Idempotency-Replayed: true, тот же reference.
Прочитать счёт
curl -i "$ELEVENPAY_BASE_URL/v1/cashier/invoices/ep1_7t4k2m8q9x3v6b1n5c0d2f4a8h" \
-H "Authorization: Bearer $ELEVENPAY_API_KEY"Чужая или неизвестная ссылка → 404 invoice_not_found (одинаково).
Проверить обработку ошибок
# без Idempotency-Key → 400 idempotency_key_required
curl -i -X POST "$ELEVENPAY_BASE_URL/v1/cashier/invoices" \
-H "Authorization: Bearer $ELEVENPAY_API_KEY" -H "Content-Type: application/json" \
-d '{"amount":"1500.00","currency":"KZT","merchant_order_id":"order_demo_1002","customer_phone":"77001234567"}'
# дробная сумма → 422 amount_not_whole_tenge
curl -i -X POST "$ELEVENPAY_BASE_URL/v1/cashier/invoices" \
-H "Authorization: Bearer $ELEVENPAY_API_KEY" -H "Idempotency-Key: order-1003-v1" \
-H "Content-Type: application/json" \
-d '{"amount":"1500.50","currency":"KZT","merchant_order_id":"order_demo_1003","customer_phone":"77001234567"}'Проверить подпись вебхука вручную
Подпись — HMAC-SHA256(секрет, "<t>." + сырое тело) в нижнем регистре hex (Проверка подписи). Для ручной проверки на тестовых данных:
t=1790000000
body='{"id":"evt_demo","type":"payment.succeeded","schema_version":1}'
printf '%s.%s' "$t" "$body" | openssl dgst -sha256 -hmac "demo-only-secret" -hexНабор содержит curl/send-test-webhook.sh, который подписывает так же и отправляет событие в ваш локальный приёмник (секрет — выдуманный, не от реального endpoint).