v3.1.2
2020.3+

Interface IEconomyPlayerBalancesApiClient

The PlayerBalances methods provide access to the current player's balances, and allow you to update them.

Namespace: Unity.Services.Economy
Syntax
public interface IEconomyPlayerBalancesApiClient

Methods

DecrementBalanceAsync(String, Int32, DecrementBalanceOptions)

Decrements the balance of the specified currency for the currently logged in user.

This method optionally takes a writeLock string. If provided, then an exception will be thrown unless the writeLock matches the writeLock received by a previous read, in order to provide optimistic concurrency. If not provided, the transaction will proceed regardless of any existing writeLock in the data. Throws a EconomyException with a reason code and explanation if the request is badly formed, unauthorized or uses a missing resource.

Declaration
Task<PlayerBalance> DecrementBalanceAsync(string currencyId, int amount, DecrementBalanceOptions options = null)
Parameters
TypeNameDescription
StringcurrencyId

The currency ID to update

Int32amount

The amount to decrement by

DecrementBalanceOptionsoptions

(Optional) Use to set a write lock for optimistic concurrency

Returns
TypeDescription
Task<PlayerBalance>

The updated player balance for the relevant currency.

Exceptions
TypeCondition
EconomyException

Thrown if request is unsuccessful

EconomyValidationException

Thrown if the service returned validation error.

EconomyRateLimitedException

Thrown if the service returned rate limited error.

GetBalancesAsync(GetBalancesOptions)

Gets the current balances for the currently signed in player. The balances are available on the returned object using the

Balances
property. The results are paginated - the first set of results are initially returned, and more can be requested with the
GetNextAsync
method. The
HasNext
property indicates whether there are more results to be returned. Throws a EconomyException with a reason code and explanation if the request is badly formed, unauthorized or uses a missing resource.

Declaration
Task<GetBalancesResult> GetBalancesAsync(GetBalancesOptions options = null)
Parameters
TypeNameDescription
GetBalancesOptionsoptions

(Optional) Use to set the number of items to fetch per call.

Returns
TypeDescription
Task<GetBalancesResult>

A GetBalancesResult object, with properties as specified above.

Exceptions
TypeCondition
EconomyException

Thrown if request is unsuccessful

EconomyRateLimitedException

Thrown if the service returned rate limited error.

IncrementBalanceAsync(String, Int32, IncrementBalanceOptions)

Increments the balance of the specified currency for the currently logged in user.

This method optionally takes a writeLock string. If provided, then an exception will be thrown unless the writeLock matches the writeLock received by a previous read, in order to provide optomistic concurrency. If not provided, the transaction will proceed regardless of any existing writeLock in the data. Throws a EconomyException with a reason code and explanation if the request is badly formed, unauthorized or uses a missing resource.

Declaration
Task<PlayerBalance> IncrementBalanceAsync(string currencyId, int amount, IncrementBalanceOptions options = null)
Parameters
TypeNameDescription
StringcurrencyId

The currency ID to update

Int32amount

The amount to increment by

IncrementBalanceOptionsoptions

(Optional) Use to set a write lock for optimistic concurrency

Returns
TypeDescription
Task<PlayerBalance>

The updated player balance for the relevant currency.

Exceptions
TypeCondition
EconomyException

Thrown if request is unsuccessful

EconomyValidationException

Thrown if the service returned validation error.

EconomyRateLimitedException

Thrown if the service returned rate limited error.

SetBalanceAsync(String, Int64, SetBalanceOptions)

Sets the balance of the specified currency for the currently logged in user. Will throw an exception if the currency doesn't exist, or if the set amount will take the balance above/below the maximum/minimum allowed for that currency.

This method optionally takes a writeLock string. If provided, then an exception will be thrown unless the writeLock matches the writeLock received by a previous read, in order to provide optimistic concurrency. If not provided, the transaction will proceed regardless of any existing writeLock in the data. Throws a EconomyException with a reason code and explanation if the request is badly formed, unauthorized or uses a missing resource.

Declaration
Task<PlayerBalance> SetBalanceAsync(string currencyId, long balance, SetBalanceOptions options = null)
Parameters
TypeNameDescription
StringcurrencyId

The currency ID to update

Int64balance

The amount to set the balance to

SetBalanceOptionsoptions

(Optional) Used to set a write lock for optimistic concurrency

Returns
TypeDescription
Task<PlayerBalance>

The updated player balance for the relevant currency.

Exceptions
TypeCondition
EconomyException

Thrown if request is unsuccessful

EconomyValidationException

Thrown if the service returned validation error.

EconomyRateLimitedException

Thrown if the service returned rate limited error.

Events

BalanceUpdated

Fires when the SDK updates a player's balance. The called action will be passed the currency ID that was updated.

Note that this will NOT fire for balance changes from elsewhere not in this instance of the SDK, for example other server-side updates or updates from other devices.

Declaration
event Action<string> BalanceUpdated
Event Type
TypeDescription
Action<String>