Starex Pay — это платёжная страница. Вы перенаправляете покупателя на неё с номером заказа и суммой, он выбирает способ оплаты и платит. Starex Pay берёт на себя всю работу с платёжными системами — вам остаётся сформировать одну ссылку и реализовать два эндпоинта.
PAY_URL и SECRET_KEY выдаёт Starex; адреса
prepare и complete вы передаёте Starex.
| Данные | Описание |
|---|---|
PAY_URL | Базовый адрес платёжной страницы |
SECRET_KEY | Секретный ключ для подписи — используется только на стороне сервера |
Адрес prepare | Эндпоинт проверки заказа |
Адрес complete | Эндпоинт подтверждения оплаты |
зелёные запросы — ваши эндпоинты; остальное Starex Pay делает сам.
GET
{PAY_URL}/checkout
| Параметр | Тип | Описание |
|---|---|---|
order_id | string | Номер заказа в вашей системе |
amount | integer | Сумма платежа (в тийинах) |
sign | string | Проверочная строка (SHA-256):sha256(order_id + amount + SECRET_KEY) |
По этой ссылке покупатель выбирает способ оплаты, платит в платёжной системе и возвращается на страницу результата.
$sign = hash('sha256', $orderId . $amount . $secretKey);
$link = $payUrl . '/checkout?' . http_build_query([
'order_id' => $orderId,
'amount' => $amount,
'sign' => $sign,
]);
header('Location: ' . $link);
const sign = crypto.createHash('sha256')
.update(`${orderId}${amount}${secretKey}`).digest('hex');
const link = `${payUrl}/checkout?` + new URLSearchParams({
order_id: orderId, amount: String(amount), sign,
});
res.redirect(link);
sign = hashlib.sha256(f"{order_id}{amount}{secret_key}".encode()).hexdigest()
link = f"{pay_url}/checkout?" + urlencode({
"order_id": order_id, "amount": amount, "sign": sign,
})
order_id для каждого платежа.
Оба запроса отправляются методом POST с телом в формате JSON.
Ответ должен иметь статус HTTP 200 и прийти в течение
10 секунд.
POST
{ВАШ_PREPARE_URL}
{
"ext_trans_id": 1042,
"ext_payment_id": 3311,
"order_id": "A-10245",
"amount": 4500000,
"action": 0,
"sign_time": "2026-07-28 14:05:21",
"sign_string": "9c2f...b81d"
}
| Поле | Тип | Описание |
|---|---|---|
ext_trans_id | integer | Номер платежа в системе Starex Pay |
ext_payment_id | integer | Номер транзакции в системе Starex Pay |
order_id | string | Номер заказа в вашей системе |
amount | integer | Сумма платежа (в тийинах) |
action | integer | Выполняемое действие. 0 — Prepare |
sign_time | string | Время запроса. Формат YYYY-MM-DD HH:MM:SS |
sign_string | string | Проверочная строка (SHA-256):sha256(ext_trans_id + SECRET_KEY + order_id + amount + action + sign_time) |
{
"error": 0,
"error_note": "OK",
"prepare_id": "778812"
}
| Поле | Тип | Описание |
|---|---|---|
error | integer | Результат операции. 0 — успешно |
error_note | string | Описание результата |
prepare_id | string | Идентификатор платежа в вашей системе |
POST
{ВАШ_COMPLETE_URL}
{
"ext_trans_id": 1042,
"ext_payment_id": 3311,
"order_id": "A-10245",
"prepare_id": "778812",
"amount": 4500000,
"action": 1,
"sign_time": "2026-07-28 14:07:03",
"sign_string": "1ae4...7c02"
}
| Поле | Тип | Описание |
|---|---|---|
ext_trans_id | integer | Номер платежа в системе Starex Pay |
ext_payment_id | integer | Номер транзакции в системе Starex Pay |
order_id | string | Номер заказа в вашей системе |
prepare_id | string | Идентификатор платежа в вашей системе, полученный в ответе на запрос prepare |
amount | integer | Сумма платежа (в тийинах) |
action | integer | Выполняемое действие. 1 — Complete |
sign_time | string | Время запроса. Формат YYYY-MM-DD HH:MM:SS |
sign_string | string | Проверочная строка (SHA-256):sha256(ext_trans_id + SECRET_KEY + order_id + prepare_id + amount + action + sign_time) |
{
"error": 0,
"error_note": "OK",
"confirm_id": "990145"
}
| Поле | Тип | Описание |
|---|---|---|
error | integer | Результат операции. 0 — успешно |
error_note | string | Описание результата |
confirm_id | string | Идентификатор подтверждения в вашей системе |
Ошибка, возвращённая в ответе complete, помечает платёж как
неуспешный.
| Код | Сообщение покупателю | Когда возвращается |
|---|---|---|
0 | Операция успешно выполнена | Всё в порядке |
-1 | Не удалось проверить платёж | sign_string не совпал |
-2 | Неверная сумма платежа | amount не равен сумме заказа |
-3 | Запрошенная операция недоступна | Неизвестное значение action |
-4 | Этот заказ уже оплачен | Повторная попытка оплаты |
-5 | Заказ не найден | Нет заказа по order_id |
-6 | Транзакция не найдена | Платёж по prepare_id не найден |
-7 | Не удалось обновить заказ, попробуйте ещё раз | Внутренний сбой |
-8 | Некорректный платёжный запрос | Отсутствует обязательное поле |
-9 | Эта транзакция уже отменена | Попытка продолжить отменённый платёж |
Код, которого нет в списке, считается неуспешным платежом.