유저가 응원하는 크리에이터를 설정합니다. 후원 설정 후 해당 유저의 결제는 자동으로 크리에이터에게 귀속됩니다.
POST /sponsors는 upsert 방식으로 동작합니다:
| 현재 상태 | 요청한 creatorKey | 동작 |
|---|
| 후원 없음 | - | 신규 생성 |
| 같은 크리에이터 후원 중 | 동일 | 현재 상태 반환 |
| 다른 크리에이터 후원 중 | 다름 | 30일 쿨다운 후 변경 |
| 후원 종료됨 | - | 다시 활성화 |
POST /sponsors는 후원 생성과 변경을 하나의 API로 처리합니다.
1. 크리에이터 검색/선택 → 2. 후원 등록 → 3. 이후 결제 자동 귀속
후원 등록
campaignId를 지정하지 않으면 현재 활성화된 캠페인으로 자동 귀속됩니다.
한 게임에서 여러 캠페인을 운영하는 경우, 반드시 campaignId를 명시하여 캠페인을 구분해야 합니다.
요청
curl -X POST "https://sandbox-sdk-api.playcamp.io/v1/server/sponsors" \
-H "Authorization: Bearer ak_server_xxx:secret" \
-H "Content-Type: application/json" \
-d '{
"userId": "user_12345",
"creatorKey": "ABC12"
}'
const sponsor = await server.sponsors.create({
userId: 'user_12345',
creatorKey: 'ABC12',
});
sponsor, err := server.Sponsors.Create(ctx, playcamp.CreateSponsorParams{
UserID: "user_12345",
CreatorKey: "ABC12",
})
응답 (201 Created)
{
"data": {
"userId": "user_12345",
"campaignId": "campaign_001",
"creatorKey": "ABC12",
"isActive": true,
"sponsoredAt": "2024-01-15T10:30:00.000Z"
}
}
후원 해제
campaignId를 지정하지 않으면 활성 캠페인의 후원이 해제됩니다.
요청
curl -X DELETE "https://sandbox-sdk-api.playcamp.io/v1/server/sponsors/user/user_12345" \
-H "Authorization: Bearer ak_server_xxx:secret"
await server.sponsors.remove({ userId: 'user_12345' });
err := server.Sponsors.Delete(ctx, "user_12345", nil)
에러 처리
| HTTP | 코드 | 설명 | 대응 |
|---|
| 400 | BAD_REQUEST | 활성 캠페인 없음 또는 30일 쿨다운 | 캠페인 상태 확인, 쿨다운 대기 |
| 404 | NOT_FOUND | 크리에이터 없음 | creatorKey 확인 |