Первый платёж за 5 минут
Нужен ключ песочницы (как получить) и одно из: curl, Node 18+, PHP 8.1+, Python 3.9+ или Go 1.24+.
-
Задайте ключ (30 с).
Окно терминала export MKA_KEY='mka_test_…' MKA_SECRET='…' MKA_BASE_URL='https://sandbox.processing.yolotech.cc' -
Скачайте примеры (30 с).
Окно терминала curl -fsSL https://docs.processing.yolotech.cc/examples/curl.tar.gz | tar -xz && cd curlОкно терминала curl -fsSL https://docs.processing.yolotech.cc/examples/node.tar.gz | tar -xz && cd nodeОкно терминала curl -fsSL https://docs.processing.yolotech.cc/examples/php.tar.gz | tar -xz && cd phpОкно терминала curl -fsSL https://docs.processing.yolotech.cc/examples/python.tar.gz | tar -xz && cd pythonОкно терминала curl -fsSL https://docs.processing.yolotech.cc/examples/go.tar.gz | tar -xz && cd go -
Создайте платёж на 2500.00 LKR (1 мин). В песочнице сумма, которая оканчивается на
.00, оплачивается сама примерно через десять секунд после того, как плательщик получил реквизиты.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)"examples/node/payments/create.mjs // 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);examples/php/payments/create.php <?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(),));examples/python/payments/create.py """Create a payment and send the payer to its checkout_url."""import osfrom signed_request import new_key, request, showshow(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(),))examples/go/payments/create.go //go:build ignore// Create a payment and send the payer to its checkout_url.package mainimport ("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()))}Запустите пример —
bash payments/create.sh,node payments/create.mjs,php payments/create.php,python -m payments.createилиgo run ./payments/create.go. Ответ —HTTP 201с платежом:{"payment_id": "019fccd2-3eef-4a33-80b8-cd750e2db99f","status": "pending","checkout_url": "https://sandbox.processing.yolotech.cc/pay/AZ_M0j7v…",…} -
Откройте
checkout_url(1 мин). На эту страницу вы отправляете плательщика. Она показывает реквизиты для перевода, а затем — как проходит платёж. -
Прочитайте платёж (1 мин). Задайте
PAYMENT_IDиз ответа и читайте платёж, пока он не станетsucceeded:Окно терминала export PAYMENT_ID=019fccd2-3eef-4a33-80b8-cd750e2db99fexamples/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"examples/node/payments/get.mjs // 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);examples/php/payments/get.php <?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}"));examples/python/payments/get.py """Read a payment: the truth after a webhook, a timeout or a 503."""from signed_request import request, required, showpayment_id = required("PAYMENT_ID")show(request("GET", f"/v1/payments/{payment_id}"))examples/go/payments/get.go //go:build ignore// Read a payment: the truth after a webhook, a timeout or a 503.package mainimport ("docs.processing.yolotech.cc/examples/signedrequest")func main() {paymentID := signedrequest.Required("PAYMENT_ID")signedrequest.Show(signedrequest.Request("GET", "/v1/payments/"+paymentID, nil, ""))}Статусы идут так:
pending→requires_action(реквизиты выданы) →processing(деньги пришли) →succeeded(деньги на вашем балансе). -
Примите вебхук (1 мин). Направьте события на свой публичный HTTPS-адрес — на ноутбуке его даст туннель, например
cloudflared tunnel --url http://localhost:8080, — и запустите приёмник с секретом из первого ответа:Окно терминала WEBHOOK_URL=https://your-tunnel.example/ node webhooks/endpoint/set.mjs # once: answers the secretWEBHOOK_SECRET='whsec_…' node webhooks/receive.mjsСоздайте ещё один платёж — приёмник печатает каждый статус по мере прихода, уже проверенный:
verified payment.status_changed 019fccd2-… v3 requires_actionverified payment.status_changed 019fccd2-… v5 processingverified payment.status_changed 019fccd2-… v6 succeededПубличного адреса пока нет? В консоли в разделе Разработчикам → Вебхуки видна каждая доставка с телом.
- Отправьте плательщика на страницу оплаты или покажите реквизиты сами (host-to-host).
- Разберитесь в статусах и безопасных повторах.
- Попробуйте другие исходы: правила песочницы.