markdown
# Платёжный модуль
Платёжный модуль предоставляет функции для покупки предметов в игре и оплаты полной версии.
Ознакомьтесь с разделом, соответствующим вашему игровому движку, на странице [`Введение в JOGOS_SDK`](./introduction.md), после чего используйте функции следующим образом:
::: tabs key:engine
== HTML5
```javascript
window.JOGOS_SDK.payment;== Cocos
javascript
JOGOS_SDK.payment;== Unity
csharp
JogosSDK.Goods:::
Внутриигровые покупки
Шаг 1. Создание товарного ID
- Создайте товар на странице Information / Purchase в панели разработчика.
- Убедитесь, что товарный ID уникален в рамках одной игры.
Шаг 2. Создание заказа
- Когда игроку нужно купить предмет, вызовите этот метод по нажатию кнопки покупки, чтобы открыть окно оплаты Jogos.
- Передайте товарный ID; при успешном открытии окна вернётся номер заказа, по которому можно будет получить информацию о заказе.
- goodsId — это тот самый товарный ID, который вы создали в панели.
javascript
// Возвращает номер заказа при успехе
let orderNo = await window.JOGOS_SDK.payment.buyGoods(goodsId: string);Шаг 3. Ожидание оплаты игрока
Подписка на уведомление об оплате заказа (клиент)
Между заказом игрока и успешной оплатой может пройти длительное время. Разработчики могут подписаться на этот интерфейс для получения уведомлений об успешной оплате (вызов после инициализации). После успешной оплаты платформа отправит уведомление разработчику через обратный вызов с обновленной информацией о заказе
javascript
window.JOGOS_SDK.payment.subscribeOrderPaid(callbackFn: (order: PaymentOrder) => void);Шаг 4. Доставка товара и уведомление платформы
Доставка товара на стороне клиента (офлайн-игры)
Узнав об успешной оплате, клиент самостоятельно выдаёт награду и вызывает метод, чтобы сообщить платформе о доставке.
javascript
await window.JOGOS_SDK.payment.deliverGoods(orderNo: string);Альтернатива: интеграция через игровой сервер
Серверные API описаны на странице Интерфейсы серверной интеграции.
Дополнительные методы
Информация о заказе
Получить полные данные заказа по номеру. Структура:
javascript
// Платёжный заказ
export interface PaymentOrder {
// ID игры
gameId: number;
// Название игры
gameName: string;
// ID пользователя
userId: number;
// Номер заказа
orderNo: string;
// Товарный ID
productId: string;
// Название товара
productName: string;
// Валюта
currency: string;
// Страна
country: string;
// Скидка
discount: number;
// Списание Jogos-коинов
calorcoin: number;
// Сумма оплаты
paid: number;
// Канал оплаты
channel: string;
// Тип оплаты
paymentType: string;
// Номер платежа
paymentNo: string;
// Доставлен ли товар
deliverGoods: boolean;
// Статус заказа: pending — ожидание, fail — ошибка, cancel — отменён, expire — истёк, success — успешно, refunding — возврат, refunded — возвращён, refund-fail — ошибка возврата
status: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded' | 'refund-fail';
// Время создания
createTime: String;
// Номер возврата
refundNo: String;
// Описание возврата
refundDescription: String;
// Время запроса возврата
refundTime: String;
// Время завершения возврата
refundedTime: String;
}Получить информацию о заказе
javascript
// Возвращает данные заказа при успехе
let order = await window.JOGOS_SDK.payment.getOrderDetail(orderNo: string);Получить список заказов
Метод позволяет запросить заказы по фильтру статуса. Возвращается список объектов той же структуры, что и детали заказа.
javascript
// Возвращает список заказов при успехе
let orderList = await window.JOGOS_SDK.payment.getOrderList(
status?: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded',
pageNo?: number, // Номер страницы, по умолчанию 1
pageSize?: number // Записей на страницу, по умолчанию 20
);Покупка полной версии (Buy-out)
- В панели разработчика установите тип распространения игры «Game Pricing» и укажите цену.
- Создайте две сборки: демо и полную версию
- Демо: удалите уровни, модели, текстуры, музыку, недоступные игроку, оставив только пробный контент. Загрузите эту сборку отдельно.
- Полная версия: сборка со всем контентом.
- Добавьте кнопку покупки в демо:
- Когда игрок завершает демо (например, проходит последний уровень первой главы), покажите экран и кнопку «Купить полную версию»:

- Кнопка вызывает метод
buyOut, открывая окно оплаты Jogos. - После успешной оплаты платформа сама переключится на полную версию; дополнительных действий не требуется.
- Номер версии демо и полной сборки должен совпадать — сохранения автоматически мигрируют.
- После оплаты возвращается номер заказа, по которому можно запросить информацию.
javascript
// Возвращает номер заказа при успехе
let orderNo = await window.JOGOS_SDK.payment.buyOut();