Начисление предметов в инвентарь на базе решения Иксоллы
Иксолла предоставляет решение для реализации инвентаря игрока на базе продукта Внутриигровой магазин (Инвентарь игрока). Это решение позволяет синхронизировать все покупки и премиальные награды пользователя на разных платформах.
Вы можете начислять в Инвентарь игрока предметы, купленные с помощью стороннего платежного интерфейса (например, Google Play In-App Purchase).
Предметы начисляются в инвентарь при вызове серверного метода API Grant items to users. Если для серверной части приложения вы используете Firebase, используйте готовую облачную функцию:
Добавление облачной функции в проект Firebase
- Инициализируйте свой проект Firebase.
- Импортируйте функцию начисления предметов в инвентарь, где:
<MerchantID>
— ID продавца, который можно найти в Личном кабинете:- в разделе Настройки проекта > Вебхуки;
- разделе Настройки компании > Компания;
- адресной строке браузера на любой странице Личного кабинета. URL-адрес имеет вид
https://publisher.xsolla.com/ID продавца/раздел Личного кабинета
.
<ProjectID>
— ID проекта, который можно найти в Личном кабинете:- рядом с названием вашего проекта;
- в разделе Настройки проекта > ID проекта.
<ApiKey>
— Ключ API, который можно создать в Личном кабинете в разделе Настройки компании > Ключи API или Настройки проекта > Ключи API.
Подробная информация о работе с ключами API приведена в справочнике API.
Основные рекомендации:
- Сохраните созданный ключ API на вашей стороне. Вы можете посмотреть ключ API в Личном кабинете только один раз при его создании.
- Никому не сообщайте ваш ключ API, так как он дает доступ к управлению аккаунтом и проектами в Личном кабинете.
- Ключ API должен храниться на вашем сервере и никогда — в бинарных файлах или на фронтенде.
Код функции начисления предметов в инвентарь:
- js
const merchantId = "<MerchantID>";
const projectId = "<ProjectID>";
const apiKey = "<ApiKey>";
exports.redeem = functions.https.onRequest((request, response) => {
const sku = request.body.sku;
const quantity = request.body.quantity;
const userId = request.body.user_id;
const authHeader = Buffer.from(`${merchantId}:${apiKey}`).toString("base64");
const postData = JSON.stringify(
[{
"comment": "Purchased by Google Pay",
"platform": "xsolla",
"user": {
"id": userId,
},
"items": [{
"sku": sku,
"quantity": quantity,
}],
}]
);
const options = {
hostname: "store.xsolla.com",
port: 443,
path: `/api/v2/project/${projectId}/inventory/reward`,
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": postData.length,
"Authorization": `Basic ${authHeader}`,
},
};
const req = https.request(options, (res) => {
if (res.statusCode == 200) {
response.status(200).send();
return;
}
if (res.statusCode == 404) {
response.status(404).send();
return;
}
if (res.statusCode == 401) {
response.status(401).send();
return;
}
response.status(400).send();
res.on("data", (d) => {
process.stdout.write(d);
});
});
req.on("error", (e) => {
response.status(500).send(e.message);
});
req.write(postData);
req.end();
});
- Запустите функцию в боевой среде в соответствии с примером.
Вызов функции из приложения
Чтобы начислить предметы в инвентарь, добавьте логику для вызова функции из приложения, укажите имя функции — redeem
, передайте в нее параметры sku
, quantity
, user_id
.
Для некоторых платежных интерфейсов (например, Google Play In-App Purchase) требуется, чтобы логика начисления предмета в инвентарь инициировалась на клиенте приложения. В этом случае реализуйте клиентский метод вызова функции redeem
.
В качестве примера реализации для Android вы можете использовать модуль xsolla-googleplay-sdk, позволяющий начислять в инвентарь покупки из Google Play In-App Purchase.
Чтобы применить пример в своем проекте:
- Запустите Android Studio.
- В свой проект добавьте модуль xsolla-googleplay-sdk.
- Инициализируйте библиотеку. Для этого добавьте следующую строку в ваш исходный код проекта Android, где
<your-deployment-host>
— хост URL-адреса облачной функции (например,https://us-central1-xsolla-sdk-demo.cloudfunctions.net
):
- kotlin
InventoryAdmin.init("<your-deployment-host>")
URL-адрес облачной функции выводится в командной строке Firebase после запуска функции в боевой среде. Также URL-адрес функции доступен в консоли Firebase в разделе
- Реализуйте вызов метода
InventoryAdmin.grantItemToUser (sku, userId, quantity, callback)
согласно логике приложения. Данные об успешности начисления товара в инвентарь возвращает функция обратного вызова.
Была ли статья полезна?
Оценить страницу
В другой раз
Спасибо за обратную связь!
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.