Main API결제 API
POST /ai/payments/credit/{transactionId}/cancel
크레딧 결제 취소 (transactionId로 환불)
크레딧 결제 취소
크레딧 거래 ID로 결제를 취소하고 환불 처리합니다.
이 API는 순수 크레딧 충전과 캠페인 결제 모두 취소할 수 있습니다.
- 순수 크레딧 충전 (
collabNo가 null인 경우): 언제든 환불 가능 - 캠페인 결제 (
collabNo가 있는 경우): 모집 시작 전까지만 환불 가능
환불 조건
PAYMENT타입인 경우에만 취소 가능합니다.- 현재 잔액이 환불 금액 이상이어야 합니다. (크레딧을 사용했으면 환불 불가)
- 캠페인 관련 결제는 크리에이터 모집 시작 전까지만 환불 가능합니다.
- 이미 취소된 결제는 다시 취소할 수 없습니다.
| 항목 | 값 |
|---|---|
| 메서드 | POST |
| 경로 | /ai/payments/credit/{transactionId}/cancel |
| 인증 | 필요 (기업 토큰) |
요청
POST /ai/payments/credit/45/cancel HTTP/1.1
Host: api.glowb.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Content-Type: application/json
{
"cancelReason": "크레딧 충전 취소 요청"
}curl -X POST "https://api.glowb.com/ai/payments/credit/45/cancel" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"cancelReason": "크레딧 충전 취소 요청"
}'const response = await fetch(`/ai/payments/credit/${transactionId}/cancel`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
cancelReason: '크레딧 충전 취소 요청'
})
});
const result = await response.json();Path Parameters
Prop
Type
Request Body 스키마
Prop
Type
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "결제 취소 성공",
"data": {
"status": "success",
"message": "결제가 취소되었습니다",
"httpStatusCode": 200
}
}응답 스키마
Prop
Type
에러 응답
| 상태 코드 | 에러 코드 | 설명 |
|---|---|---|
| 400 | CANCEL_FAILED | 결제 취소 실패 |
| 400 | CANCEL_FAILED | PAYMENT 타입이 아님 |
| 400 | CANCEL_FAILED | 크레딧이 이미 사용되어 환불 불가 |
| 400 | CANCEL_FAILED | 이미 취소된 결제 |
| 400 | CANCEL_FAILED | 모집이 시작되어 환불 불가 |
| 404 | NOT_FOUND | 거래를 찾을 수 없음 |
| 500 | INTERNAL_SERVER_ERROR | 서버 오류 |
타입 오류 예시:
{
"status": 400,
"code": "CANCEL_FAILED",
"message": "충전(PAYMENT) 타입만 취소 가능합니다. 현재 타입: CREDIT_USE",
"data": null
}잔액 부족 예시:
{
"status": 400,
"code": "CANCEL_FAILED",
"message": "크레딧이 이미 사용되어 환불이 불가능합니다. 현재 잔액: 50000, 환불 금액: 5025000",
"data": null
}환불 처리 흐름
- 크레딧 거래 조회 (
transactionId로 조회) - 거래 타입 확인 (
PAYMENT타입만 취소 가능) - 현재 잔액 확인 (잔액 < 환불금액이면 환불 불가)
- 캠페인 관련인 경우 모집 상태 확인
- CandyPay 환불 API 호출 (CandyPayment가 있는 경우)
- 크레딧 환불 (잔액 차감) + 환불 이력 저장
- 캠페인 상태 변경 (캠페인 결제인 경우)
거래 ID 조회 방법
거래 ID는 GET /ai/payments/credits/history API에서 조회할 수 있습니다.
{
"transactions": [
{
"id": 45, // ← 이 ID를 사용
"transactionType": "PAYMENT",
"amount": 5025000,
"refundable": true,
"refundableReason": "환불 가능"
}
]
}