Getting Started
Ключи для Payout
Как сгенерировать RSA-ключ и настроить клиент для Payout API.
Ключи для Payout
Эта схема подписи применяется только к Payout. Для Payin Classic и Payin H2H используется ed25519 — см. Ключи для Payin.
Payout API использует RSA-подпись с ключами в формате PEM. Каждый клиент идентифицируется по username и своему приватному RSA-ключу.
Что нужно для подключения
| Параметр | Что это | Где взять |
|---|---|---|
baseUrl | URL сервера Payout | Выдаём вручную |
username | Имя пользователя | Выдаём вручную |
privateKeyPem | Ваш приватный RSA-ключ (PEM) | Вы генерируете сами |
serverPublicKeyPem | Публичный ключ сервера | Опционально, выдаём вручную для верификации ответов |
Публичная часть вашего RSA-ключа передаётся нам вручную до начала работы — так же, как в Payin.
Генерация ключей
Для RSA можно использовать openssl (в отличие от ed25519).
# Приватный ключ (PKCS#8, 2048 бит)
openssl genpkey -algorithm RSA -out private-key.pem -pkeyopt rsa_keygen_bits:2048
# Публичный ключ — вы передаёте его нам
openssl rsa -in private-key.pem -pubout -out public-key.pem
В SDK также есть утилиты для генерации:
go run examples/generate_keys/main.go
npm run generate-keys
python examples/generate_keys.py
php examples/generate_keys.php
Инициализация клиента
import (
"os"
payout "github.com/unitewt/sdk-payout/go"
)
privateKey, _ := os.ReadFile("private-key.pem")
config, err := payout.NewConfig(
"https://your-server.example.com",
"your_username",
privateKey,
)
if err != nil {
panic(err)
}
client := payout.NewClient(config)
import fs from 'node:fs'
import { PayoutClient } from '@unitewt/sdk-payout'
const client = new PayoutClient({
baseUrl: 'https://your-server.example.com',
username: 'your_username',
privateKeyPem: fs.readFileSync('./private-key.pem', 'utf8'),
})
from pathlib import Path
from sdk_payout import PayoutClient, Config
config = Config(
base_url="https://your-server.example.com",
username="your_username",
private_key_pem=Path("./private-key.pem").read_bytes(),
)
client = PayoutClient(config)
use SdkPayout\PayoutClient;
use SdkPayout\Config;
$config = new Config(
baseUrl: 'https://your-server.example.com',
username: 'your_username',
privateKeyPem: file_get_contents('./private-key.pem'),
);
$client = new PayoutClient($config);
Верификация ответов сервера
Передайте публичный ключ сервера через опциональный параметр — SDK будет проверять подпись ответов:
config, _ := payout.NewConfig(baseURL, username, privateKey,
payout.WithServerPublicKey(serverPubKey),
)
const client = new PayoutClient({
baseUrl, username, privateKeyPem,
serverPublicKeyPem: fs.readFileSync('./server-public.pem', 'utf8'),
})
config = Config(
base_url=base_url,
username=username,
private_key_pem=private_key,
server_public_key_pem=Path("./server-public.pem").read_bytes(),
)
$config = new Config(
baseUrl: $baseUrl,
username: $username,
privateKeyPem: $privateKey,
serverPublicKeyPem: file_get_contents('./server-public.pem'),
);
Переменные окружения в примерах
Во всех SDK интеграционные тесты читают из одних и тех же переменных:
export PAYOUT_BASE_URL="https://your-server.example.com"
export PAYOUT_USERNAME="your_username"
export PAYOUT_PRIVATE_KEY_PATH="./private-key.pem"