This commit is contained in:
MeysamMoghaddam
2025-10-13 13:30:58 +03:30
parent 361f9268a3
commit 30f6fa0340
3 changed files with 36 additions and 11 deletions

View File

@@ -6,6 +6,7 @@ using MudBlazor.Services;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using FrontOffice.BFF.Package.Protobuf.Protos.Package; using FrontOffice.BFF.Package.Protobuf.Protos.Package;
using FrontOffice.BFF.Transaction.Protobuf.Protos.Transaction;
using FrontOffice.BFF.User.Protobuf.Protos.User; using FrontOffice.BFF.User.Protobuf.Protos.User;
using FrontOffice.BFF.UserAddress.Protobuf.Protos.UserAddress; using FrontOffice.BFF.UserAddress.Protobuf.Protos.UserAddress;
using FrontOffice.BFF.UserOrder.Protobuf.Protos.UserOrder; using FrontOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;

View File

@@ -1,6 +1,9 @@
using FrontOffice.BFF.Package.Protobuf.Protos.Package; using FrontOffice.BFF.Package.Protobuf.Protos.Package;
using FrontOffice.BFF.Transaction.Protobuf.Protos.Transaction;
using FrontOffice.BFF.UserAddress.Protobuf.Protos.UserAddress; using FrontOffice.BFF.UserAddress.Protobuf.Protos.UserAddress;
using FrontOffice.BFF.UserOrder.Protobuf.Protos.UserOrder;
using FrontOffice.Main.Utilities; using FrontOffice.Main.Utilities;
using Google.Protobuf.WellKnownTypes;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using MudBlazor; using MudBlazor;
using Severity = MudBlazor.Severity; using Severity = MudBlazor.Severity;
@@ -11,6 +14,8 @@ public partial class Checkout
{ {
[Inject] private PackageContract.PackageContractClient PackageClient { get; set; } = default!; [Inject] private PackageContract.PackageContractClient PackageClient { get; set; } = default!;
[Inject] private UserAddressContract.UserAddressContractClient UserAddressContract { 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; } [Parameter] public long? PackageId { get; set; }
@@ -154,14 +159,35 @@ public partial class Checkout
try try
{ {
// TODO: Implement payment processing with backend // Step 1: Create payment request
// This is a placeholder for payment integration var paymentRequest = new PaymentRequestRequest
await Task.Delay(2000); // Simulate payment processing {
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 if (string.IsNullOrEmpty(paymentResponse.PaymentGWUrl))
Navigation.NavigateTo("/order/success"); {
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) catch (Exception ex)
{ {

View File

@@ -150,14 +150,12 @@ public partial class PackageDetail : IDisposable
try try
{ {
// TODO: Implement purchase logic // Navigate to checkout page with package ID
await Task.Delay(2000); // Simulate API call Navigation.NavigateTo($"{RouteConstants.Checkout.Index}/{_package.Id}");
Snackbar.Add("پکیج با موفقیت خریداری شد!", Severity.Success);
} }
catch (Exception ex) catch (Exception ex)
{ {
Snackbar.Add($"خطا در خرید پکیج: {ex.Message}", Severity.Error); Snackbar.Add($"خطا در انتقال به صفحه پرداخت: {ex.Message}", Severity.Error);
} }
finally finally
{ {