메인 콘텐츠로 건너뛰기

개요

Dodo Payments API는 API 요청의 성공 또는 실패를 나타내기 위해 표준 HTTP 상태 코드와 사용자 정의 오류 코드를 사용합니다. 오류가 발생하면 API는 적절한 HTTP 상태 코드와 오류에 대한 자세한 정보를 포함하는 JSON 응답을 반환합니다. 각 오류 응답에는 다음이 포함됩니다:
  • 오류의 일반적인 범주를 나타내는 HTTP 상태 코드
  • 오류의 정확한 성격을 식별하는 특정 오류 코드
  • 무엇이 잘못되었는지 설명하는 사람이 읽을 수 있는 오류 메시지
  • 해당하는 경우 오류에 대한 추가 세부정보
이러한 오류 코드와 그 의미를 이해하는 것은 다음과 같은 데 중요합니다:
  • 통합 문제 디버깅
  • 애플리케이션에서 적절한 오류 처리 구현
  • 최종 사용자에게 의미 있는 피드백 제공
  • 강력한 결제 처리 시스템 유지
이것들은 API 및 비즈니스 로직 오류입니다. 실패한 결제 시 반환되는 카드 거절 사유(예: INSUFFICIENT_FUNDS 또는 CARD_DECLINED)는 거래 실패 참조를 대신 참조하세요.

표준 API 오류 코드

HTTP StatusNameDescription
400Bad Request요청이 잘못 형성되었거나 잘못된 매개변수가 포함됨
401Unauthorized인증 실패 또는 API 키가 유효하지 않음
403ForbiddenAPI 키에 요청된 리소스에 대한 액세스 권한이 없음
404Not Found요청된 리소스가 존재하지 않음
405Method Not Allowed이 엔드포인트에 대해 HTTP 메서드가 지원되지 않음
409Conflict요청이 현재 리소스 상태와 충돌함
422Unprocessable Entity요청이 잘 형성되었지만 의미 오류가 포함됨
429Too Many Requests속도 제한 초과
500Internal Server Error서버에 예기치 않은 오류 발생
502Bad Gateway서버가 상위 서버로부터 잘못된 응답을 수신함
503Service Unavailable서비스가 일시적으로 사용 불가
504Gateway Timeout서버가 상위 응답을 기다리는 동안 타임아웃 발생

오류 응답 형식

오류가 발생하면 API는 다음 구조의 JSON 응답을 반환합니다:
{
  "code": "UNSUPPORTED_COUNTRY",
  "message": "Country AI currently not supported"
}

오류 코드 참조

아래의 오류 코드는 관련된 API 영역별로 그룹화되어 있습니다. 각 항목은 트리거 조건과 API 반환 메시지를 나열합니다.

인증 및 계정

  • UNAUTHORIZED
    • Trigger: API 키 없음 또는 잘못된 토큰 / 범위
    • Message: 이 작업을 수행할 권한이 없습니다
  • MERCHANT_NOT_LIVE
    • Trigger: 비즈니스가 테스트/샌드박스 모드
    • Message: 상점이 라이브 상태가 아님

결제 및 체크아웃

  • CHECKOUT_SESSION_CONSUMED
    • Trigger: 체크아웃 세션에서 이미 결제가 발생
    • Message: 체크아웃 세션이 이미 소모되었습니다
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Trigger: 필터링 후 남은 것이 없음
    • Message: 적격 결제 수단을 찾을 수 없습니다
  • PAYMENT_NOT_SUCCEEDED
    • Trigger: 환불/처리되지 않은 결제를 시도
    • Message: 제공된 결제가 성공하지 않았습니다
  • PREVIOUS_PAYMENT_PENDING
    • Trigger: 이전 결제가 비종료 상태일 때 요금 발생 시도
    • Message: 이전 결제가 아직 성공하지 않아 새 요금을 생성할 수 없습니다
  • UNSUCCESSFUL_PAYMENT_ID
    • Trigger: 결제 ID가 실패한 결제를 참조
    • Message: 결제 ID의 상태가 성공적이지 않습니다.

커넥터 및 BYOP

