Skip to content

Commit eddcf81

Browse files
committed
added SequencePayBP subsystem with on ramp functions
1 parent 70dc3a1 commit eddcf81

File tree

4 files changed

+73
-6
lines changed

4 files changed

+73
-6
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Copyright 2024 Horizon Blockchain Games Inc. All rights reserved.
2+
3+
#include "Integrators/SequencePayBP.h"
4+
#include "Transak.h"
5+
6+
FString USequencePayBP::GetOnRampLink(const FString& WalletAddress, const FTransakSettings& Settings)
7+
{
8+
UTransakOnRamp* OnRamp = UTransakOnRamp::Init(WalletAddress);
9+
return OnRamp->GetTransakLink(Settings.FiatCurrency, Settings.FiatAmount, Settings.CryptoCurrency, Settings.Networks, Settings.DisableWalletAddressForm);
10+
}
11+
12+
void USequencePayBP::OpenOnRampInExternalBrowser(const FString& WalletAddress, const FTransakSettings& Settings)
13+
{
14+
UTransakOnRamp* OnRamp = UTransakOnRamp::Init(WalletAddress);
15+
OnRamp->OpenTransakLink(Settings.FiatCurrency, Settings.FiatAmount, Settings.CryptoCurrency, Settings.Networks, Settings.DisableWalletAddressForm);
16+
}
17+
18+
void USequencePayBP::GetSupportedOnRampCountries(FOnSupportedTransakCountries OnSuccess, FOnFailure OnFailure)
19+
{
20+
const TSuccessCallback<TArray<FSupportedCountry>> SuccessCallback = [OnSuccess](const TArray<FSupportedCountry>& Countries)
21+
{
22+
OnSuccess.ExecuteIfBound(Countries);
23+
};
24+
25+
const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error)
26+
{
27+
OnFailure.ExecuteIfBound(Error.Message);
28+
};
29+
30+
const UTransakOnRamp* OnRamp = NewObject<UTransakOnRamp>();
31+
OnRamp->GetSupportedCountries(SuccessCallback,FailureCallback);
32+
}

Plugins/SequencePlugin/Source/SequencePlugin/Private/Transak.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "Http.h"
44
#include "GenericPlatform/GenericPlatformProcess.h"
55
#include "HttpManager.h"
6+
#include "Util/Log.h"
67
#include "Util/SequenceSupport.h"
78

89
UTransakOnRamp::UTransakOnRamp(){}
@@ -16,28 +17,35 @@ UTransakOnRamp * UTransakOnRamp::Init(const FString& WalletAddressIn)
1617

1718
void UTransakOnRamp::GetSupportedCountries(TSuccessCallback<TArray<FSupportedCountry>> OnSuccess, FFailureCallback OnFailure)
1819
{
20+
const FString& Url = "https://api.transak.com/api/v2/countries";
21+
SEQ_LOG(Log, TEXT("%s"), *Url);
22+
1923
const TSharedRef<IHttpRequest> http_post_req = FHttpModule::Get().CreateRequest();
2024
http_post_req->SetVerb("GET");
21-
http_post_req->SetHeader("","");
22-
http_post_req->SetTimeout(30);
23-
http_post_req->SetURL("https://api.transak.com/api/v2/countries");
25+
http_post_req->SetTimeout(15);
26+
http_post_req->SetURL(Url);
2427
http_post_req->OnProcessRequestComplete().BindLambda([OnSuccess, OnFailure](FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
2528
{
2629
if(bWasSuccessful)
2730
{
2831
const FString Content = Request->GetResponse()->GetContentAsString();
2932
const FSupportedCountryResponse ParsedResponse = USequenceSupport::JSONStringToStruct<FSupportedCountryResponse>(Content);
3033
OnSuccess(ParsedResponse.Response);
34+
SEQ_LOG(Log, TEXT("%s"), *Content);
3135
}
3236
else
3337
{
3438
if(Request.IsValid() && Request->GetResponse().IsValid())
3539
{
36-
OnFailure(FSequenceError(RequestFail, "Request failed: " + Request->GetResponse()->GetContentAsString()));
40+
const FString& Content = Request->GetResponse()->GetContentAsString();
41+
OnFailure(FSequenceError(RequestFail, "Request failed: " + Content));
42+
SEQ_LOG_EDITOR(Log, TEXT("%s"), *Content);
3743
}
3844
else
3945
{
40-
OnFailure(FSequenceError(RequestFail, "Request failed: Invalid Request Pointer"));
46+
const FString& Error = "Request failed: Invalid Request Pointer";
47+
OnFailure(FSequenceError(RequestFail, Error));
48+
SEQ_LOG(Error, TEXT("%s"), *Error);
4149
}
4250
}
4351
});

Plugins/SequencePlugin/Source/SequencePlugin/Private/Transak.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,5 @@ class SEQUENCEPLUGIN_API UTransakOnRamp : public UObject
1818
UTransakOnRamp();
1919
static void GetSupportedCountries(TSuccessCallback<TArray<FSupportedCountry>> OnSuccess, FFailureCallback OnFailure);
2020
void OpenTransakLink(const FString& FiatCurrencyIn = FDefaultTransak::FiatCurrency, const FString& DefaultFiatAmountIn = FDefaultTransak::FiatAmount, const FString& DefaultCryptoCurrencyIn = FDefaultTransak::CryptoCurrency, const FString& NetworksIn = FDefaultTransak::Networks, bool DisableWalletAddressFormIn = FDefaultTransak::DisableWalletAddressForm);
21-
private:
2221
FString GetTransakLink(const FString& FiatCurrencyIn = FDefaultTransak::FiatCurrency, const FString& DefaultFiatAmountIn = FDefaultTransak::FiatAmount, const FString& DefaultCryptoCurrencyIn = FDefaultTransak::CryptoCurrency, const FString& NetworksIn = FDefaultTransak::Networks, bool DisableWalletAddressFormIn = FDefaultTransak::DisableWalletAddressForm);
2322
};
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright 2024 Horizon Blockchain Games Inc. All rights reserved.
2+
3+
#pragma once
4+
5+
#include "CoreMinimal.h"
6+
#include "Sequence/SequenceWalletBPTypes.h"
7+
#include "Subsystems/GameInstanceSubsystem.h"
8+
#include "UObject/Object.h"
9+
#include "SequencePayBP.generated.h"
10+
11+
DECLARE_DYNAMIC_DELEGATE_OneParam(FOnSupportedTransakCountries, const TArray<FSupportedCountry>&, SupportedCountries);
12+
DECLARE_DYNAMIC_DELEGATE_OneParam(FOnFailure, const FString&, Error);
13+
14+
UCLASS()
15+
class SEQUENCEPLUGIN_API USequencePayBP : public UGameInstanceSubsystem
16+
{
17+
GENERATED_BODY()
18+
19+
public:
20+
UFUNCTION(BlueprintCallable, Category="0xSequence SDK - Functions")
21+
FString GetOnRampLink(const FString& WalletAddress, const FTransakSettings& Settings);
22+
23+
UFUNCTION(BlueprintCallable, Category="0xSequence SDK - Functions")
24+
void OpenOnRampInExternalBrowser(const FString& WalletAddress, const FTransakSettings& Settings);
25+
26+
UFUNCTION(BlueprintCallable, Category="0xSequence SDK - Functions")
27+
void GetSupportedOnRampCountries(FOnSupportedTransakCountries OnSuccess, FOnFailure OnFailure);
28+
};

0 commit comments

Comments
 (0)