Glowb Dev Docs
Main API결제 API

GET /ai/payments/credits/history

크레딧 내역 조회

크레딧 내역 조회

기업의 크레딧 사용 및 충전 내역을 조회합니다.

현재 잔액과 함께 모든 크레딧 거래 내역을 최신순으로 반환합니다.

항목값
메서드GET
경로/ai/payments/credits/history
인증필요 (기업 토큰)

요청

GET /ai/payments/credits/history HTTP/1.1
Host: api.glowb.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
curl "https://api.glowb.com/ai/payments/credits/history" \
  -H "Authorization: Bearer {access_token}"
const response = await fetch('/ai/payments/credits/history', {
  headers: {
    'Authorization': `Bearer ${accessToken}`
  }
});
const result = await response.json();

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "크레딧 내역 조회 성공",
  "data": {
    "remainCredit": 500000,
    "transactions": [
      {
        "id": 10,
        "transactionType": "PAYMENT",
        "transactionTypeName": "결제 충전",
        "amount": 100000,
        "balanceAfter": 500000,
        "collabNo": 123,
        "collabTitle": "여름 신상 캠페인",
        "candyPaymentId": "order_1234567890",
        "description": "캠페인 결제",
        "createdAt": "2024-01-15T10:30:00",
        "occurredAt": "2024-01-15T10:30:00",
        "createdBy": "user123",
        "createdByName": "A브랜드",
        "refundable": true,
        "refundableReason": "모집 시작 전 - 환불 가능",
        "receiptCandyUrl": "https://pay.candypay.co.kr/receipt/candy/...",
        "receiptPerMethodUrls": "https://pay.candypay.co.kr/receipt/card/..."
      },
      {
        "id": 9,
        "transactionType": "CREDIT_USE",
        "transactionTypeName": "크레딧 사용",
        "amount": -50000,
        "balanceAfter": 400000,
        "collabNo": 122,
        "collabTitle": "봄 세일 캠페인",
        "candyPaymentId": null,
        "description": "크레딧 사용",
        "createdAt": "2024-01-14T15:20:00",
        "occurredAt": "2024-01-14T15:20:00",
        "createdBy": "user123",
        "createdByName": "A브랜드",
        "refundable": null,
        "refundableReason": null,
        "receiptCandyUrl": null,
        "receiptPerMethodUrls": null
      },
      {
        "id": 8,
        "transactionType": "PAYMENT",
        "transactionTypeName": "결제 충전",
        "amount": 100000,
        "balanceAfter": 450000,
        "collabNo": null,
        "collabTitle": null,
        "candyPaymentId": "order_0987654321",
        "description": "순수 크레딧 충전",
        "createdAt": "2024-01-13T09:00:00",
        "occurredAt": "2024-01-13T09:00:00",
        "createdBy": "user123",
        "createdByName": "A브랜드",
        "refundable": true,
        "refundableReason": "환불 가능",
        "receiptCandyUrl": "https://pay.candypay.co.kr/receipt/candy/...",
        "receiptPerMethodUrls": "https://pay.candypay.co.kr/receipt/card/..."
      }
    ]
  }
}

응답 스키마

Prop

Type

Transaction 스키마

Prop

Type

occurredAt (발생일) 과 createdAt (기록 시각)

크레딧 원장은 가계부처럼 실제로 돈이 오간 날(occurredAt) 과 서버에 기록된 시각(createdAt) 을 따로 가집니다. 일반 경로(카드 충전, 캠페인 결제 등)에서는 두 값이 같지만, 관리자가 무통장 입금을 뒤늦게 확인해 과거 날짜로 기입하거나 기존 행의 날짜를 정정하면 달라집니다.

필드의미변경 가능
createdAt이 행이 서버에 쌓인 시각불가
occurredAt가계부상 발생일어드민이 지정·수정 가능
{
  "id": 42,
  "transactionType": "CREDIT_ADD",
  "transactionTypeName": "크레딧 충전",
  "amount": 3000000,
  "createdAt": "2024-02-05T11:20:00",
  "occurredAt": "2024-01-31T00:00:00"
}

위 예시는 1월 31일에 입금된 건을 관리자가 2월 5일에 기록한 경우입니다.

정렬은 createdAt 최신순입니다.

이 API 의 transactions 는 createdAt 내림차순으로 내려갑니다. 과거 날짜로 기입된 행이 섞이면 occurredAt 기준으로는 순서가 어긋나 보이므로, 발생일 순으로 보여줄 화면에서는 프론트에서 occurredAt 으로 다시 정렬하세요.

occurredAt 은 항상 값이 있습니다. 지정하지 않고 저장된 행은 createdAt 과 같은 값으로 채워지므로, 기존 데이터도 포함해 null 이 되지 않습니다.

description 은 표준 라벨입니다

description 은 기업 화면에 그대로 노출되므로 고정된 문구만 들어갑니다. 상세 내역(일괄 제안 인원수, 관리자 대리 결제 여부 등)은 어드민 전용 필드로 분리되어 이 응답에는 내려가지 않습니다.

description언제
결제 충전카드로 크레딧 충전
크레딧 충전 / 크레딧 사용어드민이 크레딧을 수동 조정
캠페인 크레딧 충전제안 시 크레딧에서 캠페인 예산으로 자동 충전
캠페인 결제캠페인 초기 결제
캠페인 잔액 환급캠페인 종료 시 미사용 예산 환급

잔액이 마이너스로 보일 수 있습니다.

관리자가 입금 확인 전에 캠페인을 결제됨으로 처리하면 부족한 만큼 remainCredit 과 balanceAfter 가 음수가 됩니다. 이는 아직 납부되지 않은 금액이며, 이후 충전이 반영되면 0 이상으로 회복됩니다. 화면에서 음수를 그대로 노출할지 "미결제 금액" 형태로 바꿀지는 프론트에서 결정합니다.

환불 가능 여부 (refundable)

충전 유형조건refundablerefundableReason
캠페인 결제모집 시작 전true"모집 시작 전 - 환불 가능"
캠페인 결제모집 시작 후false"모집이 시작되어 환불 불가"
순수 크레딧 충전-true"환불 가능"
기타 거래-nullnull

환불 가능 단계

  • CAMPAIGN_REVIEW (캠페인 검토)
  • CAMPAIGN_PAYMENT (캠페인비 결제)
  • CAMPAIGN_GUIDELINE (가이드라인 작성)

CREATOR_RECRUIT (크리에이터 모집) 단계 이후에는 환불이 불가능합니다.

거래 유형 (transactionType)

유형설명금액 부호
PAYMENT결제 충전양수 (+)
REFUND환불음수 (-)
CREDIT_USE크레딧 사용음수 (-)
CREDIT_ADD관리자 추가양수 (+)
CREDIT_DEDUCT관리자 차감음수 (-)

에러 응답

상태 코드에러 코드설명
400INVALID_USER기업 정보를 찾을 수 없음
401UNAUTHORIZED인증 토큰 없음 또는 만료
500INTERNAL_SERVER_ERROR서버 오류
{
  "status": 400,
  "code": "INVALID_USER",
  "message": "기업 정보를 찾을 수 없습니다",
  "data": null
}

API 테스트

On this page