이 오류는 상점 소유의 결제 커넥터(Bring Your Own Processor)와 관련됩니다.
  • BYOP_CONNECTOR_DISABLED
    • Trigger: 비활성화된 BYOP 커넥터를 통해 라우팅된 구독에서 결제 수단 업데이트 시도
    • Message: 구독은 현재 비활성화된 상점 소유(BYOP) 커넥터를 통해 라우팅됩니다
  • BYOP_CUSTOM_INVOICE_ADDRESS_MISSING
    • Trigger: 상점 라우팅(BYOP) 결제에 필요한 사용자 정의 청구 주소 없음
    • Message: 결제가 상점의 커넥터를 통해 라우팅될 때 BYOP 사용자 정의 청구 주소가 필요합니다
  • CONNECTOR_LABEL_ALREADY_EXISTS
    • Trigger: 이미 있는 라벨로 커넥터 생성 시도
    • Message: 이 라벨의 커넥터가 이미 존재합니다. 다른 라벨을 선택하세요.

환불

  • EXISTING_REFUND_REQUEST_PROCESSING
    • Trigger: 이전 환불 요청이 여전히 처리 중
    • Message: 상태가 “Pending”인 환불 요청이 아직 처리 중입니다
  • LINE_ITEM_FULLY_REFUNDED
    • Trigger: 이미 전액 환불된 항목에 대한 환불 시도
    • Message: 항목 는 이미 전액 환불되어 추가 환불이 불가능합니다.
  • LINE_ITEM_NOT_FOUND
    • Trigger: 항목 ID가 참조된 결제에 포함되지 않음
    • Message: 결제에서 항목 를 찾을 수 없습니다
  • LINE_ITEM_PRORATED
    • Trigger: 비율적용 항목에 대한 환불 또는 업데이트 시도
    • Message: 항목 는 비율적용되어 환불 불가능합니다
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Trigger: 환불 금액 > 지급 금액(세금 포함)
    • Message: 항목 요청된 환불 금액(세금 포함)이 로 지급 금액 보다 높습니다
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Trigger: 환불 금액이 최소 임계값 이하
    • Message: 항목 요청된 환불 금액이 로 너무 낮습니다
  • NOTHING_TO_REFUND
    • Trigger: 모든 긍정적인 항목이 이미 전액 환불된 상태에서 환불 금액이 남아있지 않음
    • Message: 환불 가능한 금액이 남아있지 않습니다. 모든 긍정적인 항목이 이미 전액 환불되었습니다.
  • PARTIAL_REFUND_NOT_ALLOWED
    • Trigger: 부분 환불이 지원되지 않는 결제 수단에 대한 부분 환불 시도
    • Message: 이 결제 수단에 대한 부분 환불은 허용되지 않습니다
  • PAYMENT_ALREADY_REFUNDED
    • Trigger: 중복 환불
    • Message: 이 결제는 이미 환불되었습니다
  • PAYMENT_HAS_BEEN_REFUNDED
    • Trigger: 결제가 전액 환불되었습니다
    • Message: 결제 ID가 이미 전액 환불되었습니다.
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Trigger: 집계된 환불 금액 > 지급 금액
    • Message: 계산된 환불 금액이 지급 금액보다 큽니다
  • REFUND_WINDOW_EXPIRED
    • Trigger: 허용된 환불 기간을 초과
    • Message: 결제 생성 후 일 이후에는 환불을 시작할 수 없습니다. support@dodopayments.com으로 문의하세요.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Trigger: 0 금액 결제에 대한 환불 시도
    • Message: 통화 금액이 0인 결제는 환불할 수 없습니다

