| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using Application.Abstractions.Data;
- using Application.Abstractions.Messaging;
- using Microsoft.EntityFrameworkCore;
- namespace Application.Features.Admin.Payment.Toss.Confirm.Get;
- public sealed class Handler(IAppDbContext db) : IQueryHandler<Query, Response>
- {
- public async Task<Response> Handle(Query request, CancellationToken ct)
- {
- var confirm = await db.TossConfirm.AsNoTracking().Include(c => c.Member).Include(c => c.PaymentOrder).FirstOrDefaultAsync(c => c.ID == request.ID, ct) ?? throw new InvalidOperationException("토스 결제 내역을 찾을 수 없습니다.");
- var cancel = await db.TossCancel.AsNoTracking()
- .Where(c => c.PaymentOrderID == confirm.PaymentOrderID && c.ResponseCode == "SUCCESS")
- .OrderByDescending(c => c.ID)
- .Select(c => new Response.CancelData
- {
- ID = c.ID,
- CancelAmount = c.CancelAmount,
- CancelReason = c.CancelReason,
- CancelRequester = c.CancelRequester,
- Status = c.Status,
- TransactionKey = c.TransactionKey,
- CanceledAt = c.CanceledAt,
- CreatedAt = c.CreatedAt
- })
- .FirstOrDefaultAsync(ct);
- return new Response
- {
- Confirm = new Response.ConfirmData
- {
- ID = confirm.ID,
- MemberID = confirm.MemberID,
- MemberEmail = confirm.Member?.Email ?? string.Empty,
- MemberName = confirm.Member?.Name,
- PaymentKey = confirm.PaymentKey,
- OrderID = confirm.OrderID,
- Amount = confirm.Amount,
- MerchantID = confirm.PaymentOrder?.MerchantID ?? "TOSS",
- OrderStatus = confirm.PaymentOrder != null ? confirm.PaymentOrder.Status : default,
- OrderPaidAt = confirm.PaymentOrder?.PaidAt,
- OrderCancelledAt = confirm.PaymentOrder?.CancelledAt,
- OrderName = confirm.PaymentOrder?.OrderName,
- ResponseCode = confirm.ResponseCode,
- ResponseMessage = confirm.ResponseMessage,
- Status = confirm.Status,
- Method = confirm.Method,
- TotalAmount = confirm.TotalAmount,
- ApprovedAt = confirm.ApprovedAt,
- ReceiptUrl = confirm.ReceiptUrl,
- VirtualAccountNumber = confirm.PaymentOrder?.VirtualAccountNumber,
- VirtualAccountBank = confirm.PaymentOrder?.VirtualAccountBank,
- VirtualAccountHolder = confirm.PaymentOrder?.VirtualAccountHolder,
- VirtualAccountExpireAt = confirm.PaymentOrder?.VirtualAccountExpireAt,
- CreatedAt = confirm.CreatedAt,
- UpdatedAt = confirm.UpdatedAt
- },
- Cancel = cancel
- };
- }
- }
|