Orders and Fulfillment Reference #

Initiate order sync and fulfillment from the SDK #

Through the Pragma SDK you can initiate a sync call to a provider to check for new orders then fulfill and grant items to players.

Pragma stores the date of the last time a player ran FulfillOrders successfully. We will only fulfill newly synced orders since the last successful run date.

Unreal SDK #

Player->OrderApi().FulfillOrders(
    FPragmaProviderData
    {
        EnumToString<EPragma_Account_IdProvider>(EPragma_Account_IdProvider::STEAM)
    },
    UPragmaOrderApi::FFulfillOrdersDelegate::CreateLambda(
        [](TPragmaResult<TArray<FPragmaFulfillment>> Result)
        {
            //Handle Result
        }
    )
);
Player->OrderApi().FulfillOrders(
    FPragmaProviderData
    {
        EnumToString<EPragma_Account_IdProvider>(EPragma_Account_IdProvider::EPIC)
    },
    UPragmaOrderApi::FFulfillOrdersDelegate::CreateLambda(
        [](TPragmaResult<TArray<FPragmaFulfillment>> Result)
        {
            //Handle Result
        }
    )
);
Player->OrderApi().FulfillOrders(
    FPragmaProviderData
    {
        EnumToString<EPragma_Account_IdProvider>(EPragma_Account_IdProvider::TWITCH)
    },
    UPragmaOrderApi::FFulfillOrdersDelegate::CreateLambda(
        [](TPragmaResult<TArray<FPragmaFulfillment>> Result)
        {
            //Handle Result
        }
    )
);
Contact your customer support representative for more information.
Contact your customer support representative for more information.

Unity SDK #

player.OrderApi.FulfillOrders(
    new ProviderData{ ProviderId = IdProvider.Steam.GetOriginalName() },
    (result) =>
    {
        //Handle result;
    }
);
player.OrderApi.FulfillOrders(
    new ProviderData{ ProviderId = IdProvider.Epic.GetOriginalName() },
    (result) =>
    {
        //Handle result;
    }
);
player.OrderApi.FulfillOrders(
    new ProviderData{ ProviderId = IdProvider.Twitch.GetOriginalName() },
    (result) =>
    {
        //Handle result;
    }
);
Contact your customer support representative for more information.
Contact your customer support representative for more information.

Order Provider Plugins #

ProviderPragma Engine Plugin
Steampragma.order.SteamOrderProviderPlugin
Epicpragma.order.EpicOrderProviderPlugin
Twitchpragma.order.TwitchOrderProviderPlugin
XboxContact your customer representative for more information.
PlayStationContact your customer representative for more information.

For providers not listed see Custom Order Provider Plugin.

Order mapping specs #

The following section includes example Order mapping specs for supported providers.

The source types are defined in orderContent.proto. For more details go to src/main/proto/pragma/order/orderContent.proto.
[
  {
    "skuId": "Steam Ownership Sku Id",
    "sources": [
      {
        "provider": "STEAM",
        "steamSource": {
          "ownership": {
            "appId": "{steamAppId}"
          }
        }
      }
    ]
  },
  {
    "skuId": "Steam Inventory Sku Id",
    "sources": [
      {
        "provider": "STEAM",
        "steamSource": {
          "inventory": {
            "itemDefId": "{steamItemDefId}"
          }
        }
      }
    ]
  }
]
[
  {
    "skuId": "Epic Ownership Sku Id",
    "sources": [
      {
        "provider": "EPIC",
        "epicSource": {
          "ownership": {
            "audienceItemId": "{epicAudienceId}"
          }
        }
      }
    ]
  },
  {
    "skuId": "Epic Inventory Sku Id",
    "sources": [
      {
        "provider": "EPIC",
        "epicSource": {
          "entitlement": {
            "audienceItemId": "{epicAudienceItemId}"
          }
        }
      }
    ]
  }
]
[
  {
    "skuId": "Twitch Drop Sku Id",
    "sources": [
      {
        "provider": "TWITCH",
        "twitchSource": {
          "rewardId": "{twitchRewardId}"
        }
      }
    ]
  }
]
Contact your customer support representative for more information.
Contact your customer support representative for more information.

Data classes #

Orders #

propertydescription
orderIdUnique identifier for the order.
pragmaSocialIdUnique social identifier for the player (game agnostic).
skuIdUnique identifier that Pragma uses to track an item from a third party provider.

Ex: SmallGoldBundle
quantityAmount of the item in the order.
providerIdEnum to associate which provider the order came from.
providerSourceObject containing information about the item from the third party.
orderStatusThe following are the possible statuses: PENDING, RECEIVED, and REVOKED.
purchaseDateMillisDate the item was purchased in milliseconds.
createdTimestampMillisDate this order record was created in milliseconds.
lastUpdatedTimestampMillisLast updated timestamp the order was altered in milliseconds.
contentVersionVersion of the OrderMappingsSpecs.json file used when processing the order.

Fulfillments #

propertydescription
fulfillmentIdUnique identifier for the fulfillment.
orderIdUnique identifier for the order.
pragmaPlayerIdUnique identifier for the player for a particular game.
skuIdUnique identifier that Pragma uses to track an item from a third party provider.

Ex: SmallGoldBundle
quantityAmount of the item in the order.
providerIdEnum to associate which provider the order came from.
statusThe following are the possible statuses: FULFILLED, FULFILLMENT_FAILED, REVOKED, and REVOKED_FAILED.
createdTimestampMillisDate this fulfillment was created in milliseconds.
lastUpdatedTimestampMillisLast updated timestamp the fulfillment was altered in milliseconds.
contentVersionVersion of the FulfillmentMappingSpecs.json file used when processing the fulfillment.

Error types #

error typedescription
OrderProviderUnexpectedResponseApplicationErrorPragma can’t communicate with the third party provider. This error type contains information on the provider type (Steam, Epic) and the error message received from the third party provider (500 internal service error).
OrderService_OrderProviderPluginMissingThere is no configured Order Provider Plugin.
OrderService_OrderStatusUpdateFailedThe order status failed to be updated.
OrderService_ProviderDetailsUpdateFailedFailed to update provider details.
OrderService_OrderNotFoundNo orders were found.
OrderService_InternalErrorOrder service encountered an issue while processing the request.
FulfillmentService_ContentValidationErrorInvalid content fulfillment mapping specs.
FulfillmentService_UnexpectedOrderStatusThe order to fulfill has an unexpected order status.