using FlatRender.IdentitySvc.Models.Requests; using FlatRender.IdentitySvc.Models.Responses; namespace FlatRender.IdentitySvc.Application.Services.Interfaces; public interface IPaymentService { Task> GetUserPaymentsAsync(Guid userId, int page, int pageSize); Task GetByIdAsync(Guid paymentId, Guid userId); // ── ZarinPal ──────────────────────────────────────────────────────────────── /// Calls ZarinPal request API and returns the zarinpal.com redirect URL. Task InitiateZarinPalAsync(Guid paymentId, Guid userId); Task HandleZarinPalCallbackAsync(string authority, string status); // ── SnapPay ────────────────────────────────────────────────────────────────── /// Calls SnapPay token API and returns the snappay.ir redirect URL. Task InitiateSnapPayAsync(Guid paymentId, Guid userId); /// Handles SnapPay callback query params (paymentToken, shapSnapStatus). Task HandleSnapPayCallbackAsync(string paymentToken, string shapStatus); // ── Tara ───────────────────────────────────────────────────────────────────── /// Calls Tara request API and returns the tara.ir redirect URL. Task InitiateTaraAsync(Guid paymentId, Guid userId); /// Handles Tara callback query params (token, status). Task HandleTaraCallbackAsync(string token, string status); // ── Stripe ─────────────────────────────────────────────────────────────────── Task HandleStripeWebhookAsync(string payload, string signature); // ── Refunds ─────────────────────────────────────────────────────────────────── Task IssueRefundAsync(Guid paymentId, long? amountMinor, string reason, string refundTo); }