@page "{id:int}" @model Admin.Pages.Payments.Toss.Confirm.ViewModel @using Domain.Entities.Payments.ValueObject @using SharedKernel.Extensions @{ ViewData["Title"] = "토스 결제 상세"; string StatusName(string? s) => s switch { "DONE" => "결제 완료", "WAITING_FOR_DEPOSIT" => "입금 대기", "CANCELED" => "취소", "PARTIAL_CANCELED" => "부분 취소", "ABORTED" => "승인 실패", "EXPIRED" => "만료", null => "-", _ => s }; }

@ViewData["Title"]


@if (Model.Data is null) {
결제 내역을 불러올 수 없습니다.
} else { var confirm = Model.Data.Confirm; var cancel = Model.Data.Cancel; var isVAccount = confirm.Status == "WAITING_FOR_DEPOSIT" || !string.IsNullOrEmpty(confirm.VirtualAccountNumber);
토스 결제 요청
@confirm.ID
[@confirm.MemberID] @(confirm.MemberName ?? "-") / @confirm.MemberEmail
@confirm.PaymentKey
@confirm.OrderID
@confirm.Amount.ToString("N0") 원
@confirm.MerchantID
@(string.IsNullOrEmpty(confirm.OrderName) ? "-" : confirm.OrderName)

토스 결제 응답
@if (string.IsNullOrEmpty(confirm.ResponseCode)) {
토스 승인 요청 후 최종 응답이 기록되지 않았습니다. (통신 불명 — 자동 대사 대상)
} else { @if (confirm.ResponseCode != "SUCCESS") {
[@confirm.ResponseCode] @confirm.ResponseMessage
}
@StatusName(confirm.Status) (@(confirm.Status ?? "-"))
@(confirm.Method ?? "-")
@(confirm.TotalAmount.HasValue ? confirm.TotalAmount.Value.ToString("N0") + " 원" : "-")
@(confirm.ApprovedAt is not null ? confirm.ApprovedAt.GetDateAt() : "-")
@if (string.IsNullOrEmpty(confirm.ReceiptUrl)) { - } else { 영수증 보기 }
@if (isVAccount) {
@(confirm.VirtualAccountNumber ?? "-")
@(confirm.VirtualAccountBank ?? "-")
@(confirm.VirtualAccountHolder ?? "-")
@(confirm.VirtualAccountExpireAt is not null ? confirm.VirtualAccountExpireAt.GetDateAt() : "-")
} @if (confirm.UpdatedAt is not null) {
@confirm.UpdatedAt.GetDateAt()
}
@confirm.CreatedAt.GetDateAt()
}
토스 결제 취소
@if (cancel is not null) { } else if (confirm.OrderStatus == PaymentStatus.Paid) { var isForcedCancel = confirm.ResponseCode != "SUCCESS"; if (isForcedCancel) { }
@Html.AntiForgeryToken()
} else if (confirm.OrderStatus == PaymentStatus.Cancelled) { } else if (confirm.OrderStatus == PaymentStatus.Failed) { } else if (confirm.OrderStatus is PaymentStatus.Pending or PaymentStatus.WaitingDeposit or PaymentStatus.NeedsReconciliation) { } else { }



}
@section Scripts { }