【2026.8月度】Appsアップデート情報

サンプルJSONデータ(Apps API)

Apps APIおよびWebhookで使用される代表的なJSONサンプルを掲載しています。
実際の実装時の参考にしてください。

Webhook署名検証のサンプル(Node.js)

署名検証では、JSONへ変換する前の生のリクエストボディを使用します。Webhookシークレットは環境変数APPS_WEBHOOK_SECRETなどで管理し、ソースコードへ直接記述しないでください。

const crypto = require('crypto');

// 生のボディが必要なため express.raw を使う
app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => {
  const header = req.get('Apps-Signature') || '';
  const parts = header.split(',').map((s) => s.split('='));
  const timestamp = Number((parts.find((p) => p[0] === 't') || [])[1]);
  const signatures = parts.filter((p) => p[0] === 'v1').map((p) => p[1]);
  if (!timestamp || Math.abs(Date.now() / 1000 - timestamp) > 300) return res.sendStatus(400);
  const expected = crypto.createHmac('sha256', process.env.APPS_WEBHOOK_SECRET).update(String(timestamp) + '.' + req.body.toString('utf8')).digest('hex');
  const valid = signatures.some((sig) => sig.length === expected.length && crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected)));
  if (!valid) return res.sendStatus(400);
  const event = JSON.parse(req.body.toString('utf8'));
  res.sendStatus(200);
});

顧客新規作成イベント(customer)

{
  "id": "58886defd811bdbadec04bafd19d9f58",
  "event": "customer",
  "mode": "live",
  "create_at": "2025-02-01T10:07:31Z",
  "customer": {
    "customer_id": "3a7f0e8f97955aa4178902e17371f1b5",
    "email": "taro@apps.com",
    "name": "アップス太郎",
    "company": "テスト会社",
    "phone_number": "+818018821111"
  }
}

申し込み完了イベント(application)

{
  "id": "fdda24b899e5b42c571f6b435259b037",
  "event": "application",
  "mode": "live",
  "create_at": "2025-01-28T11:26:16Z",
  "contract_id": "310ede6b6c34c1365868e1f18099baf6",
  "customer": {
    "customer_id": "3a7f0e8197955aa4178902e17371f1b5",
    "email": "taro@apps.com",
    "name": "アップス太郎",
    "company": "テスト会社",
    "phone_number": "+818018821111"
  },
  "plan": {
    "payment_type": 4,
    "name": "アップス月額プラン"
  }
}

決済成功イベント(payment)

{
  "id": "00000000000000000000000000000001",
  "event": "payment",
  "mode": "live",
  "create_at": "2026-08-04T00:00:00Z",
  "contract_id": "00000000000000000000000000000002",
  "payment_id": "00000000000000000000000000000003",
  "customer": {
    "customer_id": "00000000000000000000000000000004",
    "email": "customer@example.com"
  },
  "payment": {"platform_id": 4, "price": 1000},
  "plan": {"payment_type": 4, "name": "サンプルプラン"}
}

返金成功イベント(refund)

{
  "id": "00000000000000000000000000000011",
  "event": "refund",
  "mode": "live",
  "create_at": "2026-08-04T00:00:00Z",
  "contract_id": "00000000000000000000000000000012",
  "payment_id": "00000000000000000000000000000013",
  "customer": {
    "customer_id": "00000000000000000000000000000014",
    "email": "customer@example.com"
  },
  "payment": {"platform_id": 4, "price": 1000, "refund_id": "refund-example-001"},
  "plan": {"payment_type": 4, "name": "サンプルプラン"}
}

決済エラーイベント(payment_error)

{
  "id": "00000000000000000000000000000021",
  "event": "payment_error",
  "create_at": "2026-08-04T00:00:00Z",
  "plan": {"payment_type": 4, "name": "サンプルプラン"},
  "platform_id": 4,
  "email": "customer@example.com",
  "name": "サンプルユーザー",
  "message": "決済処理に失敗しました"
}

かご落ちイベント(abandoned)

{
  "id": "00000000000000000000000000000031",
  "event": "abandoned",
  "create_at": "2026-08-04T00:00:00Z",
  "cart_abandoned_list": [
    {
      "email": "customer1@example.com",
      "name": "サンプルユーザー1",
      "plan": {"payment_type": 1, "name": "サンプル商品"}
    },
    {
      "email": "customer2@example.com",
      "name": "サンプルユーザー2",
      "plan": {"payment_type": 1, "name": "サンプル商品"}
    }
  ]
}

解約完了イベント(canceled)

{
  "id": "fdda24b899e5b42c571f6b435259b037",
  "event": "canceled",
  "mode": "live",
  "create_at": "2025-02-01T10:07:31Z",
  "contract_id": "310ede6b6c34c1365868e1f18099baf6",
  "customer": {
    "customer_id": "3a7f0e8197955aa4178902e17371f1b5",
    "email": "taro@apps.com",
    "name": "アップス太郎",
    "company": "テスト会社",
    "phone_number": "+818018821111"
  },
  "plan": {
    "payment_type": 4,
    "name": "アップス月額プラン"
  }
}

関連情報

  • 各イベントの詳細なデータ構造については Webhookデータ構造 をご覧ください。
  • APIの基本的な使い方は API設定方法 を参照してください。

Apps APIメニュー

メニュー説明
API設定方法アクセストークンの取得やAPI認証方法
APIエンドポイント一覧顧客情報・決済情報取得のためのAPI仕様
登録ページAPI登録ページのプラン登録・更新・削除と契約者一覧の取得
Discord連携APIDiscordのロール・チャンネル管理(カテゴリ指定 parent_id 対応)
APIレスポンスデータ構造APIから取得できるデータの詳細
共通レスポンス・エラーAPIの共通レスポンス形式とエラーコード(400等)の見方
Webhookの設定方法イベント通知を受け取るためのWebhook設定方法
Webhookデータ構造Webhookで通知されるデータ形式
サンプルJSONデータAPI/Webhookで利用可能なサンプルデータ
API変更履歴 / リリースノートApps APIの更新、新機能、仕様変更を時系列で確認できます。
サポートコミュニティ準備中
よくあるご質問準備中