메인 콘텐츠로 건너뛰기
캠페인 오픈 전에 WebView 연동이 정상 동작하는지 라이브 환경에서 검증할 수 있습니다. 테스트 모드에서는 실제 DB에 데이터를 기록하지 않으면서, 웹훅은 실제로 발송되어 게임 서버의 수신 로직까지 검증 가능합니다.
테스트 모드는 쿠폰에는 적용되지 않습니다. 테스트 모드에서도 쿠폰을 사용하면 실제 쿠폰이 소진됩니다.

동작 원칙

항목테스트 모드 동작
크리에이터Mock 데이터 반환 (TEST1, TEST2, TEST3)
부스트 등록/변경/해제Mock 응답 + 실제 웹훅 발송 (DB 미기록)
부스트 상태 조회세션에 저장 — 등록 후 조회 시 유지됨
캠페인 목록실제 DB 조회PENDING_EXPOSURE, EXPOSED 포함
캠페인 상세실제 DB 조회
쿠폰미적용 — 실제 쿠폰이 소진됩니다
WebView UI상단에 보라색 “TEST MODE” 배너 표시

전체 흐름

Step 1: OTT 발급 시 isTest: true 추가

게임 서버에서 OTT를 발급할 때 isTest: true를 추가하면 해당 세션 전체가 테스트 모드로 동작합니다.
curl -X POST "https://sdk-api.playcamp.io/v1/server/webview/ott" \
  -H "Authorization: Bearer {SERVER_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "userId": "user-123",
    "campaignId": "camp-abc",
    "isTest": true
  }'
isTest는 OTT → 세션으로 전파되어 세션 수명 동안 유지됩니다. WebView URL이나 클라이언트에서 별도로 설정할 수 없으며, 반드시 OTT 발급 시 Server API Key로 설정해야 합니다.

Step 2: WebView에서 테스트 진행

테스트 모드 WebView에 진입하면 상단에 보라색 TEST MODE 배너가 표시됩니다.

캠페인 목록

일반 모드에서는 IN_PROGRESS, COMPLETED 상태의 캠페인만 표시되지만, 테스트 모드에서는 오픈 전 캠페인도 표시됩니다:
모드표시 대상
일반IN_PROGRESS, COMPLETED
테스트PENDING_EXPOSURE, EXPOSED, IN_PROGRESS, COMPLETED
캠페인 오픈 전(EXPOSED, PENDING_EXPOSURE) 상태에서도 WebView QA가 가능합니다.

크리에이터

테스트 모드에서는 고정된 Mock 크리에이터가 반환됩니다:
creatorKeycreatorNamestatus
TEST1[Mock] AlphaTEST
TEST2[Mock] BravoTEST
TEST3[Mock] CharlieTEST

부스트

부스트 등록/변경/해제 시:
  • DB 기록: 없음
  • 응답: Mock 데이터
  • 웹훅: 실제 발송 (_isTestData: true 포함)
  • 세션 상태: Redis 세션에 저장되어 새로고침 후에도 유지

Step 3: 웹훅 수신 및 _isTestData 처리

테스트 모드에서 발생한 웹훅에는 _isTestData: true 필드가 포함됩니다:
{
  "events": [
    {
      "event": "sponsor.created",
      "data": {
        "userId": "user-123",
        "campaignId": "camp-abc",
        "creatorKey": "TEST1",
        "_isTestData": true
      },
      "timestamp": "2026-04-16T05:00:00.000Z",
      "callbackId": "..."
    }
  ]
}
게임 서버의 웹훅 핸들러에서 _isTestData를 확인하여 테스트 웹훅과 실제 웹훅을 구분하세요:
app.post('/webhooks/playcamp', (req, res) => {
  for (const { event, data } of req.body.events) {
    if (data._isTestData) {
      console.log(`[TEST] ${event}`, data);
      continue;
    }

    // 실제 처리 로직
  }

  res.json({ received: true });
});
적용 대상 이벤트: sponsor.created, sponsor.changed, sponsor.ended
OTT 발급 시 campaignId를 지정하지 않으면 웹훅 payload의 campaignId'TEST_CAMPAIGN'(리터럴)으로 설정됩니다. 게임 서버에서 이 값으로 캠페인 조회를 시도하면 404가 반환되므로, _isTestData: true인 웹훅에서는 campaignId 조회를 건너뛰도록 처리하세요.

주의사항

  • 쿠폰은 테스트 모드 미적용: 테스트 모드에서도 쿠폰 사용 시 실제 쿠폰이 소진됩니다
  • Sandbox vs Live: 테스트 모드는 Live 환경에서도 안전하게 사용할 수 있습니다. Sandbox 환경과 병행하여 사용 가능합니다
  • 연동 검증 인정: isTest: true로 호출해도 연동 완료 조건에 포함됩니다

관련 문서