구독 및 애드온

  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: 사용 기반 과금 구독에 애드온 추가 시도
    • Message: 사용 기반 과금에 대한 구독은 애드온을 지원하지 않습니다
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Trigger: 주문형 구독에 애드온 추가 시도
    • Message: 주문형 구독에 애드온을 추가할 수 없습니다
  • CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Trigger: 비즈니스에서 그 행동을 비활성화 상태일 때 고객 포털에서 예약된 계획 변경 취소 시도
    • Message: 고객 포털에서 예약된 계획 변경 취소가 비활성화되었습니다.
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: 취소 예정인 구독 요금 청구 시도
    • Message: 취소 예정인 구독
  • CUSTOMER_HAS_EXISTING_SUBSCRIPTION
    • Trigger: 고객 당 여러 구독이 허용되지 않을 때 이미 구독이 있는 고객에 대한 구독 생성
    • Message: 고객 에게 기존 구독이 있습니다. 고객 당 여러 구독을 허용하려면 비즈니스 설정을 변경하세요
  • DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL
    • Trigger: 고객 포털에서 플랜 변경에 do_not_bill 비례 모드를 사용
    • Message: do_not_bill 비례 모드는 고객 포털에서 허용되지 않습니다
  • DUPLICATE_ADDON_IDS_IN_REQUEST
    • Trigger: 요청에서 addon_id이 두 번 이상 나타남
    • Message: 중복된 애드온 ID는 허용되지 않습니다
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: 비활성 구독에서 플랜 변경 시도
    • Message: 비활성 구독에 대한 플랜 변경은 지원되지 않습니다
  • INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE
    • Trigger: effective_at: next_billing_date와 함께 full_immediately 이외의 비례 모드 사용
    • Message: effective_at: next_billing_date와 함께 full_immediately 비례 모드만 허용됩니다
  • MISSING_ADDON_IDS
    • Trigger: addon_id 목록이 비어 있거나 알 수 없는 ID가 포함됨
    • Message: 하나 이상의 제품 ID가 존재하지 않음:
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: 주문형에 대한 플랜 교환이 허용되지 않음
    • Message: 주문형 구독의 플랜 변경은 지원되지 않습니다
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: 사용 기반 청구와 함께 주문형 사용 시도
    • Message: 사용 기반 청구에 대한 주문형 구독은 지원되지 않습니다
  • ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND
    • Trigger: 주문형 구독에 일회성 제품 추가
    • Message: 주문형 구독에 일회성 제품은 허용되지 않습니다
  • PENDING_PLAN_CHANGE_EXISTS
    • Trigger: 이전 플랜 변경이 결제를 기다리는 동안 새로운 플랜 변경 요청
    • Message: 이 구독에 대해 대기 중인 계획 변경이 이미 존재합니다. 현재 결제가 완료될 때까지 기다리세요.
  • PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Trigger: 비즈니스에서 비활성화된 고객 포털을 통한 플랜 변경 시도
    • Message: 고객 포털의 구독 플랜 변경이 비활성화되었습니다.
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: 취소 예정인 구독에서 플랜 변경 시도
    • Message: 취소 예정인 구독
  • SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Trigger: 비즈니스가 비활성화된 상태에서 고객 포털을 통한 플랜 변경 예약
    • Message: 이 비즈니스에 대한 계획 변경 예약이 비활성화되었습니다.
  • SCHEDULED_PLAN_CHANGE_EXISTS
    • Trigger: 예약된 플랜 변경이 이미 존재할 때 생성 시도
    • Message: 이 구독에 대한 예약된 플랜 변경이 이미 존재합니다. 새 계획을 생성하기 전에 기존 예약된 변경을 취소하세요.
  • SCHEDULED_PLAN_CHANGE_NOT_FOUND
    • Trigger: 존재하지 않는 예약된 플랜 변경 참조 또는 취소
    • Message: 이 구독에 대한 예약된 계획 변경을 찾을 수 없습니다.
  • SUBSCRIPTION_EXPIRED
    • Trigger: ends_at를 초과하여 청구
    • Message: 구독 만료로 인해 새 요금을 생성할 수 없습니다
  • SUBSCRIPTION_INACTIVE
    • Trigger: 상태 ≠ ACTIVE
    • Message: 구독이 활성 상태가 아닙니다
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Trigger: 주문형이지만 고정 간격이 있음
    • Message: 구독이 이미 주문형이 아닙니다
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Trigger: 구독 결제 재시도가 최대 시도를 초과함
    • Message: 이 구독에 대해 최대 재시도 10회 제한을 초과했습니다

