Инвентарь. Предметы с ограниченным сроком действия
Как это работает
Предмет с ограниченным сроком действия — это премиумный бонус, который пользователь покупает единоразово. Чтобы получить бонус повторно, пользователь должен снова купить такой предмет.
Основные возможности:
- Предмет с ограниченным сроком действия можно продавать неограниченное количество раз.
- При повторной продаже предмета в инвентаре пользователя количество товаров не меняется, время истечения действия предмета увеличивается.
- Вы можете настраивать срок действия предмета в Личном кабинете.
Ограничения:
- Управление предметами с ограниченным сроком действия возможно только с сервера игры.
Для кого подходит
- Для партнеров, которые уже подключили Магазин и хотят настроить новый тип товара — предметы с ограниченным сроком действия.
- Для партнеров, которые хотят продавать
Season Pass ,Battle Pass или другие виды товаров, в которых необходимо дать пользователю дополнительные преимущества в игре или дополнительный контент (например, предметы или задания в игре) на ограниченный период времени.
Как настроить
Предварительные действия
Если у вас еще не подключен продукт Xsolla Store, выполните следующие действия:
- Создайте Личный кабинет Xsolla.
- Перейдите в Проекты и нажмите Создать проект.
- Добавьте Название проекта и нажмите Создать.
- Подключите магазин к проекту.
- Подключите модуль Виртуальные предметы.
Сценарий интеграции
- Создайте группу товаров.
- Создайте товары:
- При создании предмета выберите тип Предметы с ограниченным сроком действия.
- Укажите срок действия.
- Реализуйте получение предметов с ограниченным сроком действия в каталоге.
- Реализуйте методы для покупки предметов с ограниченным сроком действия.
Получение предметов с ограниченным сроком действия в каталоге
Реализуйте вызов метода Get virtual items list, чтобы отобразить полный список виртуальных предметов, добавленных в ваш магазин.
ПРИМЕР
- javascript
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/items/virtual_items?locale=en");
xhr.send(data);
//RESPONSE
"items": [
{
"attributes": [],
"description": "Conquer your foes with vindication using the Basic Blaster! ",
"groups": [
"all",
"featured",
"Xsolla",
"weapons"
],
"image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
"is_free": false,
"name": "Xsolla Basic Blaster 1",
"order": 1,
"price": {
"amount": "0.9950000000000000",
"amount_without_discount": "1.9900000000000000",
"currency": "USD"
},
"sku": "gun_1",
"type": "virtual_good"
Покупка предмета с ограниченным сроком действия
При первой покупке предмет с ограниченным сроком действия начисляется в инвентарь.
При повторной покупке:
- Если предмет с ограниченным сроком действия активен, к текущему периоду истечения предмета добавляется дополнительное время.
- Если предмет с ограниченным сроком действия неактивен, период истечения срока действия предмета устанавливается заново.
Для покупки предмета с ограниченным сроком действия необходимо реализовать методы ниже.
Get cart
Реализуйте вызов метода Get cart by ID или Get current user’s cart для покупки виртуальных товаров. Cart ID будет использоваться для добавления/удаления товаров.
ПРИМЕР
- javascript
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/cart/custom_id?locale=en¤cy=USD");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"cart_id": "custom_id",
"is_free": true,
"items": [],
"price": null
}
Create order with all items
- Реализуйте вызов метода:
- Create order with all items from particular cart, если была получена корзина по ID.
- Create order with all items from current cart, если была получена текущая корзина.
Заказу будет присвоен статус New.
- Для открытия платежного интерфейса в новом окне используйте ссылку:
https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN
, гдеACCESS_TOKEN
— полученный при создании заказа токен. - Для тестирования процесса оплаты:
- Используйте URL:
https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN
. - Установите в запросе значение true для параметра sandbox.
- Используйте список банковских карт для тестирования.
- Используйте URL:
ПРИМЕР
- javascript
var data = JSON.stringify({
"currency": "USD",
"locale": "en",
"sandbox": false
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://store.xsolla.com/api/v2/project/44056/payment/cart/custom_id");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"order_id": 641,
"token": "f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo"
}
Get order
Реализуйте вызов метода Get order, чтобы определить, была ли покупка уже обработана. Возможны следующие статусы заказа:- New — заказ создан и еще не оплачен
- Paid — заказ оплачен
- Cancelled — заказ отменен
- Done — заказ оплачен и товар добавлен в инвентарь
- javascript
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/order/656");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);
//RESPONSE
{
"content": {
"is_free": false,
"items": [
{
"is_free": false,
"price": {
"amount": "0.9950",
"amount_without_discount": "1.9900",
"currency": "USD"
},
"quantity": 123,
"sku": "gun_1"
}
],
"price": {
"amount": "122.3850",
"amount_without_discount": "122.3850",
"currency": "USD"
}
},
"order_id": 656,
"status": "new"
}
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.