Skip to content

Примеры cURL ​

Минимальные запросы для ручной проверки контракта. Базовый адрес и ключ берите из окружения; не вставляйте реальный ключ в историю команд общего компьютера и не запускайте примеры против чужого или не выданного вам адреса.

bash
export ELEVENPAY_BASE_URL="<базовый адрес, выданный при подключении>"
export ELEVENPAY_API_KEY="ep_live_<keyid>_<secret>"

Пилотный режим

Счета Cashier создают реальный запрос на оплату на телефон плательщика (окружение live; песочницы нет). Не используйте номер реального плательщика для проб.

Создать счёт ​

bash
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.

Прочитать счёт ​

bash
curl -i "$ELEVENPAY_BASE_URL/v1/cashier/invoices/ep1_7t4k2m8q9x3v6b1n5c0d2f4a8h" \
  -H "Authorization: Bearer $ELEVENPAY_API_KEY"

Чужая или неизвестная ссылка → 404 invoice_not_found (одинаково).

Проверить обработку ошибок ​

bash
# без 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 (Проверка подписи). Для ручной проверки на тестовых данных:

bash
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).