제품, 장바구니 및 브랜드

  • BRAND_MISMATCH
    • Trigger: 장바구니 품목이 다른 브랜드에 속함
    • Message: 제품 장바구니의 모든 항목은 동일한 브랜드에 속해야 합니다
  • BRAND_NOT_ENABLED
    • Trigger: 브랜드가 비활성화되었거나 활성 상태가 아님
    • Message: 제공된 브랜드가 활성화되어 있지 않습니다
  • BRAND_SUBMISSION_NOT_ENABLED
    • Trigger: 브랜드 확인 재제출 기능이 활성화되지 않음
    • Message: 브랜드 확인 재제출이 활성화되어 있지 않습니다
  • FILE_IN_USE
    • Trigger: 활성 자격 부여 권한이 여전히 참조하는 디지털 제품 파일 삭제 시도(?force=true를 전달하여 무시 가능)
    • Message: 디지털 파일이 활성 부여에 참조되고 있습니다
  • INVALID_SUGGESTED_PRICE
    • Trigger: PWYW 가격이 허용된 최소 가격보다 낮음
    • Message: 제안된 가격은 최소 가격보다 낮을 수 없습니다. 사용자가 원하는 경우 지불 금액은 최소 허용액으로 간주됩니다
  • LOCALIZED_PRICE_ALREADY_EXISTS
    • Trigger: 이 제품 및 국가/통화에 대해 지역화된 가격이 이미 존재함
    • Message: 이 제품 및 국가/통화에 대한 지역화된 가격이 이미 존재합니다
  • LOCALIZED_PRICE_DUPLICATES_BASE
    • Trigger: 지역화된 가격이 제품의 기본 통화/국가와 중복됨
    • Message: 지역화된 가격이 제품의 기본 통화/국가와 중복됩니다
  • LOCALIZED_PRICE_SHAPE_MISMATCH
    • Trigger: 지역화된 가격 모양이 제품의 pricing_mode과 일치하지 않음
    • Message: 제품의 pricing_mode와 지역화된 가격 모양이 일치하지 않습니다
  • MISSING_PRODUCT_INFORMATION
    • Trigger: 제품은 존재하지만 필수 정보가 누락됨
    • Message: 제품 는 존재하지만 다른 필수 정보가 누락되었거나 잘못되었습니다
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Trigger: PWYW 제품에 대한 가격 누락
    • Message: pay as you want 제품에 대한 금액은 필수입니다
  • PRODUCT_CART_EMTPY
    • Trigger: 빈 제품 장바구니 제출
    • Message: product_cart가 비어 있습니다(API가 반환하는 정확한 값을 일치시키기 위해 오류 코드가 의도적으로 EMTPY로 철자가 명시됨)
  • PRODUCT_COLLECTION_IS_DELETED
    • Trigger: 삭제된 제품 컬렉션에서 작업
    • Message: 메시지 없음
  • PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS
    • Trigger: 컬렉션에서 마지막 제품(또는 제품이 포함된 마지막 그룹) 제거
    • Message: 컬렉션에서 마지막 제품을 삭제할 수 없습니다. 대신 컬렉션을 보관하세요.
  • PRODUCT_IS_DELETED
    • Trigger: 제품이 소프트 삭제되었음
    • Message: 메시지 없음
  • PRODUCT_PRICING_MODE_REQUIRED
    • Trigger: 제품의 pricing_mode가 설정되기 전에 지역화된 가격 추가
    • Message: 지역화된 가격을 추가하기 전에 제품 pricing_mode를 설정해야 합니다
  • SLUG_ALREADY_TAKEN
    • Trigger: 요청된 제품 슬러그 / 단축 URL이 이미 사용 중
    • Message: 슬러그가 이미 사용 중입니다
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Trigger: 정규 API를 통해 기본 브랜드 업데이트 시도
    • Message: 기본 브랜드는 이 API 엔드포인트를 통해 업데이트할 수 없습니다.

