Приложение Blazor Server не перенаправляется на URL-адрес внешнего платежного приложенияC#

Место общения программистов C#
Ответить
Anonymous
 Приложение Blazor Server не перенаправляется на URL-адрес внешнего платежного приложения

Сообщение Anonymous »

Код: Выделить всё


Checkout
Place Order
[url=/cart]Back to Shopping Bag[/url]


Лучший способ перенаправить на ссылку авторизации на новой вкладке при нажатии кнопки «Разместить заказ».

Код: Выделить всё

@code {
private bool shouldRedirect;
private string authorizationUrl;

protected override async Task OnInitializedAsync()
{
await ProcessCheckout();
}

private async Task ProcessCheckout()
{
try
{
// Initialize checkout process
var userId = await GetUserIdAsync();
var netTotal = await _cartService.GetBasketNetTotalAsync(userId);

var authState = await _authStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
string strEmail = user.FindFirst(System.Security.Claims.ClaimTypes.Email)?.Value;

string token = _configuration["PayStackSettings:PayStackSecretKey"];
var payStack = new PayStackApi(token);

TransactionInitializeRequest request = new()
{
AmountInKobo = Convert.ToInt32(netTotal) * 100,
Email = strEmail,
Reference = Generate().ToString(),
Currency = "GHS"
};

// Initiate transaction
var response = payStack.Transactions.Initialize(request);
if (response.Status)
{
authorizationUrl = response.Data.AuthorizationUrl;

shouldRedirect = true;
StateHasChanged(); // Trigger re-render
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}

protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (shouldRedirect)
{
shouldRedirect = false; // Reset flag to prevent re-invoking
await JS.InvokeVoidAsync("open", authorizationUrl, "_blank");
}
}

private async Task GetUserIdAsync()
{
var authState = await _authStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
return user.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value;
}

private static int Generate() => new Random((int)DateTime.Now.Ticks).Next(100000000, 999999999);
}
Привет, ребята! Я пытаюсь открыть URL-адрес авторизации в новой вкладке браузера при нажатии кнопки «Разместить заказ». Мой код просто обновляет страницу, хотя он попадает в ProcessCheckout в режиме отладки. Обратите внимание, что это серверное приложение Blazor

Подробнее здесь: https://stackoverflow.com/questions/791 ... nt-app-url
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»