generated from pricelees/issue-pr-template
[#50] Tosspay API Mocking 서버 구현 #51
@ -0,0 +1,8 @@
|
|||||||
|
package com.sangdol.tosspaymock.exception
|
||||||
|
|
||||||
|
import com.sangdol.tosspaymock.exception.code.TosspayErrorCode
|
||||||
|
|
||||||
|
class TosspayException(
|
||||||
|
val errorCode: TosspayErrorCode,
|
||||||
|
override val message: String = errorCode.message
|
||||||
|
) : RuntimeException(message)
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
package com.sangdol.tosspaymock.exception.code
|
||||||
|
|
||||||
|
import com.sangdol.common.types.web.HttpStatus
|
||||||
|
|
||||||
|
enum class TosspayCancelErrorCode(
|
||||||
|
override val httpStatus: HttpStatus,
|
||||||
|
override val errorCode: String,
|
||||||
|
override val message: String
|
||||||
|
) : TosspayErrorCode {
|
||||||
|
ALREADY_CANCELED_PAYMENT(HttpStatus.BAD_REQUEST, "CO001", "이미 취소된 결제 입니다."),
|
||||||
|
INVALID_REFUND_ACCOUNT_INFO(HttpStatus.BAD_REQUEST, "CO002", "환불 계좌번호와 예금주명이 일치하지 않습니다."),
|
||||||
|
EXCEED_CANCEL_AMOUNT_DISCOUNT_AMOUNT(HttpStatus.BAD_REQUEST, "CO003", "즉시할인금액보다 적은 금액은 부분취소가 불가능합니다."),
|
||||||
|
INVALID_REQUEST(HttpStatus.BAD_REQUEST, "CO004", "잘못된 요청입니다."),
|
||||||
|
INVALID_REFUND_ACCOUNT_NUMBER(HttpStatus.BAD_REQUEST, "CO005", "잘못된 환불 계좌번호입니다."),
|
||||||
|
INVALID_BANK(HttpStatus.BAD_REQUEST, "CO006", "유효하지 않은 은행입니다."),
|
||||||
|
NOT_MATCHES_REFUNDABLE_AMOUNT(HttpStatus.BAD_REQUEST, "CO007", "잔액 결과가 일치하지 않습니다."),
|
||||||
|
PROVIDER_ERROR(HttpStatus.BAD_REQUEST, "CO008", "일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요."),
|
||||||
|
REFUND_REJECTED(HttpStatus.BAD_REQUEST, "CO009", "환불이 거절됐습니다. 결제사에 문의 부탁드립니다."),
|
||||||
|
ALREADY_REFUND_PAYMENT(HttpStatus.BAD_REQUEST, "CO010", "이미 환불된 결제입니다."),
|
||||||
|
FORBIDDEN_BANK_REFUND_REQUEST(HttpStatus.BAD_REQUEST, "CO011", "고객 계좌가 입금이 되지 않는 상태입니다."),
|
||||||
|
UNAUTHORIZED_KEY(HttpStatus.UNAUTHORIZED, "CO012", "인증되지 않은 시크릿 키 혹은 클라이언트 키 입니다."),
|
||||||
|
NOT_CANCELABLE_AMOUNT(HttpStatus.FORBIDDEN, "CO013", "취소 할 수 없는 금액 입니다."),
|
||||||
|
FORBIDDEN_CONSECUTIVE_REQUEST(HttpStatus.FORBIDDEN, "CO014", "반복적인 요청은 허용되지 않습니다. 잠시 후 다시 시도해주세요."),
|
||||||
|
FORBIDDEN_REQUEST(HttpStatus.FORBIDDEN, "CO015", "허용되지 않은 요청입니다."),
|
||||||
|
NOT_CANCELABLE_PAYMENT(HttpStatus.FORBIDDEN, "CO016", "취소 할 수 없는 결제 입니다."),
|
||||||
|
EXCEED_MAX_REFUND_DUE(HttpStatus.FORBIDDEN, "CO017", "환불 가능한 기간이 지났습니다."),
|
||||||
|
NOT_ALLOWED_PARTIAL_REFUND_WAITING_DEPOSIT(HttpStatus.FORBIDDEN, "CO018", "입금 대기중인 결제는 부분 환불이 불가합니다."),
|
||||||
|
NOT_ALLOWED_PARTIAL_REFUND(HttpStatus.FORBIDDEN, "CO019", "에스크로 주문, 현금 카드 결제일 때는 부분 환불이 불가합니다. 이외 다른 결제 수단에서 부분 취소가 되지 않을 때는 토스페이먼츠에 문의해 주세요."),
|
||||||
|
NOT_AVAILABLE_BANK(HttpStatus.FORBIDDEN, "CO020", "은행 서비스 시간이 아닙니다."),
|
||||||
|
INCORRECT_BASIC_AUTH_FORMAT(HttpStatus.FORBIDDEN, "CO021", "잘못된 요청입니다. ':' 를 포함해 인코딩해주세요."),
|
||||||
|
NOT_CANCELABLE_PAYMENT_FOR_DORMANT_USER(HttpStatus.FORBIDDEN, "CO022", "휴면 처리된 회원의 결제는 취소할 수 없습니다."),
|
||||||
|
NOT_FOUND_PAYMENT(HttpStatus.NOT_FOUND, "CO023", "존재하지 않는 결제 정보 입니다."),
|
||||||
|
FAILED_INTERNAL_SYSTEM_PROCESSING(HttpStatus.INTERNAL_SERVER_ERROR, "CO024", "내부 시스템 처리 작업이 실패했습니다. 잠시 후 다시 시도해주세요."),
|
||||||
|
FAILED_REFUND_PROCESS(HttpStatus.INTERNAL_SERVER_ERROR, "CO025", "은행 응답시간 지연이나 일시적인 오류로 환불요청에 실패했습니다."),
|
||||||
|
FAILED_METHOD_HANDLING_CANCEL(HttpStatus.INTERNAL_SERVER_ERROR, "CO026", "취소 중 결제 시 사용한 결제 수단 처리과정에서 일시적인 오류가 발생했습니다."),
|
||||||
|
FAILED_PARTIAL_REFUND(HttpStatus.INTERNAL_SERVER_ERROR, "CO027", "은행 점검, 해약 계좌 등의 사유로 부분 환불이 실패했습니다."),
|
||||||
|
COMMON_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "CO028", "일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요."),
|
||||||
|
FAILED_PAYMENT_INTERNAL_SYSTEM_PROCESSING(HttpStatus.INTERNAL_SERVER_ERROR, "CO029", "결제가 완료되지 않았어요. 다시 시도해주세요.");
|
||||||
|
}
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
package com.sangdol.tosspaymock.exception.code
|
||||||
|
|
||||||
|
import com.sangdol.common.types.web.HttpStatus
|
||||||
|
|
||||||
|
enum class TosspayConfirmErrorCode(
|
||||||
|
override val httpStatus: HttpStatus,
|
||||||
|
override val errorCode: String,
|
||||||
|
override val message: String,
|
||||||
|
) : TosspayErrorCode {
|
||||||
|
ALREADY_PROCESSED_PAYMENT(HttpStatus.BAD_REQUEST, "CO001", "이미 처리된 결제 입니다."),
|
||||||
|
PROVIDER_ERROR(HttpStatus.BAD_REQUEST, "CO002", "일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요."),
|
||||||
|
EXCEED_MAX_CARD_INSTALLMENT_PLAN(HttpStatus.BAD_REQUEST, "CO003", "설정 가능한 최대 할부 개월 수를 초과했습니다."),
|
||||||
|
INVALID_REQUEST(HttpStatus.BAD_REQUEST, "CO004", "잘못된 요청입니다."),
|
||||||
|
NOT_ALLOWED_POINT_USE(HttpStatus.BAD_REQUEST, "CO005", "포인트 사용이 불가한 카드로 카드 포인트 결제에 실패했습니다."),
|
||||||
|
INVALID_API_KEY(HttpStatus.BAD_REQUEST, "CO006", "잘못된 시크릿키 연동 정보 입니다."),
|
||||||
|
INVALID_REJECT_CARD(HttpStatus.BAD_REQUEST, "CO007", "카드 사용이 거절되었습니다. 카드사 문의가 필요합니다."),
|
||||||
|
BELOW_MINIMUM_AMOUNT(HttpStatus.BAD_REQUEST, "CO008", "신용카드는 결제금액이 100원 이상, 계좌는 200원이상부터 결제가 가능합니다."),
|
||||||
|
INVALID_CARD_EXPIRATION(HttpStatus.BAD_REQUEST, "CO009", "카드 정보를 다시 확인해주세요. (유효기간)"),
|
||||||
|
INVALID_STOPPED_CARD(HttpStatus.BAD_REQUEST, "CO010", "정지된 카드 입니다."),
|
||||||
|
EXCEED_MAX_DAILY_PAYMENT_COUNT(HttpStatus.BAD_REQUEST, "CO011", "하루 결제 가능 횟수를 초과했습니다."),
|
||||||
|
NOT_SUPPORTED_INSTALLMENT_PLAN_CARD_OR_MERCHANT(HttpStatus.BAD_REQUEST, "CO012", "할부가 지원되지 않는 카드 또는 가맹점 입니다."),
|
||||||
|
INVALID_CARD_INSTALLMENT_PLAN(HttpStatus.BAD_REQUEST, "CO013", "할부 개월 정보가 잘못되었습니다."),
|
||||||
|
NOT_SUPPORTED_MONTHLY_INSTALLMENT_PLAN(HttpStatus.BAD_REQUEST, "CO014", "할부가 지원되지 않는 카드입니다."),
|
||||||
|
EXCEED_MAX_PAYMENT_AMOUNT(HttpStatus.BAD_REQUEST, "CO015", "하루 결제 가능 금액을 초과했습니다."),
|
||||||
|
NOT_FOUND_TERMINAL_ID(HttpStatus.BAD_REQUEST, "CO016", "단말기번호(Terminal Id)가 없습니다. 토스페이먼츠로 문의 바랍니다."),
|
||||||
|
INVALID_AUTHORIZE_AUTH(HttpStatus.BAD_REQUEST, "CO017", "유효하지 않은 인증 방식입니다."),
|
||||||
|
INVALID_CARD_LOST_OR_STOLEN(HttpStatus.BAD_REQUEST, "CO018", "분실 혹은 도난 카드입니다."),
|
||||||
|
RESTRICTED_TRANSFER_ACCOUNT(HttpStatus.BAD_REQUEST, "CO019", "계좌는 등록 후 12시간 뒤부터 결제할 수 있습니다. 관련 정책은 해당 은행으로 문의해주세요."),
|
||||||
|
INVALID_CARD_NUMBER(HttpStatus.BAD_REQUEST, "CO020", "카드번호를 다시 확인해주세요."),
|
||||||
|
INVALID_UNREGISTERED_SUBMALL(HttpStatus.BAD_REQUEST, "CO021", "등록되지 않은 서브몰입니다. 서브몰이 없는 가맹점이라면 안심클릭이나 ISP 결제가 필요합니다."),
|
||||||
|
NOT_REGISTERED_BUSINESS(HttpStatus.BAD_REQUEST, "CO022", "등록되지 않은 사업자 번호입니다."),
|
||||||
|
EXCEED_MAX_ONE_DAY_WITHDRAW_AMOUNT(HttpStatus.BAD_REQUEST, "CO023", "1일 출금 한도를 초과했습니다."),
|
||||||
|
EXCEED_MAX_ONE_TIME_WITHDRAW_AMOUNT(HttpStatus.BAD_REQUEST, "CO024", "1회 출금 한도를 초과했습니다."),
|
||||||
|
CARD_PROCESSING_ERROR(HttpStatus.BAD_REQUEST, "CO025", "카드사에서 오류가 발생했습니다."),
|
||||||
|
EXCEED_MAX_AMOUNT(HttpStatus.BAD_REQUEST, "CO026", "거래금액 한도를 초과했습니다."),
|
||||||
|
INVALID_ACCOUNT_INFO_RE_REGISTER(HttpStatus.BAD_REQUEST, "CO027", "유효하지 않은 계좌입니다. 계좌 재등록 후 시도해주세요."),
|
||||||
|
NOT_AVAILABLE_PAYMENT(HttpStatus.BAD_REQUEST, "CO028", "결제가 불가능한 시간대입니다."),
|
||||||
|
UNAPPROVED_ORDER_ID(HttpStatus.BAD_REQUEST, "CO029", "아직 승인되지 않은 주문번호입니다."),
|
||||||
|
EXCEED_MAX_MONTHLY_PAYMENT_AMOUNT(HttpStatus.BAD_REQUEST, "CO030", "당월 결제 가능금액인 1,000,000원을 초과 하셨습니다."),
|
||||||
|
UNAUTHORIZED_KEY(HttpStatus.UNAUTHORIZED, "CO031", "인증되지 않은 시크릿 키 혹은 클라이언트 키 입니다."),
|
||||||
|
REJECT_ACCOUNT_PAYMENT(HttpStatus.FORBIDDEN, "CO032", "잔액부족으로 결제에 실패했습니다."),
|
||||||
|
REJECT_CARD_PAYMENT(HttpStatus.FORBIDDEN, "CO033", "한도초과 혹은 잔액부족으로 결제에 실패했습니다."),
|
||||||
|
REJECT_CARD_COMPANY(HttpStatus.FORBIDDEN, "CO034", "결제 승인이 거절되었습니다."),
|
||||||
|
FORBIDDEN_REQUEST(HttpStatus.FORBIDDEN, "CO035", "허용되지 않은 요청입니다."),
|
||||||
|
REJECT_TOSSPAY_INVALID_ACCOUNT(HttpStatus.FORBIDDEN, "CO036", "선택하신 출금 계좌가 출금이체 등록이 되어 있지 않아요. 계좌를 다시 등록해 주세요."),
|
||||||
|
EXCEED_MAX_AUTH_COUNT(HttpStatus.FORBIDDEN, "CO037", "최대 인증 횟수를 초과했습니다. 카드사로 문의해주세요."),
|
||||||
|
EXCEED_MAX_ONE_DAY_AMOUNT(HttpStatus.FORBIDDEN, "CO038", "일일 한도를 초과했습니다."),
|
||||||
|
NOT_AVAILABLE_BANK(HttpStatus.FORBIDDEN, "CO039", "은행 서비스 시간이 아닙니다."),
|
||||||
|
INVALID_PASSWORD(HttpStatus.FORBIDDEN, "CO040", "결제 비밀번호가 일치하지 않습니다."),
|
||||||
|
INCORRECT_BASIC_AUTH_FORMAT(HttpStatus.FORBIDDEN, "CO041", "잘못된 요청입니다. ':' 를 포함해 인코딩해주세요."),
|
||||||
|
FDS_ERROR(HttpStatus.FORBIDDEN, "CO042", "[토스페이먼츠] 위험거래가 감지되어 결제가 제한됩니다. 발송된 문자에 포함된 링크를 통해 본인인증 후 결제가 가능합니다. (고객센터: 1644-8051)"),
|
||||||
|
NOT_FOUND_PAYMENT(HttpStatus.NOT_FOUND, "CO043", "존재하지 않는 결제 정보 입니다."),
|
||||||
|
NOT_FOUND_PAYMENT_SESSION(HttpStatus.NOT_FOUND, "CO044", "결제 시간이 만료되어 결제 진행 데이터가 존재하지 않습니다."),
|
||||||
|
FAILED_PAYMENT_INTERNAL_SYSTEM_PROCESSING(HttpStatus.INTERNAL_SERVER_ERROR, "CO045", "결제가 완료되지 않았어요. 다시 시도해주세요."),
|
||||||
|
FAILED_INTERNAL_SYSTEM_PROCESSING(HttpStatus.INTERNAL_SERVER_ERROR, "CO046", "내부 시스템 처리 작업이 실패했습니다. 잠시 후 다시 시도해주세요."),
|
||||||
|
UNKNOWN_PAYMENT_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "CO047", "결제에 실패했어요. 같은 문제가 반복된다면 은행이나 카드사로 문의해주세요.");
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
package com.sangdol.tosspaymock.exception.code
|
||||||
|
|
||||||
|
import com.sangdol.common.types.web.HttpStatus
|
||||||
|
|
||||||
|
interface TosspayErrorCode {
|
||||||
|
val httpStatus: HttpStatus
|
||||||
|
val errorCode: String
|
||||||
|
val message: String
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user