Skip to main content
Version: 5.9.0

PurchaseUserItemWithOptions

Purchases a quantity of an item from the specified store, if the user has enough funds and purchasing for listed buy price is not disabled for associated catalog item definition. If includeDef is true, response includes associated itemDef with language fields limited to the current or default language.

ServiceOperation
userItemsPURCHASE_USER_ITEM

Method Parameters

ParameterDescription
defIdThe unique id of the item definition to purchase.
quantityThe quantity of the item to purchase.
shopIdThe id identifying the store the item is being purchased from, if applicable.
includeDefIf true, the associated item definition will be included in the response.
optionsJsonOptional support for specifying 'blockIfExceedItemMaxStackable' indicating how to process the purchase if the defId is for a stackable item with a max stackable quantity and the specified quantity being purchased is too high. If true and the quantity is too high, the call is blocked and an error is returned. If false (default) and quantity is too high, the quantity is adjusted to the allowed maximum and the quantity not purchased is reported in response key 'itemsNotPurchased' - unless the adjusted quantity would be 0, in which case the call is blocked and an error is returned.

Usage

http://localhost:3000
string defId = "sword001";
int quantity = 1;
string shopId = "None";
bool includeDef = True;
string optionsJson = "{\"blockIfExceedItemMaxStackable\": False}";

SuccessCallback successCallback = (response, cbObject) =>
{
Debug.Log(string.Format("Success | {0}", response));
};
FailureCallback failureCallback = (status, code, error, cbObject) =>
{
Debug.Log(string.Format("Failed | {0} {1} {2}", status, code, error));
};

_bc.UseritemsService.PurchaseUserItemWithOptions(defId, quantity, shopId, includeDef, optionsJson, successCallback, failureCallback);
JSON Response
{
"data": {
"quantity": -7,
"itemsNotAwarded": {
"sword001": 8
},
"items": {
"3f980b72-e9b0-421c-a23b-09f4a297432f": {
"itemId": "3f980b72-e9b0-421c-a23b-09f4a297432f",
"defId": "sword001",
"type": "ITEM",
"quantity": 2,
"itemData": {},
"giftedTo": null,
"giftedFrom": null,
"createdAt": 1763999328116,
"updatedAt": 1764001716414,
"version": 10,
"usesLeft": null,
"coolDownStart": -1,
"recoveryStart": -1,
"maxUses": null,
"coolDownUntil": -1,
"recoveryUntil": -1,
"itemDef": {
"defId": "sword001",
"name": "crimson sword",
"desc": "a sword whose blade is forged in...",
"type": "ITEM",
"category": "sword",
"tags": [
"sword",
"crimson",
"pointy"
],
"buyPriceDisabled": false,
"buyPrice": {
"coins": 200
},
"sellPrice": {
"coins": 200
},
"image": null,
"resourceGroup": "equipment.asset",
"resourceTag": "sword001",
"meta": null,
"pState": "PUBLISHED",
"publishedAt": 1763999316395,
"stackable": true,
"maxStackable": 2,
"tradable": false,
"blockchain": false,
"consumable": false,
"uses": null,
"coolDownSecs": 0,
"recoverySecs": 0,
"activatable": false,
"statusName": null,
"activeSecs": null,
"maxActiveSecs": null,
"statusBehaviour": null
}
}
},
"currencies": {},
"currencySpent": {
"coins": -1400
},
"currencyBalances": {
"createdAt": 1761045719074,
"currencyMap": {
"bar": {
"consumed": 0,
"balance": 220,
"purchased": 0,
"awarded": 0,
"revoked": 0
},
"bucks": {
"consumed": 0,
"balance": 0,
"purchased": 0,
"awarded": 0,
"revoked": 0
},
"gems": {
"consumed": 0,
"balance": 0,
"purchased": 0,
"awarded": 0,
"revoked": 0
},
"coins": {
"consumed": 0,
"balance": 1400,
"purchased": 0,
"awarded": 0,
"revoked": 0
}
},
"playerId": "bbe26c21-02ab-4eb8-a7f0-13d09434cd1b",
"updatedAt": 1764001716408
}
},
"status": 200
}