Player Item Management - Confirm Purchase

Confirms with the payment provider that the purchase was approved (if applicable) and adjusts inventory and virtual currency balances as appropriate

POST https://titleId.playfabapi.com/Client/ConfirmPurchase

Request Header

Name Required Type Description
X-Authorization True
  • string

This API requires a client session ticket, available from any Client Login function.

Request Body

Name Required Type Description
OrderId True
  • string

Purchase order identifier returned from StartPurchase.

CustomTags
  • object

The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).

Responses

Name Type Description
200 OK

When the FailedByPaymentProvider error is returned, it's important to check the ProviderErrorCode, ProviderErrorMessage, and ProviderErrorDetails to understand the specific reason the payment was rejected, as in some rare cases, this may mean that the provider hasn't completed some operation required to finalize the purchase.

400 Bad Request

This is the outer wrapper for all responses with errors

Security

X-Authorization

This API requires a client session ticket, available from any Client Login function.

Type: apiKey
In: header

Definitions

ApiErrorWrapper

The basic wrapper around every failed API response

ConfirmPurchaseRequest

The final step in the purchasing process, this API finalizes the purchase with the payment provider, where applicable, adding virtual goods to the player inventory (including random drop table resolution and recursive addition of bundled items) and adjusting virtual currency balances for funds used or added. Note that this is a pull operation, and should be polled regularly when a purchase is in progress. Please note that the processing time for inventory grants and purchases increases fractionally the more items are in the inventory, and the more items are in the grant/purchase operation.

ConfirmPurchaseResult

When the FailedByPaymentProvider error is returned, it's important to check the ProviderErrorCode, ProviderErrorMessage, and ProviderErrorDetails to understand the specific reason the payment was rejected, as in some rare cases, this may mean that the provider hasn't completed some operation required to finalize the purchase.

ItemInstance

A unique instance of an item in a user's inventory. Note, to retrieve additional information for an item such as Tags, Description that are the same across all instances of the item, a call to GetCatalogItems is required. The ItemID of can be matched to a catalog entry, which contains the additional information. Also note that Custom Data is only set when the User's specific instance has updated the CustomData via a call to UpdateUserInventoryItemCustomData. Other fields such as UnitPrice and UnitCurrency are only set when the item was granted via a purchase.

ApiErrorWrapper

The basic wrapper around every failed API response

Name Type Description
code
  • integer

Numerical HTTP code

error
  • string

Playfab error code

errorCode
  • integer

Numerical PlayFab error code

errorDetails
  • object

Detailed description of individual issues with the request object

errorMessage
  • string

Description for the PlayFab errorCode

status
  • string

String HTTP code

ConfirmPurchaseRequest

The final step in the purchasing process, this API finalizes the purchase with the payment provider, where applicable, adding virtual goods to the player inventory (including random drop table resolution and recursive addition of bundled items) and adjusting virtual currency balances for funds used or added. Note that this is a pull operation, and should be polled regularly when a purchase is in progress. Please note that the processing time for inventory grants and purchases increases fractionally the more items are in the inventory, and the more items are in the grant/purchase operation.

Name Type Description
CustomTags
  • object

The optional custom tags associated with the request (e.g. build number, external trace identifiers, etc.).

OrderId
  • string

Purchase order identifier returned from StartPurchase.

ConfirmPurchaseResult

When the FailedByPaymentProvider error is returned, it's important to check the ProviderErrorCode, ProviderErrorMessage, and ProviderErrorDetails to understand the specific reason the payment was rejected, as in some rare cases, this may mean that the provider hasn't completed some operation required to finalize the purchase.

Name Type Description
Items

Array of items purchased.

OrderId
  • string

Purchase order identifier.

PurchaseDate
  • string

Date and time of the purchase.

ItemInstance

A unique instance of an item in a user's inventory. Note, to retrieve additional information for an item such as Tags, Description that are the same across all instances of the item, a call to GetCatalogItems is required. The ItemID of can be matched to a catalog entry, which contains the additional information. Also note that Custom Data is only set when the User's specific instance has updated the CustomData via a call to UpdateUserInventoryItemCustomData. Other fields such as UnitPrice and UnitCurrency are only set when the item was granted via a purchase.

Name Type Description
Annotation
  • string

Game specific comment associated with this instance when it was added to the user inventory.

BundleContents
  • string[]

Array of unique items that were awarded when this catalog item was purchased.

BundleParent
  • string

Unique identifier for the parent inventory item, as defined in the catalog, for object which were added from a bundle or container.

CatalogVersion
  • string

Catalog version for the inventory item, when this instance was created.

CustomData
  • object

A set of custom key-value pairs on the instance of the inventory item, which is not to be confused with the catalog item's custom data.

DisplayName
  • string

CatalogItem.DisplayName at the time this item was purchased.

Expiration
  • string

Timestamp for when this instance will expire.

ItemClass
  • string

Class name for the inventory item, as defined in the catalog.

ItemId
  • string

Unique identifier for the inventory item, as defined in the catalog.

ItemInstanceId
  • string

Unique item identifier for this specific instance of the item.

PurchaseDate
  • string

Timestamp for when this instance was purchased.

RemainingUses
  • number

Total number of remaining uses, if this is a consumable item.

UnitCurrency
  • string

Currency type for the cost of the catalog item. Not available when granting items.

UnitPrice
  • number

Cost of the catalog item in the given currency. Not available when granting items.

UsesIncrementedBy
  • number

The number of uses that were added or removed to this item in this call.

Error Codes

Name Code
FailedByPaymentProvider 1015
PurchaseDoesNotExist 1080