/** * User Payment API endpoints * Handles payment operations for regular users */ import { apiClient } from './client' import type { PaymentConfig, SubscriptionPlan, PaymentChannel, MethodLimitsResponse, CheckoutInfoResponse, CreateOrderRequest, CreateOrderResult, PaymentOrder } from '@/types/payment' import type { BasePaginationResponse } from '@/types' export const paymentAPI = { /** Get payment configuration (enabled types, limits, etc.) */ getConfig() { return apiClient.get('/payment/config') }, /** Get available subscription plans */ getPlans() { return apiClient.get('/payment/plans') }, /** Get available payment channels */ getChannels() { return apiClient.get('/payment/channels') }, /** Get all checkout page data in a single call */ getCheckoutInfo() { return apiClient.get('/payment/checkout-info') }, /** Get payment method limits and fee rates */ getLimits() { return apiClient.get('/payment/limits') }, /** Create a new payment order */ createOrder(data: CreateOrderRequest) { return apiClient.post('/payment/orders', data) }, /** Get current user's orders */ getMyOrders(params?: { page?: number; page_size?: number; status?: string }) { return apiClient.get>('/payment/orders/my', { params }) }, /** Get a specific order by ID */ getOrder(id: number) { return apiClient.get(`/payment/orders/${id}`) }, /** Cancel a pending order */ cancelOrder(id: number) { return apiClient.post(`/payment/orders/${id}/cancel`) }, /** Verify order payment status with upstream provider */ verifyOrder(outTradeNo: string) { return apiClient.post('/payment/orders/verify', { out_trade_no: outTradeNo }) }, /** Verify order payment status without auth (public endpoint for result page) */ verifyOrderPublic(outTradeNo: string) { return apiClient.post('/payment/public/orders/verify', { out_trade_no: outTradeNo }) }, /** Request a refund for a completed order */ requestRefund(id: number, data: { reason: string }) { return apiClient.post(`/payment/orders/${id}/refund-request`, data) } }