初始化 SDK

Booking Renderer SDK(@seatmap.pro/renderer)是在售票页面运行的可嵌入选座组件。它连接 Booking API,通过 WebGL 渲染场地布局,并在顾客选中或取消选择座位时触发回调。

前提条件

  • Node.js 18+,推荐 LTS 版本。
  • npm、yarn 或 pnpm 包管理器。
  • 按快速入门指南创建活动并发布座位图。
  • 从 Editor 管理面板的 Organization Settings 获取 Public API Key。

第 1 步:安装包

npm install @seatmap.pro/renderer
yarn add @seatmap.pro/renderer
pnpm add @seatmap.pro/renderer

包详情:npm 上的 @seatmap.pro/renderer

第 2 步:添加容器元素

渲染器挂载到页面 DOM 元素中,请明确设置其尺寸:

<div id="seatmap-root" style="width: 100%; height: 600px;"></div>

渲染器会填满容器。通过 CSS 控制座位图在页面布局中的大小。

第 3 步:初始化渲染器

import { SeatmapBookingRenderer } from '@seatmap.pro/renderer';

const container = document.getElementById('seatmap-root')!;

const renderer = new SeatmapBookingRenderer(container, {
  publicKey: 'YOUR_PUBLIC_API_KEY',
  onSeatSelect: (seat) => {
    console.log('selected', seat);
  },
  onSeatDeselect: (seat) => {
    console.log('deselected', seat);
  },
});

await renderer.loadEvent('YOUR_EVENT_ID');

必需值:

第 4 步:处理选座

每当顾客点击可用座位,onSeatSelect 回调就会触发。用它将选择同步到购物车或后端。

生产票务系统推荐逐次点击锁定:选中时立即在后端锁定座位,取消选择时解锁。

const renderer = new SeatmapBookingRenderer(container, {
  publicKey: 'YOUR_PUBLIC_API_KEY',
  onSeatSelect: async (seat) => {
    await fetch('/api/cart/lock', {
      method: 'POST',
      body: JSON.stringify({ seatId: seat.id }),
    });
  },
  onSeatDeselect: async (seat) => {
    await fetch('/api/cart/unlock', {
      method: 'POST',
      body: JSON.stringify({ seatId: seat.id }),
    });
  },
});

完整回调和设置参考见 Renderer 规范。

在线体验

打开 Renderer Playground,无需配置即可交互体验 SDK。

CodePen 也提供完整可运行示例。

故障排查

容器不可见:渲染器需要宽高均非零的容器。若无任何内容,检查是否明确设置了 CSS 尺寸。

CORS 错误:渲染器从 booking.seatmap.pro 获取数据。使用代理或自定义域名时,确保服务器向 Booking API 转发请求时携带正确的 Origin 头。

未显示座位:检查活动是否已为座位分配价格。渲染器仅显示至少有一个价格分配的座位。

深入了解

输入功能、设置、端点或 SDK 方法。