Skip to main content
Embed PlayCamp’s WebView UI in your game to provide creator boost functionality. This is the fastest integration method — no additional UI development required.

When to Use This Method

  • You want to provide creator boost functionality quickly
  • You don’t need to build a custom UI
  • PlayCamp’s built-in creator search/selection UI works for your game

Full Flow

Development Tasks

#TaskOwnerDescription
1Place PlayCamp entry pointGame ClientAdd icon/button in game
2OTT issuance endpointGame ServerIssue OTT on client request
3Open WebViewGame ClientOpen WebView URL with OTT
4Webhook receiver endpointGame ServerReceive boost match results
5Payment registration APIGame ServerSend in-game purchases to PlayCamp

Step 1: Issue OTT (Game Server)

Issue a One-Time Token (OTT) from your game server to PlayCamp SDK API. OTT is single-use with 60-second TTL, so you must issue a new one each time the user opens WebView.
curl -X POST "https://sandbox-sdk-api.playcamp.io/v1/server/webview/ott" \
  -H "Authorization: Bearer ak_server_xxx:secret" \
  -H "Content-Type: application/json" \
  -d '{
    "userId": "game_user_id"
  }'
Response
{
  "data": {
    "ott": "a1b2c3d4e5f6...64char_hex",
    "expiresIn": 60
  }
}
OTT must be issued from the game server. Issuing directly from the client exposes the Server Key.
Details: WebView Integration - OTT API

Step 2: Open WebView (Game Client)

Open the WebView URL with the OTT received from the game server.

Base URL

EnvironmentURL
Sandboxhttps://sandbox-sdk-api.playcamp.io/webview/?ott={token}
Livehttps://sdk-api.playcamp.io/webview/?ott={token}

Optional Parameters

ParameterDescriptionExample
langLanguage (ko, en)&lang=ko
tabsLimit visible tabs&tabs=sponsor
primaryColorTheme color (hex, without #)&primaryColor=FF6B35
Full Example
https://sandbox-sdk-api.playcamp.io/webview/?ott=a1b2c3d4...&lang=ko&tabs=sponsor&primaryColor=FF6B35
WebView supports both in-game embedded browsers and external browsers (mobile/PC). Choose what fits your game environment.
Details: WebView Integration - URL Configuration

Step 3: Receive Boost Match via Webhook (Game Server)

When the user selects a creator in WebView, PlayCamp sends the match result to your game server’s webhook URL.

Payload (sponsor.created)

{
  "events": [
    {
      "event": "sponsor.created",
      "timestamp": "2024-01-15T10:30:00.000Z",
      "data": {
        "userId": "game_user_id",
        "campaignId": "campaign_001",
        "creatorKey": "ABC12"
      }
    }
  ]
}
FieldDescription
userIdGame user ID (the value passed when issuing OTT)
campaignIdCampaign ID
creatorKeyCreator identifier selected by the user

Signature Verification

Verify that the request came from PlayCamp using the X-Webhook-Signature header.
import { verifyWebhook } from '@playcamp/node-sdk';

app.post('/webhooks/playcamp', express.raw({ type: 'application/json' }), (req, res) => {
  const result = verifyWebhook({
    payload: req.body.toString(),
    signature: req.headers['x-webhook-signature'],
    secret: process.env.WEBHOOK_SECRET,
  });

  if (!result.valid) {
    return res.status(401).json({ error: result.error });
  }

  for (const event of result.payload.events) {
    if (event.event === 'sponsor.created') {
      // Store userId and creatorKey match
      console.log(`User ${event.data.userId} → Creator ${event.data.creatorKey}`);
    }
  }

  res.json({ received: true });
});
When a boost is removed, a sponsor.ended event is triggered with the same data structure (userId, campaignId, creatorKey).
Details: Webhook Events

Step 4: Register Payments (Game Server)

When an in-game purchase occurs, send the payment information to PlayCamp. Registered payments are automatically attributed to the user’s boosted creator.
curl -X POST "https://sandbox-sdk-api.playcamp.io/v1/server/payments" \
  -H "Authorization: Bearer ak_server_xxx:secret" \
  -H "Content-Type: application/json" \
  -d '{
    "userId": "game_user_id",
    "transactionId": "txn_abc123",
    "productId": "gem_pack_100",
    "productName": "100 Gem Pack",
    "amount": 9900,
    "currency": "KRW",
    "platform": "Android",
    "distributionType": "MOBILE_STORE",
    "purchasedAt": "2024-01-15T10:30:00.000Z"
  }'
Payments can be registered individually or in bulk (up to 1,000 at once). For refunds, call POST /payments/{transactionId}/refund.
Details: Payment Registration

Step 5: Settlement

Monthly settlement is processed based on payment data.
  1. Revenue Close — Payment data aggregated at end of each month
  2. Revenue Reconciliation — Match PlayCamp settlement data with your internal records
  3. Settlement Payment — Payment after reconciliation confirmation
  4. Creator Settlement — PlayCamp distributes revenue to creators
Details: Settlement