u
This commit is contained in:
@@ -6,6 +6,7 @@ using MudBlazor.Services;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using FrontOffice.BFF.Package.Protobuf.Protos.Package;
|
||||
using FrontOffice.BFF.Transaction.Protobuf.Protos.Transaction;
|
||||
using FrontOffice.BFF.User.Protobuf.Protos.User;
|
||||
using FrontOffice.BFF.UserAddress.Protobuf.Protos.UserAddress;
|
||||
using FrontOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
using FrontOffice.BFF.Package.Protobuf.Protos.Package;
|
||||
using FrontOffice.BFF.Transaction.Protobuf.Protos.Transaction;
|
||||
using FrontOffice.BFF.UserAddress.Protobuf.Protos.UserAddress;
|
||||
using FrontOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
|
||||
using FrontOffice.Main.Utilities;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using MudBlazor;
|
||||
using Severity = MudBlazor.Severity;
|
||||
@@ -11,6 +14,8 @@ public partial class Checkout
|
||||
{
|
||||
[Inject] private PackageContract.PackageContractClient PackageClient { get; set; } = default!;
|
||||
[Inject] private UserAddressContract.UserAddressContractClient UserAddressContract { get; set; } = default!;
|
||||
[Inject] private UserOrderContract.UserOrderContractClient UserOrderContract { get; set; } = default!;
|
||||
[Inject] private TransactionContract.TransactionContractClient TransactionContract { get; set; } = default!;
|
||||
|
||||
[Parameter] public long? PackageId { get; set; }
|
||||
|
||||
@@ -154,14 +159,35 @@ public partial class Checkout
|
||||
|
||||
try
|
||||
{
|
||||
// TODO: Implement payment processing with backend
|
||||
// This is a placeholder for payment integration
|
||||
await Task.Delay(2000); // Simulate payment processing
|
||||
// Step 1: Create payment request
|
||||
var paymentRequest = new PaymentRequestRequest
|
||||
{
|
||||
Amount = _finalPrice,
|
||||
CallbackUrl = $"{Navigation.BaseUri}checkout/callback",
|
||||
Description = $"خرید پکیج {_selectedPackage.Title}",
|
||||
Currency = CurrencyEnum.Irt,
|
||||
Type = TransactionTypeEnum.Real
|
||||
};
|
||||
|
||||
Snackbar.Add("پرداخت با موفقیت انجام شد!", Severity.Success);
|
||||
var paymentResponse = await TransactionContract.PaymentRequestAsync(paymentRequest);
|
||||
|
||||
// Navigate to success page or order details
|
||||
Navigation.NavigateTo("/order/success");
|
||||
if (string.IsNullOrEmpty(paymentResponse.PaymentGWUrl))
|
||||
{
|
||||
throw new Exception("آدرس درگاه پرداخت دریافت نشد.");
|
||||
}
|
||||
|
||||
// Step 2: Create user order
|
||||
var orderRequest = new CreateNewUserOrderRequest
|
||||
{
|
||||
Price = _finalPrice,
|
||||
PackageId = _selectedPackage.Id,
|
||||
PaymentStatus = false // Will be updated after payment verification
|
||||
};
|
||||
|
||||
var orderResponse = await UserOrderContract.CreateNewUserOrderAsync(orderRequest);
|
||||
|
||||
// Step 3: Redirect to payment gateway
|
||||
Navigation.NavigateTo(paymentResponse.PaymentGWUrl);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -150,14 +150,12 @@ public partial class PackageDetail : IDisposable
|
||||
|
||||
try
|
||||
{
|
||||
// TODO: Implement purchase logic
|
||||
await Task.Delay(2000); // Simulate API call
|
||||
|
||||
Snackbar.Add("پکیج با موفقیت خریداری شد!", Severity.Success);
|
||||
// Navigate to checkout page with package ID
|
||||
Navigation.NavigateTo($"{RouteConstants.Checkout.Index}/{_package.Id}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Snackbar.Add($"خطا در خرید پکیج: {ex.Message}", Severity.Error);
|
||||
Snackbar.Add($"خطا در انتقال به صفحه پرداخت: {ex.Message}", Severity.Error);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user