할인

  • DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION
    • Trigger: 이 구독에서 이미 사용된 할인을 다시 적용 시도
    • Message: 이 할인은 이 구독에서 이미 사용되었습니다
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Trigger: 중복 할인 코드 생성
    • Message: 할인 코드가 이미 존재합니다
  • DISCOUNT_CODE_EXPIRED
    • Trigger: 할인 코드가 expires_at 날짜를 초과함
    • Message: 할인 코드가 만료되었습니다
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Trigger: 사용할 usage_limit이(가) 도달한 후 할인을 재사용
    • Message: 사용 제한이 사용된 횟수보다는 클 수 없음 / 할인 코드가 사용 제한에 도달함
  • DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT
    • Trigger: 기존 할인에 적용되지 않는 제품에 대한 플랜 변경
    • Message: 새 플랜의 제품에 대해 할인이 적용되지 않음
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Trigger: 주문형 구독에 코드 적용
    • Message: 주문형 구독에는 할인 쿠폰을 사용할 수 없습니다
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • Trigger: 관련 없는 제품에 코드 적용
    • Message: 이 제품에 대해 할인 쿠폰을 사용할 수 없습니다
  • INVALID_DISCOUNT_CODE
    • Trigger: 코드가 존재하지 않거나 적용 불가
    • Message: 잘못된 할인 코드 / 장바구니의 어떤 제품에도 할인 코드를 적용할 수 없습니다
  • INVALID_PERCENTAGE
    • Trigger: 비율 금액 > 100% (또는 10,000 베이시스 포인트)
    • Message: 비율 금액은 10000을 초과할 수 없음 / 할인 코드 금액은 100%를 초과할 수 없음
  • UNSUPPORTED_DISCOUNT_TYPE
    • Trigger: 고정 금액 할인 등이 아직 활성화되지 않음
    • Message: 현재로서는 퍼센트 할인 코드만 지원됩니다

라이센스 키

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Trigger: 라이센스 키 활성화: 기존 인스턴스 수보다 새 제한이 작음
    • Message: 새 활성화 제한은 현재 인스턴스 수보다 작을 수 없습니다
  • INACTIVE_LICENSE_KEY
    • Trigger: 키 상태 ≠ ACTIVE
    • Message: 라이센스 키가 활성 상태가 아닙니다
  • LICENSE_KEY_LIMIT_REACHED
    • Trigger: 활성화 = 제한
    • Message: 라이센스 키 활성화 제한에 도달하였습니다
  • LICENSE_KEY_NOT_FOUND
    • Trigger: 인스턴스 ID 또는 키 ID가 유효하지 않음
    • Message: 라이센스 키 인스턴스를 찾을 수 없거나 이 라이센스 키에 속하지 않습니다
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Trigger: 하위 기반 키에 만료 설정 시도
    • Message: 구독 기반 라이센스 키에 대한 만료 날짜를 설정할 수 없습니다

사용 기반 청구 및 미터

  • DUPLICATE_METER_IDS_IN_REQUEST
    • Trigger: 요청에서 동일한 미터 ID가 여러 번 나타남
    • Message: 중복 미터 ID는 허용되지 않습니다
  • INVALID_QUANTITY
    • Trigger: 사용 기반 가격 책정에 대해 잘못된 수량 지정
    • Message: 사용 기반 가격 제품에서는 1개의 수량만 허용됩니다
  • METER_IS_DELETED
    • Trigger: 삭제된 미터를 사용하려고 시도
    • Message: 미터는 이미 삭제되었습니다
  • MISSING_METER_IDS
    • Trigger: 미터 ID 목록이 비거나 잘못된 ID가 포함됨
    • Message: 하나 이상의 미터 ID가 존재하지 않음:

크레딧 기반 청구

  • CREDIT_ENTITLEMENT_IS_DELETED
    • Trigger: 삭제된 크레딧 권한에서 작업
    • Message: 크레딧 권한이 이미 삭제되었습니다
  • CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS
    • Trigger: 이미 존재하는 이름으로 크레딧 권한 생성
    • Message: 이 이름으로 크레딧 권한이 이미 존재합니다
  • OVERAGE_LIMIT_EXCEEDED
    • Trigger: 사용량 또는 크레딧 공제가 구성된 초과 사용 한도를 초과할 경우
    • Message: 초과 사용 한도 초과

지갑

  • INSUFFICIENT_WALLET_FUNDS
    • Trigger: 지갑 잔액 < 인출 금액
    • Message: 지갑의 자금이 부족합니다
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Trigger: 지갑 잔액을 음수로 만들려고 시도
    • Message: 지갑 잔액을 음수로 만드는 것은 허용되지 않습니다

