SDKs code references for UE4
Easily embed Xsolla services with this ready-to-use libraries for UE4 applications and games.
XsollaStoreSubsystem.h
1// Copyright 2024 Xsolla Inc. All Rights Reserved.
2
3#pragma once
4
5#include "XsollaStoreDataModel.h"
6#include "XsollaUtilsHttpRequestHelper.h"
7#include "Blueprint/UserWidget.h"
8#include "Subsystems/GameInstanceSubsystem.h"
9#include "Subsystems/SubsystemCollection.h"
10#include "XsollaOrderCheckObject.h"
11#include "XsollaUtilsDataModel.h"
12#include "XsollaStoreDelegates.h"
13#include "XsollaStoreAuxiliaryDataModel.h"
14#include "XsollaStoreSubsystem.generated.h"
15
16
17enum class EXsollaPublishingPlatform : uint8;
18class FJsonObject;
21
22DECLARE_DYNAMIC_DELEGATE(FOnStoreUpdate);
23DECLARE_DYNAMIC_DELEGATE(FOnStoreSuccessPayment);
24DECLARE_DYNAMIC_DELEGATE(FOnStoreCancelPayment);
25DECLARE_DYNAMIC_DELEGATE(FOnStoreCartUpdate);
26DECLARE_DYNAMIC_DELEGATE_OneParam(FOnStoreBrowserClosed, bool, bIsManually);
27DECLARE_DYNAMIC_DELEGATE_OneParam(FOnCartUpdate, const FStoreCart&, Cart);
28DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnFetchTokenSuccess, const FString&, AccessToken, int32, OrderId);
29DECLARE_DYNAMIC_DELEGATE_ThreeParams(FOnCheckOrder, int32, OrderId, EXsollaOrderStatus, OrderStatus, FXsollaOrderContent, OrderContent);
30DECLARE_DYNAMIC_DELEGATE_OneParam(FOnCurrencyUpdate, const FVirtualCurrency&, Currency);
31DECLARE_DYNAMIC_DELEGATE_OneParam(FOnCurrencyPackageUpdate, const FVirtualCurrencyPackage&, CurrencyPackage);
32DECLARE_DYNAMIC_DELEGATE_OneParam(FOnPurchaseUpdate, int32, OrderId);
33DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetPromocodeRewardsUpdate, FStorePromocodeRewardData, RewardsData);
34DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetSpecifiedBundleUpdate, FStoreBundle, Bundle);
35DECLARE_DYNAMIC_DELEGATE_OneParam(FOnPromocodeUpdate, const FStoreCart&, Cart);
36DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetItemsList, FStoreItemsList, ItemsList);
37DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetGamesListBySpecifiedGroup, FStoreGamesList, GamesList);
38DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGameUpdate, const FGameItem&, Game);
39DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGameKeyUpdate, const FGameKeyItem&, GameKey);
40DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetGameKeysListBySpecifiedGroup, FStoreGameKeysList, GameKeysList);
41DECLARE_DYNAMIC_DELEGATE_OneParam(FOnDRMListUpdate, FStoreDRMList, DRMList);
42DECLARE_DYNAMIC_DELEGATE_OneParam(FOnOwnedGamesListUpdate, FOwnedGamesList, GamesList);
43DECLARE_DYNAMIC_DELEGATE_OneParam(FOnStoreGamesUpdate, const FStoreGamesData&, GamesData);
44DECLARE_DYNAMIC_DELEGATE_OneParam(FOnItemGroupsUpdate, const FStoreItemGroupsData&, ItemGroupsData);
45DECLARE_DYNAMIC_DELEGATE(FOnRedeemGameCodeSuccess);
46DECLARE_DYNAMIC_DELEGATE_OneParam(FOnSubscriptionPublicPlansListUpdate, FSubscriptionPlansList, SubscriptionPlansList);
47DECLARE_DYNAMIC_DELEGATE_OneParam(FOnSubscriptionPlansListUpdate, FSubscriptionPlansList, SubscriptionPlansList);
48DECLARE_DYNAMIC_DELEGATE_OneParam(FOnSubscriptionsListUpdate, FSubscriptionsList, SubscriptionsList);
49DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetSubscriptionDetailsSuccess, const FSubscriptionDetails&, SubscriptionDetails);
50DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetSubscriptionPayStationLinkSuccess, const FString&, LinkToPaystation);
51DECLARE_DYNAMIC_DELEGATE(FOnCancelSubscriptionSuccess);
52
53UCLASS()
54class XSOLLASTORE_API UXsollaStoreSubsystem : public UGameInstanceSubsystem
55{
56 GENERATED_BODY()
57
58public:
60
61 // Begin USubsystem
62 virtual void Initialize(FSubsystemCollectionBase& Collection) override;
63 virtual void Deinitialize() override;
64 // End USubsystem
65
71 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
72 void Initialize(const FString& InProjectId);
73
87 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
88 void GetPaginatedVirtualItems(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
89 const FOnStoreItemsUpdate& SuccessCallback, const FOnError& ErrorCallback,
90 const int Limit = 50, const int Offset = 0, const FString& AuthToken = TEXT(""));
91
102 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
103 void GetVirtualItems(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
104 const FOnStoreItemsUpdate& SuccessCallback, const FOnError& ErrorCallback, const FString& AuthToken = TEXT(""));
105
113 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
114 void GetItemGroups(const FString& PromoCode, const FOnItemGroupsUpdate& SuccessCallback, const FOnError& ErrorCallback);
115
128 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
129 void GetPaginatedVirtualCurrencies(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
130 const FOnVirtualCurrenciesUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
131
141 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
142 void GetVirtualCurrencies(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
143 const FOnVirtualCurrenciesUpdate& SuccessCallback, const FOnError& ErrorCallback);
144
158 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
159 void GetPaginatedVirtualCurrencyPackages(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
160 const FOnVirtualCurrencyPackagesUpdate& SuccessCallback, const FOnError& ErrorCallback,
161 const int Limit = 50, const int Offset = 0, const FString& AuthToken = TEXT(""));
162
163
174 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
175 void GetVirtualCurrencyPackages(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
176 const FOnVirtualCurrencyPackagesUpdate& SuccessCallback, const FOnError& ErrorCallback, const FString& AuthToken = TEXT(""));
177
192 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualItems", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
193 void GetPaginatedItemsListBySpecifiedGroup(const FString& ExternalId, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
194 const FOnGetItemsListBySpecifiedGroup& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0, const FString& AuthToken = TEXT(""));
195
207 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualItems", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
208 void GetItemsListBySpecifiedGroup(const FString& ExternalId, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
209 const FOnGetItemsListBySpecifiedGroup& SuccessCallback, const FOnError& ErrorCallback, const FString& AuthToken = TEXT(""));
210
219 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualItems", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
220 void GetAllItemsList(const FString& Locale, const FOnGetItemsList& SuccessCallback, const FOnError& ErrorCallback, const FString& AuthToken = TEXT(""));
221
231 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback, PurchaseParams"))
232 void FetchPaymentToken(const FString& AuthToken, const FString& ItemSKU,
233 const FOnFetchTokenSuccess& SuccessCallback, const FOnError& ErrorCallback, const FXsollaPaymentTokenRequestPayload& PurchaseParams);
234
244 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback, PurchaseParams"))
245 void FetchCartPaymentToken(const FString& AuthToken, const FString& CartId,
246 const FOnFetchTokenSuccess& SuccessCallback, const FOnError& ErrorCallback, const FXsollaPaymentTokenRequestPayload& PurchaseParams);
247
262 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (WorldContext = "WorldContextObject", AutoCreateRefTerm = "SuccessCallback, ErrorCallback, BrowserClosedCallback"))
263 void LaunchPaymentConsole(UObject* WorldContextObject, const int32 OrderId, const FString& AccessToken,
264 const FOnStoreSuccessPayment& SuccessCallback, const FOnError& ErrorCallback, const FOnStoreBrowserClosed& BrowserClosedCallback,
265 const EXsollaPayStationVersion PayStationVersion = EXsollaPayStationVersion::v4);
266
267 //TEXTREVIEW
277 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "PurchaseParams, SuccessCallback, ErrorCallback, BrowserClosedCallback"))
278 void PurchaseItemBySku(const FString& AuthToken, const FString& ItemSKU, const FXsollaPaymentTokenRequestPayload& PurchaseParams,
279 const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback, const FOnStoreBrowserClosed& BrowserClosedCallback);
280
281 // TEXTREVIEW
291 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "PurchaseParams, SuccessCallback, ErrorCallback, BrowserClosedCallback"))
292 void PurchaseCart(const FString& AuthToken, const FString& CartId, const FXsollaPaymentTokenRequestPayload& PurchaseParams,
293 const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback, const FOnStoreBrowserClosed& BrowserClosedCallback);
294
295 // TEXTREVIEW
303 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
304 void PurchaseFreeCart(const FString& AuthToken, const FString& CartId,
305 const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
306
314 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
315 void CheckOrder(const FString& AuthToken, const int32 OrderId,
316 const FOnCheckOrder& SuccessCallback, const FOnError& ErrorCallback);
317
326 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
327 void CheckPendingOrder(const FString& AccessToken, const int32 OrderId,
328 const FOnStoreSuccessPayment& SuccessCallback, const FOnError& ErrorCallback, bool bIsUserInvolvedToPayment = false);
329
339 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
340 void CreateOrderWithSpecifiedFreeItem(const FString& AuthToken, const FString& ItemSKU,
341 const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback, const int32 Quantity = 1);
342
351 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
352 void CreateOrderWithFreeCart(const FString& AuthToken, const FString& CartId,
353 const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
354
363 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "PurchaseParams, SuccessCallback, ErrorCallback"))
364 void PurchaseStoreItem(const FString& AuthToken, const FStoreItem& StoreItem, const FXsollaPaymentTokenRequestPayload& PurchaseParams,
365 const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
366
375 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "PurchaseParams, SuccessCallback, ErrorCallback"))
376 void PurchaseCurrencyPackage(const FString& AuthToken, const FVirtualCurrencyPackage& CurrencyPackage, const FXsollaPaymentTokenRequestPayload& PurchaseParams,
377 const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
378
379 //TEXTREVIEW
388 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "PurchaseParams, SuccessCallback, ErrorCallback"))
389 void PurchaseBundle(const FString& AuthToken, const FStoreBundle& Bundle, const FXsollaPaymentTokenRequestPayload& PurchaseParams,
390 const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
391
400 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
401 void ClearCart(const FString& AuthToken, const FString& CartId,
402 const FOnStoreCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
403
414 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
415 void GetCart(const FString& AuthToken, const FString& CartId, const FString& Currency, const FString& Locale,
416 const FOnCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
417
428 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
429 void UpdateItemInCart(const FString& AuthToken, const FString& CartId, const FString& ItemSKU, const int32 Quantity,
430 const FOnStoreCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
431
441 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
442 void RemoveFromCart(const FString& AuthToken, const FString& CartId, const FString& ItemSKU,
443 const FOnStoreCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
444
454 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
455 void FillCartById(const FString& AuthToken, const FString& CartId, const TArray<FStoreCartItem>& Items,
456 const FOnCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
457
466 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Bundle", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
467 void GetSpecifiedBundle(const FString& Sku, const FOnGetSpecifiedBundleUpdate& SuccessCallback, const FOnError& ErrorCallback, const FString& AuthToken = TEXT(""));
468
482 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Bundle", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
483 void GetPaginatedBundles(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
484 const FOnGetListOfBundlesUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0, const FString& AuthToken = TEXT(""));
485
486
497 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Bundle", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
498 void GetBundles(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
499 const FOnGetListOfBundlesUpdate& SuccessCallback, const FOnError& ErrorCallback, const FString& AuthToken = TEXT(""));
500
510 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
511 void GetVirtualCurrency(const FString& CurrencySKU,
512 const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
513 const FOnCurrencyUpdate& SuccessCallback, const FOnError& ErrorCallback);
514
526 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
527 void GetVirtualCurrencyPackage(const FString& PackageSKU,
528 const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
529 const FOnCurrencyPackageUpdate& SuccessCallback, const FOnError& ErrorCallback);
530
542 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
543 void BuyItemWithVirtualCurrency(const FString& AuthToken, const FString& ItemSKU, const FString& CurrencySKU,
544 const EXsollaPublishingPlatform Platform, const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
545
554 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Promocode", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
555 void GetPromocodeRewards(const FString& AuthToken, const FString& PromocodeCode,
556 const FOnGetPromocodeRewardsUpdate& SuccessCallback, const FOnError& ErrorCallback);
557
567 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Promocode", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
568 void RedeemPromocode(const FString& AuthToken, const FString& PromocodeCode, const FString& CartId,
569 const FOnPromocodeUpdate& SuccessCallback, const FOnError& ErrorCallback);
570
579 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Promocode", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
580 void RemovePromocodeFromCart(const FString& AuthToken, const FString& CartId,
581 const FOnPromocodeUpdate& SuccessCallback, const FOnError& ErrorCallback);
582
593 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys" , meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
594 void GetGamesList(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
595 const FOnStoreGamesUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
596
608 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
609 void GetGamesListBySpecifiedGroup(const FString& ExternalId, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
610 const FOnGetGamesListBySpecifiedGroup& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
611
621 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
622 void GetGameItem(const FString& GameSKU, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
623 const FOnGameUpdate& SuccessCallback, const FOnError& ErrorCallback);
624
635 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
636 void GetGameKeyItem(const FString& ItemSKU, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
637 const FOnGameKeyUpdate& SuccessCallback, const FOnError& ErrorCallback);
638
650 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
651 void GetGameKeysListBySpecifiedGroup(const FString& ExternalId, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
652 const FOnGetGameKeysListBySpecifiedGroup& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
653
659 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
660 void GetDRMList(const FOnDRMListUpdate& SuccessCallback, const FOnError& ErrorCallback);
661
673 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
674 void GetOwnedGames(const FString& AuthToken, const TArray<FString>& AdditionalFields,
675 const FOnOwnedGamesListUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0, const bool bIsSandbox = false);
676
684 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
685 void RedeemGameCodeByClient(const FString& AuthToken, const FString& Code,
686 const FOnRedeemGameCodeSuccess& SuccessCallback, const FOnError& ErrorCallback);
687
701 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "PlanId, PlanExternalId, SuccessCallback, ErrorCallback"))
702 void GetSubscriptionPublicPlans(const TArray<int> PlanId, const TArray<FString>& PlanExternalId, const FString& Country, const FString& Locale,
703 const FOnSubscriptionPublicPlansListUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
704
719 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "PlanId, PlanExternalId, SuccessCallback, ErrorCallback"))
720 void GetSubscriptionPlans(const FString& AuthToken, const TArray<int> PlanId, const TArray<FString>& PlanExternalId, const FString& Country, const FString& Locale,
721 const FOnSubscriptionPlansListUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
722
734 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
735 void GetSubscriptions(const FString& AuthToken, const FString& Locale,
736 const FOnSubscriptionsListUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
737
748 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
749 void GetSubscriptionDetails(const FString& AuthToken, const int32 SubscriptionId, const FString& Locale,
750 const FOnGetSubscriptionDetailsSuccess& SuccessCallback, const FOnError& ErrorCallback);
751
761 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
762 void GetSubscriptionPurchaseUrl(const FString& AuthToken, const FString& PlanExternalId, const FString& Country,
763 const FOnGetSubscriptionPayStationLinkSuccess& SuccessCallback, const FOnError& ErrorCallback);
764
773 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
774 void GetSubscriptionManagementUrl(const FString& AuthToken, const FString& Country,
775 const FOnGetSubscriptionPayStationLinkSuccess& SuccessCallback, const FOnError& ErrorCallback);
776
785 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
786 void GetSubscriptionRenewalUrl(const FString& AuthToken, const int32 SubscriptionId,
787 const FOnGetSubscriptionPayStationLinkSuccess& SuccessCallback, const FOnError& ErrorCallback);
788
797 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
798 void CancelSubscription(const FString& AuthToken, const int32 SubscriptionId,
799 const FOnCancelSubscriptionSuccess& SuccessCallback, const FOnError& ErrorCallback);
800
805 UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Xsolla|Store|Utils", meta = (WorldContext = "WorldContextObject"))
806 static bool IsCustomTabsBrowserAvailable(UObject* WorldContextObject);
807
808protected:
809 void GetVirtualItems_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
810 const bool bSucceeded, FOnStoreItemsUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
811 void GetItemGroups_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
812 const bool bSucceeded, FOnItemGroupsUpdate SuccessCallback, FOnError ErrorCallback);
813 void GetVirtualCurrencies_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
814 const bool bSucceeded, FOnVirtualCurrenciesUpdate SuccessCallback, FOnError ErrorCallback);
815 void GetVirtualCurrencyPackages_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
816 const bool bSucceeded, FOnVirtualCurrencyPackagesUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
817 void GetItemsListBySpecifiedGroup_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
818 const bool bSucceeded, FOnGetItemsListBySpecifiedGroup SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
819 void GetAllItemsList_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
820 const bool bSucceeded, FOnGetItemsList SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
821
822 void FetchPaymentToken_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
823 const bool bSucceeded, FOnFetchTokenSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
824 void CheckOrder_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
825 const bool bSucceeded, FOnCheckOrder SuccessCallback, FOnError ErrorCallback);
826
827 void CreateOrderWithSpecifiedFreeItem_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
828 const bool bSucceeded, FOnPurchaseUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
829 void CreateOrderWithFreeCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
830 const bool bSucceeded, FOnPurchaseUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
831
832 void ClearCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
833 const bool bSucceeded, FOnStoreCartUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
834 void GetCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
835 const bool bSucceeded, FOnCartUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
836 void UpdateItemInCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
837 const bool bSucceeded, FOnStoreCartUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
838 void RemoveFromCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
839 const bool bSucceeded, FOnStoreCartUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
840 void FillCartById_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
841 const bool bSucceeded, FOnCartUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
842
843 void GetListOfBundles_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
844 const bool bSucceeded, FOnGetListOfBundlesUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
845 void GetSpecifiedBundle_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
846 const bool bSucceeded, FOnGetSpecifiedBundleUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
847
848 void GetVirtualCurrency_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
849 const bool bSucceeded, FOnCurrencyUpdate SuccessCallback, FOnError ErrorCallback);
850 void GetVirtualCurrencyPackage_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
851 const bool bSucceeded, FOnCurrencyPackageUpdate SuccessCallback, FOnError ErrorCallback);
852
853 void BuyItemWithVirtualCurrency_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
854 const bool bSucceeded, FOnPurchaseUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
855
856 void GetPromocodeRewards_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
857 const bool bSucceeded, FOnGetPromocodeRewardsUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
858 void RedeemPromocode_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
859 const bool bSucceeded, FOnPromocodeUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
860 void RemovePromocodeFromCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
861 const bool bSucceeded, FOnPromocodeUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
862
863 void GetGamesList_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
864 const bool bSucceeded, FOnStoreGamesUpdate SuccessCallback, FOnError ErrorCallback);
865
866 void GetGamesListBySpecifiedGroup_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
867 const bool bSucceeded, FOnGetGamesListBySpecifiedGroup SuccessCallback, FOnError ErrorCallback);
868
869 void GetGameItem_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
870 const bool bSucceeded, FOnGameUpdate SuccessCallback, FOnError ErrorCallback);
871
872 void GetGameKeyItem_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
873 const bool bSucceeded, FOnGameKeyUpdate SuccessCallback, FOnError ErrorCallback);
874
875 void GetGameKeysListBySpecifiedGroup_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
876 const bool bSucceeded, FOnGetGameKeysListBySpecifiedGroup SuccessCallback, FOnError ErrorCallback);
877
878 void GetDRMList_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
879 const bool bSucceeded, FOnDRMListUpdate SuccessCallback, FOnError ErrorCallback);
880
881 void GetOwnedGames_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
882 const bool bSucceeded, FOnOwnedGamesListUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
883
884 void RedeemGameCodeByClient_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
885 const bool bSucceeded, FOnRedeemGameCodeSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
886
887 void GetSubscriptionPublicPlans_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
888 const bool bSucceeded, FOnSubscriptionPublicPlansListUpdate SuccessCallback, FOnError ErrorCallback);
889
890 void GetSubscriptionPlans_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
891 const bool bSucceeded, FOnSubscriptionPlansListUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
892
893 void GetSubscriptions_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
894 const bool bSucceeded, FOnSubscriptionsListUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
895
896 void GetSubscriptionDetails_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
897 const bool bSucceeded, FOnGetSubscriptionDetailsSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
898
899 void GetSubscriptionPaystationLink_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
900 const bool bSucceeded, FOnGetSubscriptionPayStationLinkSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
901
902 void CancelSubscription_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
903 const bool bSucceeded, FOnCancelSubscriptionSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
904
906 void HandleRequestError(XsollaHttpRequestError ErrorData, FOnError ErrorCallback);
907
908 void HandlePurchaseFreeItemsRequest(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
909 const bool bSucceeded, FOnPurchaseUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
910
911protected:
913 bool IsSandboxEnabled() const;
914
915 void InnerPurchase(const FString& AuthToken, const FString& Sku, bool bIsFree, const TArray<FXsollaVirtualCurrencyPrice>& VirtualPrices,
916 const FXsollaPaymentTokenRequestPayload PaymentTokenRequestPayload, const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
917
918 UFUNCTION()
919 void FetchTokenCallback(const FString& AccessToken, int32 InOrderId);
920
921 UFUNCTION()
922 void BuyVirtualOrFreeItemCallback(int32 InOrderId);
923
924 UFUNCTION()
925 void CheckPendingOrderSuccessCallback();
926
927 UFUNCTION()
928 void BrowserClosedCallback(bool bIsManually);
929
930 // virtual items
931 UFUNCTION()
932 void GetVirtualItemsCallback(const FStoreItemsData& InItemsData);
933
934 UFUNCTION()
935 void GetVirtualItemsError(int32 StatusCode, int32 ErrorCode, const FString& ErrorMessage);
936
937 void CallGetVirtualItems();
938
939 // virtual currencies
940 UFUNCTION()
941 void GetVirtualCurrenciesCallback(const FVirtualCurrencyData& InCurrenciesData);
942
943 UFUNCTION()
944 void GetVirtualCurrenciesError(int32 StatusCode, int32 ErrorCode, const FString& ErrorMessage);
945
946 void CallGetVirtualCurrencies();
947
948 // virtual currency packages
949 UFUNCTION()
950 void GetVirtualCurrencyPackagesCallback(const FVirtualCurrencyPackagesData& InPackagesData);
951
952 UFUNCTION()
953 void GetVirtualCurrencyPackagesError(int32 StatusCode, int32 ErrorCode, const FString& ErrorMessage);
954
955 void CallGetVirtualCurrencyPackages();
956
957 // items by specified group
958 UFUNCTION()
959 void GetAllItemsListBySpecifiedGroupCallback(const FStoreItemsList& InItemsList);
960
961 UFUNCTION()
962 void GetAllItemsListBySpecifiedGroupError(int32 StatusCode, int32 ErrorCode, const FString& ErrorMessage);
963
964 void CallGetAllItemsListBySpecifiedGroup();
965
966 // bundles
967 UFUNCTION()
968 void GetBundlesCallback(const FStoreListOfBundles& InBundlesData);
969
970 UFUNCTION()
971 void GetBundlesError(int32 StatusCode, int32 ErrorCode, const FString& ErrorMessage);
972
973 void CallGetBundles();
974
975private:
977 TSharedRef<IHttpRequest, ESPMode::ThreadSafe> CreateHttpRequest(const FString& Url, const EXsollaHttpRequestVerb Verb = EXsollaHttpRequestVerb::VERB_GET,
978 const FString& AuthToken = FString(), const FString& Content = FString());
979
981 FString SerializeJson(const TSharedPtr<FJsonObject> DataJson) const;
982
984 TSharedPtr<FJsonObject> PreparePaymentTokenRequestPayload(const FXsollaPaymentTokenRequestPayload& PaymentTokenRequestPayload);
985
987 TSharedPtr<FJsonObject> PreparePaystationSettings(const bool bAddAdditionalParameters = false, const bool bDisableSdkParameter = false, const bool bShowCloseButton = false, const FString& CloseButtonIcon = TEXT("cross"), const bool bGpQuickPaymentButton = false);
988
990 bool GetSteamUserId(const FString& AuthToken, FString& SteamId, FString& OutError);
991
992 FString GetPayStationVersionPath(const EXsollaPayStationVersion PayStationVersion) const;
993
994 FString GetTokenQueryParameterName(const EXsollaPayStationVersion PayStationVersion) const;
995
996 FString GetBrowserType() const;
997
998 FString GetBuildPlatform() const;
999
1000public:
1002 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
1003 static TArray<FStoreItem> GetVirtualItemsWithoutGroup(const FStoreItemsData& StoreItemsData);
1004
1006 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
1007 const FString& GetPendingPaystationUrl() const;
1008
1010 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
1011 static FString GetItemName(const FStoreItemsData& StoreItemsData, const FString& ItemSKU);
1012
1014 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
1015 static const FStoreItem& FindItemBySku(const FStoreItemsData& StoreItemsData, const FString& ItemSku, bool& bHasFound);
1016
1018 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
1019 static const FVirtualCurrencyPackage& FindVirtualCurrencyPackageBySku(const FVirtualCurrencyPackagesData& VirtualCurrencyPackagesData,
1020 const FString& ItemSku, bool& bHasFound);
1021
1023 UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart")
1024 static bool IsItemInCart(const FStoreCart& Cart, const FString& ItemSKU);
1025
1026protected:
1028 FString ProjectID;
1029
1031 FString CachedAuthToken;
1032
1034 FXsollaPaymentTokenRequestPayload CachedPaymentTokenRequestPayload;
1035
1037 FString PendingPaystationUrl;
1038
1039 UXsollaStoreBrowserWrapper* MyBrowser;
1040
1041private:
1042 UPROPERTY()
1043 TSubclassOf<UXsollaStoreBrowserWrapper> DefaultBrowserWidgetClass;
1044
1045 UPROPERTY()
1046 TArray<UXsollaOrderCheckObject*> CachedOrderCheckObjects;
1047
1048 UPROPERTY()
1049 UXsollaLoginSubsystem* LoginSubsystem;
1050
1051 UPROPERTY()
1052 FString PaymentAccessToken;
1053
1054 UPROPERTY()
1055 FString PaymentRedirectURI;
1056
1057 UPROPERTY()
1058 bool PaymentEnableSandbox;
1059
1060 UPROPERTY()
1061 int32 PaymentOrderId;
1062
1063 UPROPERTY()
1064 int32 PaymentPayStationVersionNumber;
1065
1066 UPROPERTY()
1067 FOnPurchaseUpdate PaymentSuccessCallback;
1068
1069 UPROPERTY()
1070 FOnError PaymentErrorCallback;
1071
1072 UPROPERTY()
1073 FOnStoreBrowserClosed PaymentBrowserClosedCallback;
1074
1075 UPROPERTY(Transient)
1076 FGetAllVirtualItemsParams GetAllVirtualItemsParams;
1077
1078 UPROPERTY(Transient)
1079 FGetAllVirtualCurrenciesParams GetAllVirtualCurrenciesParams;
1080
1081 UPROPERTY(Transient)
1082 FGetAllVirtualCurrencyPackagesParams GetAllVirtualCurrencyPackagesParams;
1083
1084 UPROPERTY(Transient)
1085 FGetAllItemsListBySpecifiedGroupParams GetAllItemsListBySpecifiedGroupParams;
1086
1087 UPROPERTY(Transient)
1088 FGetAllBundlesParams GetAllBundlesParams;
1089};
Definition: XsollaLoginSubsystem.h:51
Definition: XsollaOrderCheckObject.h:21
Definition: XsollaStoreBrowserWrapper.h:16
Definition: XsollaStoreSubsystem.h:55
Definition: XsollaStoreAuxiliaryDataModel.h:347
Definition: XsollaStoreAuxiliaryDataModel.h:258
Definition: XsollaStoreAuxiliaryDataModel.h:95
Definition: XsollaStoreAuxiliaryDataModel.h:174
Definition: XsollaStoreAuxiliaryDataModel.h:11
Definition: XsollaStoreDataModel.h:607
Definition: XsollaStoreDataModel.h:550
Definition: XsollaStoreDataModel.h:465
Definition: XsollaStoreDataModel.h:116
Definition: XsollaStoreDataModel.h:248
Definition: XsollaStoreDataModel.h:236
Definition: XsollaStoreDataModel.h:658
Definition: XsollaStoreDataModel.h:338
Definition: XsollaStoreDataModel.h:386
Definition: XsollaStoreDataModel.h:449