@(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)
{
이미 토스 결제 취소가 완료되었습니다. (@cancel.CancelAmount.ToString("N0") 원 — 요청자: @(cancel.CancelRequester ?? "-"), 사유: @(cancel.CancelReason ?? "-"))
}
else if (confirm.OrderStatus == PaymentStatus.Paid)
{
var isForcedCancel = confirm.ResponseCode != "SUCCESS";
if (isForcedCancel)
{
주의 — 토스 응답 코드가 [@(string.IsNullOrEmpty(confirm.ResponseCode) ? "응답 미수신" : confirm.ResponseCode)] 인 강제 환불입니다.
PaymentOrder.Status 는 Paid 이지만 TossConfirm 응답이 비정상입니다. 토스 상점관리자에서 실제 거래 상태를 사전 확인 후 진행하세요.
}
토스 결제 승인 후 전액 취소가 가능합니다. (취소 금액: @confirm.Amount.ToString("N0") 원)
취소 요청자는 주체를 구분하기 위해 사용합니다. 취소 사유는 토스 취소 API 의 cancelReason 으로 전송됩니다.
}
else if (confirm.OrderStatus == PaymentStatus.Cancelled)
{
이미 취소된 주문입니다. (PaymentOrder.Status = Cancelled)
}
else if (confirm.OrderStatus == PaymentStatus.Failed)
{
결제가 실패한 주문입니다. 환불할 금액이 없습니다. (PaymentOrder.Status = Failed)
}
else if (confirm.OrderStatus is PaymentStatus.Pending or PaymentStatus.WaitingDeposit or PaymentStatus.NeedsReconciliation)
{
결제가 아직 완료되지 않았습니다. (PaymentOrder.Status = @confirm.OrderStatus) — 입금 대기 / 대사 중인 거래는 취소할 수 없습니다.