diff --git a/src/api/openapi/.openapi-generator/FILES b/src/api/openapi/.openapi-generator/FILES index 682db3a4..8ed16123 100644 --- a/src/api/openapi/.openapi-generator/FILES +++ b/src/api/openapi/.openapi-generator/FILES @@ -344,6 +344,7 @@ docs/UpdateStudySpaceRequest.md docs/UploadProfileImageRequest.md docs/UserTransactionDetailResponse.md docs/UserTransactionListResponse.md +docs/VirtualAccountInfo.md docs/VoidResponseSchema.md git_push.sh index.ts @@ -613,4 +614,5 @@ models/update-study-space-request.ts models/upload-profile-image-request.ts models/user-transaction-detail-response.ts models/user-transaction-list-response.ts +models/virtual-account-info.ts models/void-response-schema.ts diff --git a/src/api/openapi/api/admin-payment-api.ts b/src/api/openapi/api/admin-payment-api.ts index 04ab65da..7c6487b1 100644 --- a/src/api/openapi/api/admin-payment-api.ts +++ b/src/api/openapi/api/admin-payment-api.ts @@ -78,7 +78,7 @@ export const AdminPaymentApiAxiosParamCreator = function (configuration?: Config }; }, /** - * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 + * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 * @summary 관리자 매출 관리 리스트 조회 (결제/환불 통합) * @param {PaymentSearchCondition} condition * @param {Pageable} pageable @@ -86,7 +86,7 @@ export const AdminPaymentApiAxiosParamCreator = function (configuration?: Config * @param {string} [endDate] 조회 종료일 (yyyy-MM-dd) * @param {string} [studyTitle] 스터디명 검색 (부분 일치) * @param {string} [paymentCode] 거래ID 검색 (부분 일치) - * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) + * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) * @param {number} [page] 페이지 번호 (0부터 시작) * @param {number} [size] 페이지 크기 * @param {*} [options] Override http request option. @@ -192,7 +192,7 @@ export const AdminPaymentApiFp = function(configuration?: Configuration) { return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 + * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 * @summary 관리자 매출 관리 리스트 조회 (결제/환불 통합) * @param {PaymentSearchCondition} condition * @param {Pageable} pageable @@ -200,7 +200,7 @@ export const AdminPaymentApiFp = function(configuration?: Configuration) { * @param {string} [endDate] 조회 종료일 (yyyy-MM-dd) * @param {string} [studyTitle] 스터디명 검색 (부분 일치) * @param {string} [paymentCode] 거래ID 검색 (부분 일치) - * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) + * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) * @param {number} [page] 페이지 번호 (0부터 시작) * @param {number} [size] 페이지 크기 * @param {*} [options] Override http request option. @@ -233,7 +233,7 @@ export const AdminPaymentApiFactory = function (configuration?: Configuration, b return localVarFp.forceCancelPayment(paymentId, reason, options).then((request) => request(axios, basePath)); }, /** - * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 + * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 * @summary 관리자 매출 관리 리스트 조회 (결제/환불 통합) * @param {PaymentSearchCondition} condition * @param {Pageable} pageable @@ -241,7 +241,7 @@ export const AdminPaymentApiFactory = function (configuration?: Configuration, b * @param {string} [endDate] 조회 종료일 (yyyy-MM-dd) * @param {string} [studyTitle] 스터디명 검색 (부분 일치) * @param {string} [paymentCode] 거래ID 검색 (부분 일치) - * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) + * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) * @param {number} [page] 페이지 번호 (0부터 시작) * @param {number} [size] 페이지 크기 * @param {*} [options] Override http request option. @@ -270,7 +270,7 @@ export class AdminPaymentApi extends BaseAPI { } /** - * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 + * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 * @summary 관리자 매출 관리 리스트 조회 (결제/환불 통합) * @param {PaymentSearchCondition} condition * @param {Pageable} pageable @@ -278,7 +278,7 @@ export class AdminPaymentApi extends BaseAPI { * @param {string} [endDate] 조회 종료일 (yyyy-MM-dd) * @param {string} [studyTitle] 스터디명 검색 (부분 일치) * @param {string} [paymentCode] 거래ID 검색 (부분 일치) - * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) + * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) * @param {number} [page] 페이지 번호 (0부터 시작) * @param {number} [size] 페이지 크기 * @param {*} [options] Override http request option. diff --git a/src/api/openapi/api/payment-user-api.ts b/src/api/openapi/api/payment-user-api.ts index c1fc85d3..c836a5a3 100644 --- a/src/api/openapi/api/payment-user-api.ts +++ b/src/api/openapi/api/payment-user-api.ts @@ -83,7 +83,7 @@ export const PaymentUserApiAxiosParamCreator = function (configuration?: Configu }; }, /** - * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. + * 작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 | * @summary Toss 결제 서버 Confirm * @param {TossPaymentConfirmRequest} tossPaymentConfirmRequest 토스 결제 서버 confirm 요청 * @param {*} [options] Override http request option. @@ -209,7 +209,7 @@ export const PaymentUserApiAxiosParamCreator = function (configuration?: Configu }; }, /** - * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 + * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 * @summary 마이페이지 결제 관리 상세 조회 (그룹스터디별 전체 히스토리) * @param {number} groupStudyId 그룹스터디 ID * @param {Pageable} pageable @@ -332,7 +332,7 @@ export const PaymentUserApiFp = function(configuration?: Configuration) { return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. + * 작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 | * @summary Toss 결제 서버 Confirm * @param {TossPaymentConfirmRequest} tossPaymentConfirmRequest 토스 결제 서버 confirm 요청 * @param {*} [options] Override http request option. @@ -365,7 +365,7 @@ export const PaymentUserApiFp = function(configuration?: Configuration) { return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 + * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 * @summary 마이페이지 결제 관리 상세 조회 (그룹스터디별 전체 히스토리) * @param {number} groupStudyId 그룹스터디 ID * @param {Pageable} pageable @@ -414,7 +414,7 @@ export const PaymentUserApiFactory = function (configuration?: Configuration, ba return localVarFp.cancelPayment(paymentId, options).then((request) => request(axios, basePath)); }, /** - * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. + * 작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 | * @summary Toss 결제 서버 Confirm * @param {TossPaymentConfirmRequest} tossPaymentConfirmRequest 토스 결제 서버 confirm 요청 * @param {*} [options] Override http request option. @@ -441,7 +441,7 @@ export const PaymentUserApiFactory = function (configuration?: Configuration, ba return localVarFp.getMyTransactions(condition, pageable, startDate, endDate, studyTitle, paymentCode, page, size, options).then((request) => request(axios, basePath)); }, /** - * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 + * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 * @summary 마이페이지 결제 관리 상세 조회 (그룹스터디별 전체 히스토리) * @param {number} groupStudyId 그룹스터디 ID * @param {Pageable} pageable @@ -483,7 +483,7 @@ export class PaymentUserApi extends BaseAPI { } /** - * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. + * 작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 | * @summary Toss 결제 서버 Confirm * @param {TossPaymentConfirmRequest} tossPaymentConfirmRequest 토스 결제 서버 confirm 요청 * @param {*} [options] Override http request option. @@ -512,7 +512,7 @@ export class PaymentUserApi extends BaseAPI { } /** - * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 + * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 * @summary 마이페이지 결제 관리 상세 조회 (그룹스터디별 전체 히스토리) * @param {number} groupStudyId 그룹스터디 ID * @param {Pageable} pageable diff --git a/src/api/openapi/api/toss-webhook-api.ts b/src/api/openapi/api/toss-webhook-api.ts index dfcb591d..51637ebf 100644 --- a/src/api/openapi/api/toss-webhook-api.ts +++ b/src/api/openapi/api/toss-webhook-api.ts @@ -22,8 +22,6 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj // @ts-ignore import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base'; // @ts-ignore -import type { BaseResponseVoid } from '../models'; -// @ts-ignore import type { TossWebhookPayload } from '../models'; /** * TossWebhookApi - axios parameter creator @@ -31,9 +29,9 @@ import type { TossWebhookPayload } from '../models'; export const TossWebhookApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * Toss Payments에서 발생한 이벤트를 수신합니다. secret 값으로 검증합니다. + * 작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다. * @summary Toss Webhook 수신 - * @param {TossWebhookPayload} tossWebhookPayload + * @param {TossWebhookPayload} tossWebhookPayload Toss Webhook 페이로드 * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -80,13 +78,13 @@ export const TossWebhookApiFp = function(configuration?: Configuration) { const localVarAxiosParamCreator = TossWebhookApiAxiosParamCreator(configuration) return { /** - * Toss Payments에서 발생한 이벤트를 수신합니다. secret 값으로 검증합니다. + * 작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다. * @summary Toss Webhook 수신 - * @param {TossWebhookPayload} tossWebhookPayload + * @param {TossWebhookPayload} tossWebhookPayload Toss Webhook 페이로드 * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async handleTossWebhook(tossWebhookPayload: TossWebhookPayload, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + async handleTossWebhook(tossWebhookPayload: TossWebhookPayload, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { const localVarAxiosArgs = await localVarAxiosParamCreator.handleTossWebhook(tossWebhookPayload, options); const localVarOperationServerIndex = configuration?.serverIndex ?? 0; const localVarOperationServerBasePath = operationServerMap['TossWebhookApi.handleTossWebhook']?.[localVarOperationServerIndex]?.url; @@ -102,13 +100,13 @@ export const TossWebhookApiFactory = function (configuration?: Configuration, ba const localVarFp = TossWebhookApiFp(configuration) return { /** - * Toss Payments에서 발생한 이벤트를 수신합니다. secret 값으로 검증합니다. + * 작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다. * @summary Toss Webhook 수신 - * @param {TossWebhookPayload} tossWebhookPayload + * @param {TossWebhookPayload} tossWebhookPayload Toss Webhook 페이로드 * @param {*} [options] Override http request option. * @throws {RequiredError} */ - handleTossWebhook(tossWebhookPayload: TossWebhookPayload, options?: RawAxiosRequestConfig): AxiosPromise { + handleTossWebhook(tossWebhookPayload: TossWebhookPayload, options?: RawAxiosRequestConfig): AxiosPromise { return localVarFp.handleTossWebhook(tossWebhookPayload, options).then((request) => request(axios, basePath)); }, }; @@ -119,9 +117,9 @@ export const TossWebhookApiFactory = function (configuration?: Configuration, ba */ export class TossWebhookApi extends BaseAPI { /** - * Toss Payments에서 발생한 이벤트를 수신합니다. secret 값으로 검증합니다. + * 작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다. * @summary Toss Webhook 수신 - * @param {TossWebhookPayload} tossWebhookPayload + * @param {TossWebhookPayload} tossWebhookPayload Toss Webhook 페이로드 * @param {*} [options] Override http request option. * @throws {RequiredError} */ diff --git a/src/api/openapi/docs/AdminPaymentApi.md b/src/api/openapi/docs/AdminPaymentApi.md index ad956b00..900acb30 100644 --- a/src/api/openapi/docs/AdminPaymentApi.md +++ b/src/api/openapi/docs/AdminPaymentApi.md @@ -69,7 +69,7 @@ const { status, data } = await apiInstance.forceCancelPayment( # **getTransactionsForAdmin** > PageAdminTransactionListResponseSchema getTransactionsForAdmin() -작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 +작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 ### Example @@ -90,7 +90,7 @@ let startDate: string; //조회 시작일 (yyyy-MM-dd) (optional) (default to un let endDate: string; //조회 종료일 (yyyy-MM-dd) (optional) (default to undefined) let studyTitle: string; //스터디명 검색 (부분 일치) (optional) (default to undefined) let paymentCode: string; //거래ID 검색 (부분 일치) (optional) (default to undefined) -let type: string; //거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) (optional) (default to undefined) +let type: string; //거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) (optional) (default to undefined) let page: number; //페이지 번호 (0부터 시작) (optional) (default to undefined) let size: number; //페이지 크기 (optional) (default to undefined) @@ -117,7 +117,7 @@ const { status, data } = await apiInstance.getTransactionsForAdmin( | **endDate** | [**string**] | 조회 종료일 (yyyy-MM-dd) | (optional) defaults to undefined| | **studyTitle** | [**string**] | 스터디명 검색 (부분 일치) | (optional) defaults to undefined| | **paymentCode** | [**string**] | 거래ID 검색 (부분 일치) | (optional) defaults to undefined| -| **type** | [**string**] | 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) | (optional) defaults to undefined| +| **type** | [**string**] | 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) | (optional) defaults to undefined| | **page** | [**number**] | 페이지 번호 (0부터 시작) | (optional) defaults to undefined| | **size** | [**number**] | 페이지 크기 | (optional) defaults to undefined| diff --git a/src/api/openapi/docs/GroupStudyMemberApi.md b/src/api/openapi/docs/GroupStudyMemberApi.md index 59df293a..d90cc337 100644 --- a/src/api/openapi/docs/GroupStudyMemberApi.md +++ b/src/api/openapi/docs/GroupStudyMemberApi.md @@ -352,6 +352,8 @@ const { status, data } = await apiInstance.updateGreeting( |**400** | 가입인사 내용 길이 유효성 검사 실패 | - | |**404** | 리소스 조회 실패 | - | |**500** | 그 외 | - | +|**401** | Bearer Token is invalid or no bearer token | - | +|**403** | You are authenticated but not allowed authorization | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -412,6 +414,8 @@ const { status, data } = await apiInstance.updateMemberDiscretion( |**404** | 리소스 조회 실패 | - | |**409** | 서버 상태와 요청 충돌 | - | |**500** | 그 외 | - | +|**401** | Bearer Token is invalid or no bearer token | - | +|**403** | You are authenticated but not allowed authorization | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) diff --git a/src/api/openapi/docs/PaymentUserApi.md b/src/api/openapi/docs/PaymentUserApi.md index 0949efe7..4c1d2638 100644 --- a/src/api/openapi/docs/PaymentUserApi.md +++ b/src/api/openapi/docs/PaymentUserApi.md @@ -68,7 +68,7 @@ const { status, data } = await apiInstance.cancelPayment( # **confirmTossPayment** > StudyPaymentDetailResponseSchema confirmTossPayment(tossPaymentConfirmRequest) -작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. +작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 | ### Example @@ -201,7 +201,7 @@ const { status, data } = await apiInstance.getMyTransactions( # **getMyTransactionsByGroupStudy** > PageUserTransactionDetailResponseSchema getMyTransactionsByGroupStudy() -작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 +작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수 ### Example diff --git a/src/api/openapi/docs/StudyPaymentDetailResponse.md b/src/api/openapi/docs/StudyPaymentDetailResponse.md index cb86439d..3ae640f5 100644 --- a/src/api/openapi/docs/StudyPaymentDetailResponse.md +++ b/src/api/openapi/docs/StudyPaymentDetailResponse.md @@ -21,6 +21,7 @@ Name | Type | Description | Notes **tossOrderId** | **string** | | [optional] [default to undefined] **tossPaymentKey** | **string** | | [optional] [default to undefined] **receiptUrl** | **string** | | [optional] [default to undefined] +**virtualAccount** | [**VirtualAccountInfo**](VirtualAccountInfo.md) | | [optional] [default to undefined] **createdAt** | **string** | | [optional] [default to undefined] **paidAt** | **string** | | [optional] [default to undefined] **canceledAt** | **string** | | [optional] [default to undefined] @@ -48,6 +49,7 @@ const instance: StudyPaymentDetailResponse = { tossOrderId, tossPaymentKey, receiptUrl, + virtualAccount, createdAt, paidAt, canceledAt, diff --git a/src/api/openapi/docs/TossWebhookApi.md b/src/api/openapi/docs/TossWebhookApi.md index 8e409c4a..8a8f949a 100644 --- a/src/api/openapi/docs/TossWebhookApi.md +++ b/src/api/openapi/docs/TossWebhookApi.md @@ -7,9 +7,9 @@ All URIs are relative to *https://test-api.zeroone.it.kr* |[**handleTossWebhook**](#handletosswebhook) | **POST** /api/v1/webhooks/toss | Toss Webhook 수신| # **handleTossWebhook** -> BaseResponseVoid handleTossWebhook(tossWebhookPayload) +> handleTossWebhook(tossWebhookPayload) -Toss Payments에서 발생한 이벤트를 수신합니다. secret 값으로 검증합니다. +작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다. ### Example @@ -23,7 +23,7 @@ import { const configuration = new Configuration(); const apiInstance = new TossWebhookApi(configuration); -let tossWebhookPayload: TossWebhookPayload; // +let tossWebhookPayload: TossWebhookPayload; //Toss Webhook 페이로드 const { status, data } = await apiInstance.handleTossWebhook( tossWebhookPayload @@ -34,12 +34,12 @@ const { status, data } = await apiInstance.handleTossWebhook( |Name | Type | Description | Notes| |------------- | ------------- | ------------- | -------------| -| **tossWebhookPayload** | **TossWebhookPayload**| | | +| **tossWebhookPayload** | **TossWebhookPayload**| Toss Webhook 페이로드 | | ### Return type -**BaseResponseVoid** +void (empty response body) ### Authorization @@ -48,13 +48,13 @@ const { status, data } = await apiInstance.handleTossWebhook( ### HTTP request headers - **Content-Type**: application/json - - **Accept**: */* + - **Accept**: application/json ### HTTP response details | Status code | Description | Response headers | |-------------|-------------|------------------| -|**200** | OK | - | +|**200** | Webhook 수신 성공 | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) diff --git a/src/api/openapi/docs/VirtualAccountInfo.md b/src/api/openapi/docs/VirtualAccountInfo.md new file mode 100644 index 00000000..1ed41f1b --- /dev/null +++ b/src/api/openapi/docs/VirtualAccountInfo.md @@ -0,0 +1,30 @@ +# VirtualAccountInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**accountNumber** | **string** | | [optional] [default to undefined] +**bankCode** | **string** | | [optional] [default to undefined] +**bankName** | **string** | | [optional] [default to undefined] +**customerName** | **string** | | [optional] [default to undefined] +**dueDate** | **string** | | [optional] [default to undefined] +**expired** | **boolean** | | [optional] [default to undefined] + +## Example + +```typescript +import { VirtualAccountInfo } from './api'; + +const instance: VirtualAccountInfo = { + accountNumber, + bankCode, + bankName, + customerName, + dueDate, + expired, +}; +``` + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/src/api/openapi/models/admin-transaction-list-response.ts b/src/api/openapi/models/admin-transaction-list-response.ts index 3d8165ec..165efbf9 100644 --- a/src/api/openapi/models/admin-transaction-list-response.ts +++ b/src/api/openapi/models/admin-transaction-list-response.ts @@ -44,6 +44,7 @@ export const AdminTransactionListResponseGroupStudyStatusEnum = { export type AdminTransactionListResponseGroupStudyStatusEnum = typeof AdminTransactionListResponseGroupStudyStatusEnum[keyof typeof AdminTransactionListResponseGroupStudyStatusEnum]; export const AdminTransactionListResponsePaymentHistoryTypeEnum = { PaymentRequested: 'PAYMENT_REQUESTED', + PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT', PaymentSuccess: 'PAYMENT_SUCCESS', PaymentFailed: 'PAYMENT_FAILED', PaymentCanceled: 'PAYMENT_CANCELED', diff --git a/src/api/openapi/models/index.ts b/src/api/openapi/models/index.ts index 9c17e4e2..4f090dde 100644 --- a/src/api/openapi/models/index.ts +++ b/src/api/openapi/models/index.ts @@ -263,4 +263,5 @@ export * from './update-study-space-request'; export * from './upload-profile-image-request'; export * from './user-transaction-detail-response'; export * from './user-transaction-list-response'; +export * from './virtual-account-info'; export * from './void-response-schema'; diff --git a/src/api/openapi/models/member-notification-response.ts b/src/api/openapi/models/member-notification-response.ts index 75c3f772..0cd790d8 100644 --- a/src/api/openapi/models/member-notification-response.ts +++ b/src/api/openapi/models/member-notification-response.ts @@ -27,6 +27,7 @@ export interface MemberNotificationResponse { export const MemberNotificationResponseTopicTypeEnum = { OneOnOneStudy: 'ONE_ON_ONE_STUDY', GroupStudy: 'GROUP_STUDY', + Notice: 'NOTICE', Comment: 'COMMENT', Payment: 'PAYMENT', Etc: 'ETC' diff --git a/src/api/openapi/models/payment-history-response.ts b/src/api/openapi/models/payment-history-response.ts index c9122806..ab318435 100644 --- a/src/api/openapi/models/payment-history-response.ts +++ b/src/api/openapi/models/payment-history-response.ts @@ -26,6 +26,7 @@ export interface PaymentHistoryResponse { export const PaymentHistoryResponseTypeEnum = { PaymentRequested: 'PAYMENT_REQUESTED', + PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT', PaymentSuccess: 'PAYMENT_SUCCESS', PaymentFailed: 'PAYMENT_FAILED', PaymentCanceled: 'PAYMENT_CANCELED', diff --git a/src/api/openapi/models/payment-search-condition.ts b/src/api/openapi/models/payment-search-condition.ts index 29391408..e517d839 100644 --- a/src/api/openapi/models/payment-search-condition.ts +++ b/src/api/openapi/models/payment-search-condition.ts @@ -24,6 +24,7 @@ export interface PaymentSearchCondition { export const PaymentSearchConditionTypeEnum = { PaymentRequested: 'PAYMENT_REQUESTED', + PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT', PaymentSuccess: 'PAYMENT_SUCCESS', PaymentFailed: 'PAYMENT_FAILED', PaymentCanceled: 'PAYMENT_CANCELED', diff --git a/src/api/openapi/models/study-payment-detail-response.ts b/src/api/openapi/models/study-payment-detail-response.ts index e86d0d17..05247ad4 100644 --- a/src/api/openapi/models/study-payment-detail-response.ts +++ b/src/api/openapi/models/study-payment-detail-response.ts @@ -16,6 +16,9 @@ // May contain unused imports in some cases // @ts-ignore import type { PaymentHistoryResponse } from './payment-history-response'; +// May contain unused imports in some cases +// @ts-ignore +import type { VirtualAccountInfo } from './virtual-account-info'; export interface StudyPaymentDetailResponse { 'paymentId'?: number; @@ -34,6 +37,7 @@ export interface StudyPaymentDetailResponse { 'tossOrderId'?: string; 'tossPaymentKey'?: string; 'receiptUrl'?: string; + 'virtualAccount'?: VirtualAccountInfo; 'createdAt'?: string; 'paidAt'?: string; 'canceledAt'?: string; @@ -43,6 +47,7 @@ export interface StudyPaymentDetailResponse { export const StudyPaymentDetailResponseStatusEnum = { Requested: 'REQUESTED', Pending: 'PENDING', + WaitingForDeposit: 'WAITING_FOR_DEPOSIT', Success: 'SUCCESS', Failed: 'FAILED', Canceled: 'CANCELED' diff --git a/src/api/openapi/models/user-transaction-detail-response.ts b/src/api/openapi/models/user-transaction-detail-response.ts index 84c01978..40c4c9dd 100644 --- a/src/api/openapi/models/user-transaction-detail-response.ts +++ b/src/api/openapi/models/user-transaction-detail-response.ts @@ -23,6 +23,7 @@ export interface UserTransactionDetailResponse { export const UserTransactionDetailResponseTransactionTypeEnum = { PaymentRequested: 'PAYMENT_REQUESTED', + PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT', PaymentSuccess: 'PAYMENT_SUCCESS', PaymentFailed: 'PAYMENT_FAILED', PaymentCanceled: 'PAYMENT_CANCELED', diff --git a/src/api/openapi/models/user-transaction-list-response.ts b/src/api/openapi/models/user-transaction-list-response.ts index a43f4122..8e320629 100644 --- a/src/api/openapi/models/user-transaction-list-response.ts +++ b/src/api/openapi/models/user-transaction-list-response.ts @@ -32,6 +32,7 @@ export interface UserTransactionListResponse { export const UserTransactionListResponseLatestTransactionTypeEnum = { PaymentRequested: 'PAYMENT_REQUESTED', + PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT', PaymentSuccess: 'PAYMENT_SUCCESS', PaymentFailed: 'PAYMENT_FAILED', PaymentCanceled: 'PAYMENT_CANCELED', diff --git a/src/api/openapi/models/virtual-account-info.ts b/src/api/openapi/models/virtual-account-info.ts new file mode 100644 index 00000000..3ed4e48c --- /dev/null +++ b/src/api/openapi/models/virtual-account-info.ts @@ -0,0 +1,25 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Zeroone API v1 + * v1 + * + * The version of the OpenAPI document: v1 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + + +export interface VirtualAccountInfo { + 'accountNumber'?: string; + 'bankCode'?: string; + 'bankName'?: string; + 'customerName'?: string; + 'dueDate'?: string; + 'expired'?: boolean; +} +