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.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;

View File

@@ -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)
{

View File

@@ -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
{