Admin APIAdmin Finance API
POST /ai/admin/finance/collab/{collabNo}/credit
기업 잔액 → 캠페인 예산 이동 (어드민 입금)
캠페인 크레딧 추가
기업의 글로벌 잔액(Business.remainCredit) 에서 amount 만큼 차감하여 캠페인 예산으로 이동시킵니다.
기존 사용자 결제 후 자동 입금 흐름(CAMPAIGN_DEPOSIT) 과 동일하지만, 어드민 수동 입금이므로
reason / memo / createdBy 가 채워집니다.
HTTP 요청
POST /ai/admin/finance/collab/{collabNo}/credit?adminId={adminId}
Authorization: Bearer {access_token}
Content-Type: application/jsonPath / Query Parameters
| 파라미터 | 위치 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
collabNo | path | Integer | 예 | 캠페인 번호 |
adminId | query | String | 아니오 | 처리자 ID (생략 시 admin) |
Request Body
{
"amount": 500000,
"reason": "META_AD_FEE",
"memo": "11월 1주차 메타 광고비"
}| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
amount | Integer | 예 | 이동 금액 (양수 only) |
reason | CreditTransactionReason | 예 | META_AD_FEE / GUIDELINE_ADDITIONAL / RESHOOT_ADDITIONAL / ETC |
memo | String | 조건부 | reason=ETC 일 때 필수 |
동작
- 캠페인 조회 → 연결된 기업 로드
business.remainCredit >= amount검증, 부족 시 실패business.remainCredit -= amountCreditTransaction(transactionType=CAMPAIGN_DEPOSIT, amount=-amount, collabNo, reason, memo, createdBy)저장
응답 (200 OK)
{
"status": 200,
"code": null,
"message": "캠페인 크레딧 추가 완료",
"data": {
"id": 2031,
"transactionType": "CAMPAIGN_DEPOSIT",
"amount": -500000,
"balanceAfter": 1000000,
"collabNo": 482,
"candyPaymentId": null,
"description": "어드민 캠페인 입금",
"reason": "META_AD_FEE",
"memo": "11월 1주차 메타 광고비",
"reverseOfTxId": null,
"createdAt": "2026-05-28T13:30:00",
"createdBy": "admin01"
}
}에러
| 상태 | 조건 | 설명 |
|---|---|---|
400 | amount <= 0, reason 누락, reason=ETC && memo 누락 | IllegalArgumentException |
404 | 캠페인 / 기업 없음 | NotFoundException |
500* | 잔액 부족 | IllegalStateException ("크레딧 잔액이 부족합니다.") — 추후 409 로 정합 예정 |