Страница оплаты
Самая быстрая интеграция: создайте платёж и перенаправьте плательщика на его checkout_url. Страница
показывает сумму и реквизиты для перевода, следит за ходом платежа и возвращает плательщика к вам, когда
платёж завершён. Платёжный интерфейс вы не строите.
#!/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)"// Create a payment and send the payer to its checkout_url.import { newKey, print, request } from "../signed-request.mjs";
const answer = await request("POST", "/v1/payments", { body: { merchant_order_id: process.env.ORDER_ID ?? `order-${newKey()}`, amount: process.env.AMOUNT ?? "2500.00", currency: "LKR", return_url: "https://shop.example.lk/orders/return", }, idempotencyKey: newKey(),});print(answer);<?php// Create a payment and send the payer to its checkout_url.
declare(strict_types=1);
require __DIR__ . '/../signed_request.php';
mka_show(mka_request( 'POST', '/v1/payments', [ 'merchant_order_id' => getenv('ORDER_ID') ?: 'order-' . mka_new_key(), 'amount' => getenv('AMOUNT') ?: '2500.00', 'currency' => 'LKR', 'return_url' => 'https://shop.example.lk/orders/return', ], mka_new_key(),));"""Create a payment and send the payer to its checkout_url."""import os
from signed_request import new_key, request, show
show(request( "POST", "/v1/payments", body={ "merchant_order_id": os.environ.get("ORDER_ID") or f"order-{new_key()}", "amount": os.environ.get("AMOUNT", "2500.00"), "currency": "LKR", "return_url": "https://shop.example.lk/orders/return", }, idempotency_key=new_key(),))//go:build ignore
// Create a payment and send the payer to its checkout_url.package main
import ( "docs.processing.yolotech.cc/examples/signedrequest")
func main() { signedrequest.Show(signedrequest.Request("POST", "/v1/payments", map[string]any{ "merchant_order_id": signedrequest.Env("ORDER_ID", "order-"+signedrequest.NewKey()), "amount": signedrequest.Env("AMOUNT", "2500.00"), "currency": "LKR", "return_url": "https://shop.example.lk/orders/return", }, signedrequest.NewKey()))}Что вы отправляете
Заголовок раздела «Что вы отправляете»| Поле | |
|---|---|
merchant_order_id |
Номер вашего заказа, 1–128 символов, уникальный в проекте. Повторная отправка с тем же телом возвращает тот же платёж. |
amount |
Строка с двумя знаками после точки: "2500.00". |
currency |
LKR. |
return_url |
Необязательно. Только https://. Куда кнопка страницы ведёт плательщика после завершения платежа. |
locale |
Необязательно: en, si, ta или ru. Язык страницы, если плательщик не выбрал свой; иначе — язык браузера, затем английский. |
Что видит плательщик
Заголовок раздела «Что видит плательщик»- Страница открывается, пока платёж в статусе
pending, и показывает реквизиты, как только они выданы. - Если проект разрешает плательщикам выбирать банк, плательщик сначала выбирает его; реквизиты появляются через несколько секунд.
- Плательщик переводит точную сумму из банковского приложения. Страница обновляется сама: перезагружать её не нужно.
- При
succeeded,failedилиcancelledстраница сообщает исход и предлагает вернуться наreturn_url.
Ссылка одна и та же во всех ответах по этому платежу, её нельзя угадать, и она открывается, пока платёж идёт, и ещё 24 часа после его завершения. В ней нет ключа: отправляйте её плательщику как есть — редиректом, ссылкой в письме, QR-кодом.
Когда плательщик вернулся
Заголовок раздела «Когда плательщик вернулся»return_url — это удобство, а не доказательство оплаты. Плательщик может закрыть вкладку или вернуться
раньше, чем пришли деньги. Решайте по статусу платежа — из его вебхука
или GET:
#!/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"// Read a payment: the truth after a webhook, a timeout or a 503.import { print, request, required } from "../signed-request.mjs";
const paymentId = required("PAYMENT_ID");const answer = await request("GET", `/v1/payments/${paymentId}`);print(answer);<?php// Read a payment: the truth after a webhook, a timeout or a 503.
declare(strict_types=1);
require __DIR__ . '/../signed_request.php';
$paymentId = mka_required('PAYMENT_ID');mka_show(mka_request('GET', "/v1/payments/{$paymentId}"));"""Read a payment: the truth after a webhook, a timeout or a 503."""from signed_request import request, required, show
payment_id = required("PAYMENT_ID")show(request("GET", f"/v1/payments/{payment_id}"))//go:build ignore
// Read a payment: the truth after a webhook, a timeout or a 503.package main
import ( "docs.processing.yolotech.cc/examples/signedrequest")
func main() { paymentID := signedrequest.Required("PAYMENT_ID") signedrequest.Show(signedrequest.Request("GET", "/v1/payments/"+paymentID, nil, ""))}