➕Создание заказа
Чтобы сгенерировать ссылку на оплату, требуется создать новый заказ (платёж)
POST
https://api.paynstars.com/createOrder
Название | Тип | Описание |
---|---|---|
project_id* | integer | ID проекта |
order_id* | string | Ваш внутренний ID заказа |
amount* | float | Сумма заказа |
sign* | string | |
currency | string | "STARS" - в Звёздах "USD" - в долларах *По умолчанию - "STARS" |
paygate_id | int | ID платёжного шлюза 1 - telegram stars *другие шлюзы подключаются на индивидуальных условиях |
Ответ:
{
"url":"https://t.me/paynstars_bot?start=pay-D46DH89fve46x1v4"
}
{
"message":"error text"
}
{
"message":"error text"
}
Примеры кода:
import crypto from 'crypto'; //npm install crypto
import fetch from 'node-fetch'; //npm install node-fetch
async function getPaymentLinkPaynStars(order_id, amount) {
// Формируем объект данных для отправки
let request_data = {
"project_id": 1, // Идентификатор проекта
"amount": amount, // Сумма заказа
"order_id": order_id, // ID заказа
"currency": "USD",
// валюта заказа (пользователю выставляется счёт в STARS с округлением в большую сторону)
"secret_key": "UCi2jSi7btPg91t0bllFPSV9IJ1KWnCUT" // Секретный ключ проекта
}
// Получаем отсортированные ключи объекта данных
let sortedKeys = Object.keys(request_data).sort();
// Формируем строку данных для подписи
let data = sortedKeys.map(key => request_data[key]).join(':');
// Создаем подпись для данных
let sign = crypto.createHash('md5').update(data).digest('hex');
// Удаляем секретный ключ из объекта данных (чтобы не отправлять его)
delete request_data.secret_key;
// Добавляем подпись к объекту данных
request_data.sign = sign;
try {
// Отправляем запрос на создание заказа
let response = await fetch('https://api.paynstars.com/createOrder', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(request_data) // Отправляем данные в формате JSON
});
// Получаем ответ от сервера
const res_data = await response.json(); // Преобразуем ответ в JSON
if(res_data.message)
throw res_data.message; //Пришло сообщение об ошибке
return res_data.url;//Возвращаем ссылку на оплату
} catch (e) {
// Если произошла ошибка, возвращаем текст ошибки
return e;
}
}
console.log(await getPaymentLinkPaynStars("ORD11648", 100)); // ссылка на оплату
<?php
function getPaymentLinkPaynStars($order_id, $amount) {
// Формируем массив данных для отправки
$request_data = array(
"project_id" => 1, // Идентификатор проекта
"amount" => $amount, // Сумма заказа
"order_id" => $order_id, // ID заказа
"currency" => "USD",
// валюта заказа (пользователю выставляется счёт в STARS с округлением в большую сторону)
"secret_key" => "UCi2jSi7btPg91t0bllFPSV9IJ1KWnCUT" // Секретный ключ проекта
);
// Получаем отсортированные ключи массива данных
$sortedKeys = array_keys($request_data);
sort($sortedKeys);
// Формируем строку данных для подписи
$data = implode(':', array_map(function($key) use ($request_data) {
return $request_data[$key];
}, $sortedKeys));
// Создаем подпись для данных
$sign = md5($data);
// Удаляем секретный ключ из массива данных (чтобы не отправлять его)
unset($request_data["secret_key"]);
// Добавляем подпись к массиву данных
$request_data["sign"] = $sign;
// Формируем данные для запроса
$post_data = json_encode($request_data);
// Инициализируем cURL-сессию
$ch = curl_init();
// Устанавливаем параметры запроса
curl_setopt($ch, CURLOPT_URL, 'https://api.paynstars.com/createOrder');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($post_data)
));
// Выполняем запрос и получаем ответ
$response = curl_exec($ch);
// Проверяем на наличие ошибок
if(curl_errno($ch)) {
$error_msg = curl_error($ch);
curl_close($ch);
return "cURL error: " . $error_msg;
}
// Закрываем cURL-сессию
curl_close($ch);
// Преобразуем ответ в JSON
$res_data = json_decode($response);
// Проверяем на наличие сообщения об ошибке
if(isset($res_data->message)) {
return $res_data->message;
}
// Возвращаем ссылку на оплату
return $res_data->url;
}
echo getPaymentLinkPaynStars("ORD15621", 100); // ссылка на оплату
?>
Last updated