Перейти к содержимому

Страница оплаты

Самая быстрая интеграция: создайте платёж и перенаправьте плательщика на его checkout_url. Страница показывает сумму и реквизиты для перевода, следит за ходом платежа и возвращает плательщика к вам, когда платёж завершён. Платёжный интерфейс вы не строите.

examples/curl/payments/create.sh
#!/usr/bin/env bash
# Create a payment and send the payer to its checkout_url.
set -euo pipefail
. "$(dirname "$0")/../signed-request.sh"
body=$(cat <<JSON
{
"merchant_order_id": "${ORDER_ID:-order-$(mka_new_key)}",
"amount": "${AMOUNT:-2500.00}",
"currency": "LKR",
"return_url": "https://shop.example.lk/orders/return"
}
JSON
)
mka_request POST "/v1/payments" "$body" "$(mka_new_key)"
Поле
merchant_order_id Номер вашего заказа, 1–128 символов, уникальный в проекте. Повторная отправка с тем же телом возвращает тот же платёж.
amount Строка с двумя знаками после точки: "2500.00".
currency LKR.
return_url Необязательно. Только https://. Куда кнопка страницы ведёт плательщика после завершения платежа.
locale Необязательно: en, si, ta или ru. Язык страницы, если плательщик не выбрал свой; иначе — язык браузера, затем английский.
  1. Страница открывается, пока платёж в статусе pending, и показывает реквизиты, как только они выданы.
  2. Если проект разрешает плательщикам выбирать банк, плательщик сначала выбирает его; реквизиты появляются через несколько секунд.
  3. Плательщик переводит точную сумму из банковского приложения. Страница обновляется сама: перезагружать её не нужно.
  4. При succeeded, failed или cancelled страница сообщает исход и предлагает вернуться на return_url.

Ссылка одна и та же во всех ответах по этому платежу, её нельзя угадать, и она открывается, пока платёж идёт, и ещё 24 часа после его завершения. В ней нет ключа: отправляйте её плательщику как есть — редиректом, ссылкой в письме, QR-кодом.

return_url — это удобство, а не доказательство оплаты. Плательщик может закрыть вкладку или вернуться раньше, чем пришли деньги. Решайте по статусу платежа — из его вебхука или GET:

examples/curl/payments/get.sh
#!/usr/bin/env bash
# Read a payment: the truth after a webhook, a timeout or a 503.
set -euo pipefail
. "$(dirname "$0")/../signed-request.sh"
payment_id=$(mka_required PAYMENT_ID)
mka_request GET "/v1/payments/$payment_id"