Skip to content

In-game purchases

We have partnered with Xsolla to offer you the possibility to integrate in-game purchases more conveniently.

Warning

In-game purchases are an invite-only feature. If you are interested in using them, please get in touch with us.

Credentials

When using the Xsolla SDK/API, and once you are invited to our Xsolla project dashboard, you will need one of the following ways of authentication:

  • The token received from the getXsollaUserToken() method from the SDK. This method generates a custom Xsolla token that you use with the Xsolla SDK. The purchases are linked to the CrazyGames user account. This is applicable for Scenario 2 and Scenario 3. (Please note that a submission is required so we can generate credentials for the token).
  • Alternatively, you can generate the necessary Xsolla credentials on your own within our Xsolla project dashboard, and use the SDK with the generated credentials. Purchases will be linked to your in-game user accounts. This is applicable only for Scenario 3. You can also skip the rest of this guide.

Warning

In-game purchases should be available only for the users that are signed in. Guest users should not be able to purchase items.

Get Xsolla token

If you would like to use Xsolla via our own custom-generated token, you can retrieve the Xsolla token like this:

try {
    const token = await window.CrazyGames.SDK.user.getXsollaUserToken();
    console.log("Get Xsolla token result", token);
} catch (e) {
    console.log("Error:", e);
}

We recommend that you retrieve the token every time before using it, since the tokens are usually short-lived, for example only 1 hour. Our SDK handles the token refresh.

Example

After retrieving the token, you can use it like this:

// obtain player's inventory example
// xsollaProjectId will be provided by us
const resp = await fetch(
    `https://store.xsolla.com/api/v2/project/${xsollaProjectId}/user/inventory/items`,
    {
        method: "GET",
        headers: {
            Authorization: `Bearer ${token}`,
        },
    }
);

Check Xsolla API for more functionality.

You don't need to handle any Xsolla login functionality, since Xsolla will automatically handle the user account creation with the user ID included in the token, which is the ID of the CrazyGames user. Thus, all the purchases made using the token will be also linked to the CrazyGames user account.

Testing

The getXsollaUserToken() method will work only in the QA tool or CrazyGames.com. Please notice that the QA Tool can be accessed either from the sidebar of the developer portal (standalone QA Tool) or when editing your game. The Xsolla token generation will work only in the QA tool that is accessed from the game since it requires your game id.

For the initial testing, we recommend testing with sandbox orders, which allow purchasing items with fake money. When you submit the game, please ensure the sandbox orders are disabled.

Order tracking

When using Xsolla, you will mostly deal with 3 order statuses:

  • new
  • done
  • canceled

Every time an order has been successfully completed (done), we require you to call this SDK method:

window.CrazyGames.SDK.analytics.trackOrder("xsolla", order); // order must be a JSON object

You can obtain the order for example from the Xsolla Order endpoint

We also encourage you to track the new and canceled orders, as these may be useful in the future.