SDK for / Overview

XsollaStoreSubsystem.h

1// Copyright 2023 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 "XsollaStoreSubsystem.generated.h"
13
14
15enum class EXsollaPublishingPlatform : uint8;
16class FJsonObject;
19
20DECLARE_DYNAMIC_DELEGATE(FOnStoreUpdate);
21DECLARE_DYNAMIC_DELEGATE(FOnStoreSuccessPayment);
22DECLARE_DYNAMIC_DELEGATE(FOnStoreCancelPayment);
23DECLARE_DYNAMIC_DELEGATE(FOnStoreCartUpdate);
24DECLARE_DYNAMIC_DELEGATE_OneParam(FOnStoreBrowserClosed, bool, bIsManually);
25DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCartUpdate, const FStoreCart&, Cart);
26DECLARE_DYNAMIC_DELEGATE_TwoParams(FOnFetchTokenSuccess, const FString&, AccessToken, int32, OrderId);
27DECLARE_DYNAMIC_DELEGATE_ThreeParams(FOnCheckOrder, int32, OrderId, EXsollaOrderStatus, OrderStatus, FXsollaOrderContent, OrderContent);
28DECLARE_DYNAMIC_DELEGATE_OneParam(FOnCurrencyUpdate, const FVirtualCurrency&, Currency);
29DECLARE_DYNAMIC_DELEGATE_OneParam(FOnCurrencyPackageUpdate, const FVirtualCurrencyPackage&, CurrencyPackage);
30DECLARE_DYNAMIC_DELEGATE_OneParam(FOnPurchaseUpdate, int32, OrderId);
31DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetPromocodeRewardsUpdate, FStorePromocodeRewardData, RewardsData);
32DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetListOfBundlesUpdate, FStoreListOfBundles, ListOfBundles);
33DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetSpecifiedBundleUpdate, FStoreBundle, Bundle);
34DECLARE_DYNAMIC_DELEGATE(FOnPromocodeUpdate);
35DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetItemsListBySpecifiedGroup, FStoreItemsList, ItemsList);
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(FOnVirtualCurrenciesUpdate, const FVirtualCurrencyData&, VirtualCurrencyData);
44DECLARE_DYNAMIC_DELEGATE_OneParam(FOnStoreGamesUpdate, const FStoreGamesData&, GamesData);
45DECLARE_DYNAMIC_DELEGATE_OneParam(FOnStoreItemsUpdate, const FStoreItemsData&, ItemsData);
46DECLARE_DYNAMIC_DELEGATE_OneParam(FOnVirtualCurrencyPackagesUpdate, const FVirtualCurrencyPackagesData&, Data);
47DECLARE_DYNAMIC_DELEGATE_OneParam(FOnItemGroupsUpdate, const TArray<FXsollaItemGroup>&, ItemGroups);
48DECLARE_DYNAMIC_DELEGATE(FOnRedeemGameCodeSuccess);
49DECLARE_DYNAMIC_DELEGATE_OneParam(FOnSubscriptionPublicPlansListUpdate, FSubscriptionPlansList, SubscriptionPlansList);
50DECLARE_DYNAMIC_DELEGATE_OneParam(FOnSubscriptionPlansListUpdate, FSubscriptionPlansList, SubscriptionPlansList);
51DECLARE_DYNAMIC_DELEGATE_OneParam(FOnSubscriptionsListUpdate, FSubscriptionsList, SubscriptionsList);
52DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetSubscriptionDetailsSuccess, const FSubscriptionDetails&, SubscriptionDetails);
53DECLARE_DYNAMIC_DELEGATE_OneParam(FOnGetSubscriptionPayStationLinkSuccess, const FString&, LinkToPaystation);
54DECLARE_DYNAMIC_DELEGATE(FOnCancelSubscriptionSuccess);
55
56UCLASS()
57class XSOLLASTORE_API UXsollaStoreSubsystem : public UGameInstanceSubsystem
58{
59GENERATED_BODY()
60
61public:
63
64// Begin USubsystem
65virtual void Initialize(FSubsystemCollectionBase& Collection) override;
66virtual void Deinitialize() override;
67// End USubsystem
68
74UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
75void Initialize(const FString& InProjectId);
76
91UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
92void GetVirtualItems(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
93const FOnStoreItemsUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0, const FString& AuthToken = TEXT(""));
94
106UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
107void GetItemGroups(const FString& Locale,
108const FOnItemGroupsUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
109
123UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
124void GetVirtualCurrencies(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
125const FOnVirtualCurrenciesUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
126
141UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
142void GetVirtualCurrencyPackages(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
143const FOnVirtualCurrencyPackagesUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0, const FString& AuthToken = TEXT(""));
144
160UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualItems", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
161void GetItemsListBySpecifiedGroup(const FString& ExternalId, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
162const FOnGetItemsListBySpecifiedGroup& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0, const FString& AuthToken = TEXT(""));
163
174UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualItems", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
175void GetAllItemsList(const FString& Locale, const FOnGetItemsList& SuccessCallback, const FOnError& ErrorCallback, const FString& AuthToken = TEXT(""));
176
195UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
196void FetchPaymentToken(const FString& AuthToken, const FString& ItemSKU,
197const FString& Currency, const FString& Country, const FString& Locale, const FXsollaParameters CustomParameters,
198const FOnFetchTokenSuccess& SuccessCallback, const FOnError& ErrorCallback, const int32 Quantity = 1, const FString& ExternalId = TEXT(""));
199
213UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
214void FetchCartPaymentToken(const FString& AuthToken, const FString& CartId,
215const FString& Currency, const FString& Country, const FString& Locale, const FXsollaParameters CustomParameters,
216const FOnFetchTokenSuccess& SuccessCallback, const FOnError& ErrorCallback, const FString& ExternalId = TEXT(""));
217
231UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (WorldContext = "WorldContextObject", AutoCreateRefTerm = "SuccessCallback, ErrorCallback, BrowserClosedCallback"))
232void LaunchPaymentConsole(UObject* WorldContextObject, const int32 OrderId, const FString& AccessToken,
233const FOnStoreSuccessPayment& SuccessCallback, const FOnError& ErrorCallback, const FOnStoreBrowserClosed& BrowserClosedCallback);
234
242UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
243void CheckOrder(const FString& AuthToken, const int32 OrderId,
244const FOnCheckOrder& SuccessCallback, const FOnError& ErrorCallback);
245
254UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
255void CheckPendingOrder(const FString& AccessToken, const int32 OrderId,
256const FOnStoreSuccessPayment& SuccessCallback, const FOnError& ErrorCallback, bool bIsUserInvolvedToPayment = false);
257
267UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
268void CreateOrderWithSpecifiedFreeItem(const FString& AuthToken, const FString& ItemSKU,
269const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback, const int32 Quantity = 1);
270
279UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
280void CreateOrderWithFreeCart(const FString& AuthToken, const FString& CartId,
281const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
282
290UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
291void PurchaseStoreItem(const FStoreItem& StoreItem, const FXsollaPaymentTokenRequestPayload PaymentTokenRequestPayload,
292const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
293
301UFUNCTION(BlueprintCallable, Category = "Xsolla|Store", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
302void PurchaseCurrencyPackage(const FVirtualCurrencyPackage& CurrencyPackage, const FXsollaPaymentTokenRequestPayload PaymentTokenRequestPayload,
303const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
304
313UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
314void ClearCart(const FString& AuthToken, const FString& CartId,
315const FOnStoreCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
316
328UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
329void UpdateCart(const FString& AuthToken, const FString& CartId,
330const FString& Currency, const FString& Locale,
331const FOnStoreCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
332
343UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
344void AddToCart(const FString& AuthToken, const FString& CartId, const FString& ItemSKU, const int32 Quantity,
345const FOnStoreCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
346
356UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
357void RemoveFromCart(const FString& AuthToken, const FString& CartId, const FString& ItemSKU,
358const FOnStoreCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
359
369UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
370void FillCartById(const FString& AuthToken, const FString& CartId, const TArray<FStoreCartItem>& Items,
371const FOnStoreCartUpdate& SuccessCallback, const FOnError& ErrorCallback);
372
381UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Bundle", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
382void GetSpecifiedBundle(const FString& Sku, const FOnGetSpecifiedBundleUpdate& SuccessCallback, const FOnError& ErrorCallback, const FString& AuthToken = TEXT(""));
383
397UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Bundle", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
398void GetBundles(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
399const FOnGetListOfBundlesUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0, const FString& AuthToken = TEXT(""));
400
412UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
413void GetVirtualCurrency(const FString& CurrencySKU,
414const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
415const FOnCurrencyUpdate& SuccessCallback, const FOnError& ErrorCallback);
416
429UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
430void GetVirtualCurrencyPackage(const FString& PackageSKU,
431const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
432const FOnCurrencyPackageUpdate& SuccessCallback, const FOnError& ErrorCallback);
433
445UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|VirtualCurrency", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
446void BuyItemWithVirtualCurrency(const FString& AuthToken, const FString& ItemSKU, const FString& CurrencySKU,
447const EXsollaPublishingPlatform Platform, const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
448
457UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Promocode", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
458void GetPromocodeRewards(const FString& AuthToken, const FString& PromocodeCode,
459const FOnGetPromocodeRewardsUpdate& SuccessCallback, const FOnError& ErrorCallback);
460
469UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Promocode", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
470void RedeemPromocode(const FString& AuthToken, const FString& PromocodeCode,
471const FOnPromocodeUpdate& SuccessCallback, const FOnError& ErrorCallback);
472
480UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Promocode", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
481void RemovePromocodeFromCart(const FString& AuthToken,
482const FOnPromocodeUpdate& SuccessCallback, const FOnError& ErrorCallback);
483
495UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys" , meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
496void GetGamesList(const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
497const FOnStoreGamesUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
498
511UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
512void GetGamesListBySpecifiedGroup(const FString& ExternalId, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
513const FOnGetGamesListBySpecifiedGroup& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
514
524UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
525void GetGameItem(const FString& GameSKU, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
526const FOnGameUpdate& SuccessCallback, const FOnError& ErrorCallback);
527
538UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
539void GetGameKeyItem(const FString& ItemSKU, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
540const FOnGameKeyUpdate& SuccessCallback, const FOnError& ErrorCallback);
541
554UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
555void GetGameKeysListBySpecifiedGroup(const FString& ExternalId, const FString& Locale, const FString& Country, const TArray<FString>& AdditionalFields,
556const FOnGetGameKeysListBySpecifiedGroup& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
557
563UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
564void GetDRMList(const FOnDRMListUpdate& SuccessCallback, const FOnError& ErrorCallback);
565
577UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "AdditionalFields, SuccessCallback, ErrorCallback"))
578void GetOwnedGames(const FString& AuthToken, const TArray<FString>& AdditionalFields,
579const FOnOwnedGamesListUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0, const bool bIsSandbox = false);
580
588UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|GameKeys", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
589void RedeemGameCodeByClient(const FString& AuthToken, const FString& Code,
590const FOnRedeemGameCodeSuccess& SuccessCallback, const FOnError& ErrorCallback);
591
605UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "PlanId, PlanExternalId, SuccessCallback, ErrorCallback"))
606void GetSubscriptionPublicPlans(const TArray<int> PlanId, const TArray<FString>& PlanExternalId, const FString& Country, const FString& Locale,
607const FOnSubscriptionPublicPlansListUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
608
623UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "PlanId, PlanExternalId, SuccessCallback, ErrorCallback"))
624void GetSubscriptionPlans(const FString& AuthToken, const TArray<int> PlanId, const TArray<FString>& PlanExternalId, const FString& Country, const FString& Locale,
625const FOnSubscriptionPlansListUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
626
638UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
639void GetSubscriptions(const FString& AuthToken, const FString& Locale,
640const FOnSubscriptionsListUpdate& SuccessCallback, const FOnError& ErrorCallback, const int Limit = 50, const int Offset = 0);
641
652UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
653void GetSubscriptionDetails(const FString& AuthToken, const int32 SubscriptionId, const FString& Locale,
654const FOnGetSubscriptionDetailsSuccess& SuccessCallback, const FOnError& ErrorCallback);
655
665UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
666void GetSubscriptionPurchaseUrl(const FString& AuthToken, const FString& PlanExternalId, const FString& Country,
667const FOnGetSubscriptionPayStationLinkSuccess& SuccessCallback, const FOnError& ErrorCallback);
668
677UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
678void GetSubscriptionManagementUrl(const FString& AuthToken, const FString& Country,
679const FOnGetSubscriptionPayStationLinkSuccess& SuccessCallback, const FOnError& ErrorCallback);
680
689UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
690void GetSubscriptionRenewalUrl(const FString& AuthToken, const int32 SubscriptionId,
691const FOnGetSubscriptionPayStationLinkSuccess& SuccessCallback, const FOnError& ErrorCallback);
692
701UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Subscriptions", meta = (AutoCreateRefTerm = "SuccessCallback, ErrorCallback"))
702void CancelSubscription(const FString& AuthToken, const int32 SubscriptionId,
703const FOnCancelSubscriptionSuccess& SuccessCallback, const FOnError& ErrorCallback);
704
705protected:
706void GetVirtualItems_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
707const bool bSucceeded, FOnStoreItemsUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
708void GetItemGroups_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
709const bool bSucceeded, FOnItemGroupsUpdate SuccessCallback, FOnError ErrorCallback);
710void GetVirtualCurrencies_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
711const bool bSucceeded, FOnVirtualCurrenciesUpdate SuccessCallback, FOnError ErrorCallback);
712void GetVirtualCurrencyPackages_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
713const bool bSucceeded, FOnVirtualCurrencyPackagesUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
714void GetItemsListBySpecifiedGroup_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
715const bool bSucceeded, FOnGetItemsListBySpecifiedGroup SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
716void GetAllItemsList_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
717const bool bSucceeded, FOnGetItemsList SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
718
719void FetchPaymentToken_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
720const bool bSucceeded, FOnFetchTokenSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
721void CheckOrder_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
722const bool bSucceeded, FOnCheckOrder SuccessCallback, FOnError ErrorCallback);
723
724void CreateOrderWithSpecifiedFreeItem_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
725const bool bSucceeded, FOnPurchaseUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
726void CreateOrderWithFreeCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
727const bool bSucceeded, FOnPurchaseUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
728
729void CreateCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
730const bool bSucceeded, FOnStoreCartUpdate SuccessCallback, FOnError ErrorCallback);
731void ClearCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
732const bool bSucceeded, FOnStoreCartUpdate SuccessCallback, FOnError ErrorCallback);
733void UpdateCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
734const bool bSucceeded, FOnStoreCartUpdate SuccessCallback, FOnError ErrorCallback);
735void AddToCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
736const bool bSucceeded, FOnStoreCartUpdate SuccessCallback, FOnError ErrorCallback);
737void RemoveFromCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
738const bool bSucceeded, FOnStoreCartUpdate SuccessCallback, FOnError ErrorCallback);
739void FillCartById_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
740const bool bSucceeded, FOnStoreCartUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
741
742void GetListOfBundles_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
743const bool bSucceeded, FOnGetListOfBundlesUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
744void GetSpecifiedBundle_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
745const bool bSucceeded, FOnGetSpecifiedBundleUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
746
747void GetVirtualCurrency_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
748const bool bSucceeded, FOnCurrencyUpdate SuccessCallback, FOnError ErrorCallback);
749void GetVirtualCurrencyPackage_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
750const bool bSucceeded, FOnCurrencyPackageUpdate SuccessCallback, FOnError ErrorCallback);
751
752void BuyItemWithVirtualCurrency_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
753const bool bSucceeded, FOnPurchaseUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
754
755void GetPromocodeRewards_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
756const bool bSucceeded, FOnGetPromocodeRewardsUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
757void RedeemPromocode_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
758const bool bSucceeded, FOnPromocodeUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
759void RemovePromocodeFromCart_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
760const bool bSucceeded, FOnPromocodeUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
761
762void GetGamesList_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
763const bool bSucceeded, FOnStoreGamesUpdate SuccessCallback, FOnError ErrorCallback);
764
765void GetGamesListBySpecifiedGroup_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
766const bool bSucceeded, FOnGetGamesListBySpecifiedGroup SuccessCallback, FOnError ErrorCallback);
767
768void GetGameItem_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
769const bool bSucceeded, FOnGameUpdate SuccessCallback, FOnError ErrorCallback);
770
771void GetGameKeyItem_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
772const bool bSucceeded, FOnGameKeyUpdate SuccessCallback, FOnError ErrorCallback);
773
774void GetGameKeysListBySpecifiedGroup_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
775const bool bSucceeded, FOnGetGameKeysListBySpecifiedGroup SuccessCallback, FOnError ErrorCallback);
776
777void GetDRMList_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
778const bool bSucceeded, FOnDRMListUpdate SuccessCallback, FOnError ErrorCallback);
779
780void GetOwnedGames_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
781const bool bSucceeded, FOnOwnedGamesListUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
782
783void RedeemGameCodeByClient_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
784const bool bSucceeded, FOnRedeemGameCodeSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
785
786void GetSubscriptionPublicPlans_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
787const bool bSucceeded, FOnSubscriptionPublicPlansListUpdate SuccessCallback, FOnError ErrorCallback);
788
789void GetSubscriptionPlans_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
790const bool bSucceeded, FOnSubscriptionPlansListUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
791
792void GetSubscriptions_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
793const bool bSucceeded, FOnSubscriptionsListUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
794
795void GetSubscriptionDetails_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
796const bool bSucceeded, FOnGetSubscriptionDetailsSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
797
798void GetSubscriptionPaystationLink_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
799const bool bSucceeded, FOnGetSubscriptionPayStationLinkSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
800
801void CancelSubscription_HttpRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
802const bool bSucceeded, FOnCancelSubscriptionSuccess SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
803
805void HandleRequestError(XsollaHttpRequestError ErrorData, FOnError ErrorCallback);
806
807void HandlePurchaseFreeItemsRequest(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse,
808const bool bSucceeded, FOnPurchaseUpdate SuccessCallback, FErrorHandlersWrapper ErrorHandlersWrapper);
809
810protected:
812void LoadData();
813
815void SaveData();
816
818bool IsSandboxEnabled() const;
819
820void InnerPurchase(const FString& Sku, bool bIsFree, const TArray<FXsollaVirtualCurrencyPrice>& VirtualPrices,
821const FXsollaPaymentTokenRequestPayload PaymentTokenRequestPayload, const FOnPurchaseUpdate& SuccessCallback, const FOnError& ErrorCallback);
822
823UFUNCTION()
824void FetchTokenCallback(const FString& AccessToken, int32 InOrderId);
825
826UFUNCTION()
827void BuyVirtualOrFreeItemCallback(int32 InOrderId);
828
829UFUNCTION()
830void CheckPendingOrderSuccessCallback();
831
832private:
834TSharedRef<IHttpRequest, ESPMode::ThreadSafe> CreateHttpRequest(const FString& Url, const EXsollaHttpRequestVerb Verb = EXsollaHttpRequestVerb::VERB_GET,
835const FString& AuthToken = FString(), const FString& Content = FString());
836
838FString SerializeJson(const TSharedPtr<FJsonObject> DataJson) const;
839
841void ProcessNextCartRequest();
842
844TSharedPtr<FJsonObject> PreparePaymentTokenRequestPayload(const FString& Currency, const FString& Country,
845const FString& Locale, const FString& ExternalId, const FXsollaParameters& CustomParameters);
846
848TSharedPtr<FJsonObject> PreparePaystationSettings();
849
851bool GetSteamUserId(const FString& AuthToken, FString& SteamId, FString& OutError);
852
854TArray<TSharedRef<IHttpRequest, ESPMode::ThreadSafe>> CartRequestsQueue;
855
856public:
858UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
859TArray<FStoreItem> GetVirtualItemsWithoutGroup() const;
860
862UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
863const FStoreItemsData& GetItemsData() const;
864
866UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart")
867const FStoreCart& GetCart() const;
868
870UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
871const FString& GetPendingPaystationUrl() const;
872
874UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
875FString GetItemName(const FString& ItemSKU) const;
876
878UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
879const FStoreItem& FindItemBySku(const FString& ItemSku, bool& bHasFound) const;
880
882UFUNCTION(BlueprintCallable, Category = "Xsolla|Store")
883const FVirtualCurrencyPackage& FindVirtualCurrencyPackageBySku(const FString& ItemSku, bool& bHasFound) const;
884
886UFUNCTION(BlueprintCallable, Category = "Xsolla|Store|Cart")
887bool IsItemInCart(const FString& ItemSKU) const;
888
889public:
891UPROPERTY(BlueprintAssignable, Category = "Xsolla|Store|Cart")
892FOnCartUpdate OnCartUpdate;
893
894protected:
896FString ProjectID;
897
900
903
905FVirtualCurrencyPackagesData VirtualCurrencyPackages;
906
908FString CachedCartCurrency;
909
911FString CachedAuthToken;
912
914FString CachedCartId;
915
917FString CachedCartLocale;
918
920FString PengindPaystationUrl;
921
923
924private:
925UPROPERTY()
926TSubclassOf<UXsollaStoreBrowserWrapper> DefaultBrowserWidgetClass;
927
928UPROPERTY()
929TArray<UXsollaOrderCheckObject*> CachedOrderCheckObjects;
930
931UPROPERTY()
932UXsollaLoginSubsystem* LoginSubsystem;
933
934UPROPERTY()
935FString PaymentAccessToken;
936
937UPROPERTY()
938FString PaymentRedirectURI;
939
940UPROPERTY()
941bool PaymentEnableSandbox;
942
943UPROPERTY()
944int32 PaymentOrderId;
945
946FOnPurchaseUpdate PaymentSuccessCallback;
947
948FOnError PaymentErrorCallback;
949
950UPROPERTY()
951FOnStoreBrowserClosed PaymentBrowserClosedCallback;
952};
Definition: XsollaLoginSubsystem.h:49
Definition: XsollaOrderCheckObject.h:21
Definition: XsollaStoreBrowserWrapper.h:16
Definition: XsollaStoreSubsystem.h:58
Definition: XsollaStoreDataModel.h:532
Definition: XsollaStoreDataModel.h:447
Definition: XsollaStoreDataModel.h:116
Definition: XsollaStoreDataModel.h:245
Definition: XsollaStoreDataModel.h:371
Definition: XsollaStoreDataModel.h:434