1. JWT
Rapira
  • Введение
  • JWT
    • Инструкция по созданию JWT
    • Generate JWT
      POST
  • CRYPTO MERCHANT
    • Адреса
      • Get address by currency
      • Create address by currency
      • Get address details by id
      • Get address list by currency
      • Start use address
      • Stop use address
    • Пополнения
      • Get deposits
  • MARKET
    • Get spot fees
      GET
    • Pairs
      GET
    • Token
      GET
    • Get rates JSON
      GET
    • Get rates XML
      GET
    • Get market depth
      POST
  • BALANCE
    • Get frozen balances
      GET
    • Get balance operations coins and types
      GET
    • Get balance operations
      POST
    • Get frozen balances detailed
      GET
    • Get Balances
      GET
  • SERVER TIME
    • Get server time
      GET
  • ORDER
    • Order history
      GET
    • Order details
      GET
    • Add exchange order
      POST
    • Cancel order
      POST
  • CRYPTO PAYOUT
    • Withdraw
      • Withdraw create
      • Withdraw crypto history Record
      • Withdraw crypto history
  • FIAT PAYOUT
    • Fiat
      • Withdraw fiat history
      • Withdraw fiat history Record
    • FIAT TRANSACTION
      • Fiat Transactions
      • Fiat Withdraw For Record
  • AML
    • AML balance
    • Recheck
    • Check address
    • Check transaction
  • rCode
    • Create rCode
    • rCode withdraw history
    • rCode deposit history
    • rCode details
    • Use rCode
  • OTC
    • Введение в OTC
    • Get payment types
    • Get my ads
    • Create ad
    • Update ad
    • Publish ad
    • Unpublish ad
    • Get offers
    • Fetch ads
    • Get order detail
    • Create order
    • Accept order
    • Decline order
    • Cancel order
    • Chat-history
    • Chat history page query
    • Pay order
    • Release order
    • Cancel appeal
    • Get order history
    • Create appeal
    • Send message
  • CRYPTO-PROCESSING
    • Введение
    • Создание проекта
    • Настройка проекта
    • Работа с инвойсами
    • Projects Settings
      • Get Invoices (Paginated)
      • Set deposit return address
      • Get Available Token Settings
      • Get Project Token Settings
      • Update Project Token Settings
      • Batch Update Project Token Settings
      • Get Projects
      • Edit Project
    • Invoice
      • Available Invoice Currencies
      • Create Invoice
      • Get Invoice
      • Get Available Payment Tokens for Invoice
      • Get Payment Address for Invoice
      • Manual Complete Undepaid Invoice
  • Schemas
    • CryptoProcessing
      • CryptoInvoice
      • CryptoPaymentQuote
      • CryptoDeposit
      • ProjectProcessingTokenSetting
      • ProjectProcessingTokenSettingEditRequest
      • ProjectResponse
  1. JWT

Инструкция по созданию JWT

Инструкция по созданию JWT токена:#

Rapira использует стандартную схему JWT авторизации (документация: https://jwt.io/ и https://tools.ietf.org/html/rfc7519), то есть для работы с методами API вначале нужно запросить у сервера JWT токен, который уже будет использоваться в Bearer аутентификации.
Полученный токен нужно сохранить и использовать его для запросов. Не нужно создавать новый токен на каждый запрос.
Время жизни JWT токена ограничено, и после его истечения токен становится недействительным.
Время жизни JWT определяется параметрами API ключа, и может быть изменено в настройках для каждого API ключа. Минимальное время жизни JWT 30 минут, максимальное 24 часа. По умолчанию значение TTL 24 часа.
Параметры JWT запроса:
exp - опциональный, время жизни JWT запроса. Не устанавливайте его слишком большим и не оставляйте пустым, если вы не планируете переиспользовать запрос многократно.
jti - обязательный, уникальный идентификатор запроса.
алгоритм подписи JWT - RS256
все остальные опциональные параметры не используются и устанавливать их не обязательно.
Для декодирования и проверки токенов можно использовать онлайн отладчик на сайте https://jwt.io//
PHP
NodeJS
Python
if(!class_exists('JWT')){
class JWT
{
function __construct(){

} 

function encode($payload, $key)
{
$algo = 'RS256';
$header = array('typ' => 'JWT', 'alg' => $algo);

$segments = array();
$segments[] = $this->urlsafeB64Encode($this->jsonEncode($header));
$segments[] = $this->urlsafeB64Encode($this->jsonEncode($payload));
$signing_input = implode('.', $segments);

$signature = $this->sign($signing_input, $key);
$segments[] = $this->urlsafeB64Encode($signature);

return implode('.', $segments);
}

function sign($payload, $key)
{
$passphrase = '';

$algo = OPENSSL_ALGO_SHA256;
$key_type = OPENSSL_KEYTYPE_RSA;

$privateKey = openssl_pkey_get_private($key, $passphrase);

if (is_bool($privateKey)) {
$error = openssl_error_string();
throw new Exception($error);
}

$details = openssl_pkey_get_details($privateKey);

if (!array_key_exists('key', $details) || $details['type'] !== $key_type) {
throw new Exception("Invalid key provided");
}

$signature = '';

if (!openssl_sign($payload, $signature, $privateKey, $algo)) {
$error = openssl_error_string();
throw new Exception($error);
}

return $signature;
}

function jsonDecode($input)
{
$obj = json_decode($input);
if (function_exists('json_last_error') && $errno = json_last_error()) {
$this->_handleJsonError($errno);
} else if ($obj === null && $input !== 'null') {
throw new Exception('Null result with non-null input');
}
return $obj;
}

function jsonEncode($input)
{
$json = json_encode($input);
if (function_exists('json_last_error') && $errno = json_last_error()) {
$this->_handleJsonError($errno);
} else if ($json === 'null' && $input !== null) {
throw new Exception('Null result with non-null input');
}
return $json;
}

function urlsafeB64Decode($input)
{
$remainder = strlen($input) % 4;
if ($remainder) {
$padlen = 4 - $remainder;
$input .= str_repeat('=', $padlen);
}
return base64_decode(strtr($input, '-_', '+/'));
}

function urlsafeB64Encode($input)
{
return str_replace('=', '', strtr(base64_encode($input), '+/', '-_'));
}

function _handleJsonError($errno)
{
$messages = array(
JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
JSON_ERROR_CTRL_CHAR => 'Unexpected control character found',
JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON'
);
throw new Exception(
isset($messages[$errno])
? $messages[$errno]
: 'Unknown JSON error: ' . $errno
);
}
}
}

$private_key = "{здесь Ваш privateKey}";
$uid= "{Здесь Ваш uid}";
$request = array('exp' => time() + 3600, 'jti' => bin2hex(random_bytes(12)));
$class = new JWT();
$payload = $class->encode($request, base64_decode($private_key, true));
$post_data = array('kid' => $uid, 'jwt_token' => $payload);

print_r($post_data);
?>
Modified at 2026-01-12 14:05:57
Previous
Введение
Next
Generate JWT
Built with