통화, 세금 및 지역

  • EXCHANGE_RATE_NOT_FOUND
    • Trigger: from → to 통화 쌍에 대한 환율 없음
    • Message: 통화에서 통화로 변환하기 위한 환율을 찾을 수 없습니다
  • INVALID_TAX_ID
    • Trigger: VAT/GST/TIN 유효성 검증 실패
    • Message: 세금 ID가 유효하지 않습니다
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Trigger: 금액 < 제품 최소
    • Message: 제품에 대해 지정된 최소 금액보다 적은 금액일 수 없습니다
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Trigger: 결합 장바구니 총합 < 게이트웨이 최소
    • Message: 결제를 처리하기 위해 의 최소 금액이 필요합니다
  • UNSUPPORTED_BILLING_CURRENCY
    • Trigger: 구독은 USD로 제한됨
    • Message: 구독에 대해 USD 이외의 결제 통화는 지원되지 않습니다
  • UNSUPPORTED_COUNTRY
    • Trigger: 지역이 아직 지원되지 않음
    • Message: 현재 국가는 지원되지 않습니다
  • UNSUPPORTED_CURRENCY
    • Trigger: 제품 또는 애드온 통화가 유효하지 않음
    • Message: 통화가 현재 지원되지 않음 / 현재 USD 및 INR 제품만 지원됨 / 애드온 가격에 대해 USD 및 INR만 지원됨 / 결제 통화로 USD 또는 INR만 요청 가능 / 통화 지원되지 않음 / 인도 카드 구독의 예기치 않은 통화
  • UNSUPPORTED_TAX_CATEGORY
    • Trigger: 세금 카테고리 문자열이 열거형에 포함되지 않음
    • Message: 카테고리 는 현재 지원되지 않습니다

유효성 검사 및 요청

  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Trigger: items[]에서 동일한 item_id이 두 번 나타남
    • Message: 항목 배열에서 지정된 중복 item_ids
  • INVALID_QUERY_PARAMS
    • Trigger: 상호 배타적 / 잘못된 쿼리 매개변수
    • Message: 쿼리 매개변수에는 time_frame 또는 (시작, 끝)만 포함되어야 합니다
  • INVALID_REQUEST_BODY
    • Trigger: 잘못된 JSON 또는 스키마 위반
    • Message: 요청 본문이 유효하지 않습니다. 요청 헤더와 객체를 확인하세요.
  • INVALID_REQUEST_PARAMETERS
    • Trigger: 의미 오류 (예: 과거 날짜)
    • Message: next_billing_date를 과거 시간으로 변경할 수 없습니다
  • MAXIMUM_KEYS_REACHED
    • Trigger: 메타데이터 / 사용자 정의 필드가 50쌍을 초과
    • Message: 50개의 키-값 쌍을 초과함

일반 및 시스템

  • INTEGER_CONVERSION_FAILURE
    • Trigger: 서버 측에서 실패하는 모든 정수 ↔ 문자열/소수 변환
    • Message: 정수 변환 실패
  • INTERNAL_SERVER_ERROR
    • Trigger: 예기치 않은 예외; 서버 측에서 세부 정보를 기록해야 합니다
    • Message: 공용 메시지 없음 (일반 500)
  • NOT_FOUND
    • Trigger: 누락된 리소스에 대한 일반 404
    • Message: 항목을 찾을 수 없습니다 (or more specific)
  • TOO_MANY_REQUESTS
    • Trigger: 429 속도 제한
    • Message: 메시지 없음
  • UNSUPPORTED_ACTION
    • Trigger: 리소스 유형에 대해 지원되지 않는 작업
    • Message: 사용 기반 구독의 플랜 변경은 지원되지 않습니다

모범 사례

  1. 애플리케이션에서 오류를 잘 처리하세요
  2. 적절한 오류 로깅을 구현하세요
  3. 최종 사용자에게 적절한 오류 메시지를 사용하세요
  4. 일시적인 오류에 대해 재시도 로직을 구현하세요
  5. 해결되지 않은 문제는 지원팀에 연락하세요

지원

오류 코드나 통합 문제에 대한 추가 도움이 필요하면 support@dodopayments.com으로 지원팀에 문의하세요.
마지막 수정일 2026년 6월 18일