ITossPaymentService.cs 1.4 KB

123456789101112131415161718192021222324
  1. namespace Application.Abstractions.Payment;
  2. /// <summary>
  3. /// 토스페이먼츠 PG 결제 서비스 (V2 — api.tosspayments.com)
  4. /// - Config DB(External.TossPayMode)에서 테스트/라이브 자동 분기
  5. /// - Basic Auth 헤더 생성 (secretKey + ":" → Base64, BOM 없이)
  6. /// - 승인/취소/조회 API 호출. POST 에는 Idempotency-Key(UUID v4) 부여.
  7. /// - 통신 불명 예외(HttpRequestException/TaskCanceledException)는 삼키지 않고 전파 —
  8. /// 호출측이 NeedsReconciliation 분기(승인 통신 실패 = 결제 실패 단정 금지). (Phase 1.5)
  9. /// </summary>
  10. public interface ITossPaymentService
  11. {
  12. /// <summary>프론트엔드에 전달할 ClientKey</summary>
  13. Task<TossClientConfig> GetClientConfigAsync(CancellationToken ct);
  14. /// <summary>결제 승인 (successUrl 콜백 후 서버에서 호출) — POST /v1/payments/confirm</summary>
  15. Task<TossPaymentResult> ConfirmAsync(string paymentKey, string orderID, int amount, CancellationToken ct);
  16. /// <summary>결제 취소 — POST /v1/payments/{paymentKey}/cancel (cancelAmount null = 전액 취소)</summary>
  17. Task<TossPaymentResult> CancelAsync(string paymentKey, string cancelReason, int? cancelAmount, CancellationToken ct);
  18. /// <summary>결제 조회 — GET /v1/payments/{paymentKey} (웹훅/대사 재확인용)</summary>
  19. Task<TossPaymentResult> GetPaymentAsync(string paymentKey, CancellationToken ct);
  20. }