Platform Specific Methods - Restore IOS Purchases

NOTE: This is a Legacy Economy API, and is in bugfix-only mode. All new Economy features are being developed only for version 2. Restores all in-app purchases based on the given restore receipt

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

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
ReceiptData True

string

Base64 encoded receipt data, passed back by the App Store as a result of a successful purchase.

CatalogVersion

string

Catalog version of the restored items. If null, defaults to primary catalog.

CustomTags

object

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

Responses

Name Type Description
200 OK

RestoreIOSPurchasesResult

Once verified, the valid items will be restored into the user's inventory. This result should be used for immediate updates to the local client game state as opposed to the GetUserInventory API which can have an up to half second delay.

400 Bad Request

ApiErrorWrapper

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

Name Description
ApiErrorWrapper

The basic wrapper around every failed API response

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.

PurchaseReceiptFulfillment
RestoreIOSPurchasesRequest

The title should obtain a refresh receipt via restoreCompletedTransactions in the SKPaymentQueue of the Apple StoreKit and pass that in to this call. The resultant receipt contains new receipt instances for all non-consumable goods previously purchased by the user. This API call iterates through every purchase in the receipt and restores the items if they still exist in the catalog and can be validated.

RestoreIOSPurchasesResult

Once verified, the valid items will be restored into the user's inventory. This result should be used for immediate updates to the local client game state as opposed to the GetUserInventory API which can have an up to half second delay.

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

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.

PurchaseReceiptFulfillment

Name Type Description
FulfilledItems

ItemInstance[]

Items granted to the player in fulfillment of the validated receipt.

RecordedPriceSource

string

Source of the payment price information for the recorded purchase transaction. A value of 'Request' indicates that the price specified in the request was used, whereas a value of 'Catalog' indicates that the real-money price of the catalog item matching the product ID in the validated receipt transaction and the currency specified in the request (defaulting to USD) was used.

RecordedTransactionCurrency

string

Currency used to purchase the items (ISO 4217 currency code).

RecordedTransactionTotal

number

Amount of the stated currency paid for the items, in centesimal units

RestoreIOSPurchasesRequest

The title should obtain a refresh receipt via restoreCompletedTransactions in the SKPaymentQueue of the Apple StoreKit and pass that in to this call. The resultant receipt contains new receipt instances for all non-consumable goods previously purchased by the user. This API call iterates through every purchase in the receipt and restores the items if they still exist in the catalog and can be validated.

Name Type Description
CatalogVersion

string

Catalog version of the restored items. If null, defaults to primary catalog.

CustomTags

object

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

ReceiptData

string

Base64 encoded receipt data, passed back by the App Store as a result of a successful purchase.

RestoreIOSPurchasesResult

Once verified, the valid items will be restored into the user's inventory. This result should be used for immediate updates to the local client game state as opposed to the GetUserInventory API which can have an up to half second delay.

Name Type Description
Fulfillments

PurchaseReceiptFulfillment[]

Fulfilled inventory items and recorded purchases in fulfillment of the validated receipt transactions.

Error Codes

Name Code
InvalidBundleID 1098
InvalidCurrencyCode 1179
InvalidEnvironmentForReceipt 1300
InvalidReceipt 1021
InvalidVirtualCurrency 1051
NoMatchingCatalogItemForReceipt 1178
ReceiptAlreadyUsed 1022
ReceiptContainsMultipleInAppItems 1097
ReceiptDoesNotContainInAppItems 1096