Skip to content

Платёжный модуль

Платёжный модуль предоставляет функции для покупки предметов в игре и оплаты полной версии.
Ознакомьтесь с разделом, соответствующим вашему игровому движку, на странице Введение в JOGOS_SDK, после чего используйте функции следующим образом:

javascript
window.JOGOS_SDK.payment;

Внутриигровые покупки

Шаг 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. Доставка товара и уведомление платформы

Доставка товара на стороне клиента (офлайн-игры)

Узнав об успешной оплате, клиент самостоятельно выдаёт награду и вызывает метод, чтобы сообщить платформе о доставке.

Примечание
  • Если у вашей игры нет игрового сервера, рекомендуем после получения уведомления об оплате вызывать этот метод, чтобы сообщить Jogos о доставке.
  • В зависимости от результата выдавайте награду или показывайте текст ошибки.
  • После доставки вызовите API облачного сохранения, чтобы синхронизировать прогресс игрока.
javascript
await window.JOGOS_SDK.payment.deliverGoods(orderNo: string);

Альтернатива: интеграция через игровой сервер

Серверные API описаны на странице Интерфейсы серверной интеграции.


Дополнительные методы

Советы по улучшению платежей
  • Подписка subscribeOrderPaid на клиенте не гарантируется 100 % из-за сети и прочих факторов. Используйте метод получения заказа для проверки актуального статуса.
  • В офлайн-играх с возможностью удаления сохранений решайте сами, перевыдавать ли ранее купленные награды. Можно запросить список всех заказов игрока и перевыполнить доставку.
  • После получения информации о заказе обрабатывайте его по полю status.

Информация о заказе

Получить полные данные заказа по номеру. Структура:

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)

  1. В панели разработчика установите тип распространения игры «Game Pricing» и укажите цену.
  2. Создайте две сборки: демо и полную версию
  • Демо: удалите уровни, модели, текстуры, музыку, недоступные игроку, оставив только пробный контент. Загрузите эту сборку отдельно.
  • Полная версия: сборка со всем контентом.
  1. Добавьте кнопку покупки в демо:
  • Когда игрок завершает демо (например, проходит последний уровень первой главы), покажите экран и кнопку «Купить полную версию»: alt text
  • Кнопка вызывает метод buyOut, открывая окно оплаты Jogos.
  • После успешной оплаты платформа сама переключится на полную версию; дополнительных действий не требуется.
  • Номер версии демо и полной сборки должен совпадать — сохранения автоматически мигрируют.
  • После оплаты возвращается номер заказа, по которому можно запросить информацию.
javascript
// Возвращает номер заказа при успехе
let orderNo = await window.JOGOS_SDK.payment.buyOut();
*Важно*

Как в демо, так и в полной версии обязательно инициализируйте SDK в первой сцене и дождитесь коллбека перед запуском любого игрового кода. Jogos при инициализации проверит, купил ли пользователь игру; иначе он не сможет продолжить.
Это надёжная защита от пиратства.