电商文档站搭建
本教程将教你如何使用 VitePress 搭建一个专业的电商平台文档站,包含商品文档、API 文档、开发者指南和帮助中心。
项目概述
功能特性
| 功能 | 说明 |
|---|---|
| 商品文档中心 | 商品分类、搜索、详情页 |
| API 文档 | RESTful API 参考、SDK 示例 |
| 帮助中心 | FAQ、工单入口、使用教程 |
| 开发者指南 | 接入指南、Webhook、回调通知 |
| 多版本管理 | API v1/v2 版本切换 |
| 国际化 | 中英文切换 |
站点结构
docs/
├── .vitepress/
│ ├── config.mts # 配置文件
│ └── theme/
│ ├── index.ts # 主题入口
│ ├── components/ # 自定义组件
│ │ ├── ApiEndpoint.vue # API 端点组件
│ │ ├── SdkExample.vue # SDK 代码示例
│ │ ├── CallbackFlow.vue # 回调流程图
│ │ └── HelpSearch.vue # 帮助搜索
│ └── composables/
│ └── useApiSpec.ts # API 数据加载
├── index.md # 首页
├── products/ # 商品文档
│ ├── index.md
│ ├── payment.md # 支付产品
│ └── logistics.md # 物流产品
├── api/ # API 文档
│ ├── index.md
│ ├── v2/
│ │ ├── payment.md # 支付 API
│ │ ├── order.md # 订单 API
│ │ └── refund.md # 退款 API
│ └── v1/ # 旧版 API
├── guide/ # 开发者指南
│ ├── quickstart.md # 快速接入
│ ├── webhook.md # Webhook 配置
│ └── callback.md # 回调通知
└── help/ # 帮助中心
├── index.md
├── faq.md
└── contact.md # 联系支持配置文件
多版本 API 侧边栏
ts
// docs/.vitepress/config.mts
import { defineConfig } from 'vitepress'
export default defineConfig({
title: '电商平台文档',
description: '完整的电商 API 文档和开发者指南',
head: [
['meta', { name: 'keywords', content: '电商API,支付API,物流API,开发者文档' }]
],
themeConfig: {
nav: [
{ text: '首页', link: '/' },
{ text: '商品文档', link: '/products/' },
{ text: 'API 文档', link: '/api/v2/' },
{ text: '开发者指南', link: '/guide/quickstart' },
{ text: '帮助中心', link: '/help/' }
],
sidebar: {
'/products/': [
{
text: '产品文档',
items: [
{ text: '产品概览', link: '/products/' },
{ text: '支付产品', link: '/products/payment' },
{ text: '物流产品', link: '/products/logistics' }
]
}
],
'/api/v2/': [
{
text: 'API v2(推荐)',
items: [
{ text: 'API 概览', link: '/api/v2/' },
{
text: '支付接口',
items: [
{ text: '统一下单', link: '/api/v2/payment' },
{ text: '订单查询', link: '/api/v2/order' },
{ text: '申请退款', link: '/api/v2/refund' }
]
}
]
},
{
text: '旧版 API',
items: [
{ text: 'API v1(已弃用)', link: '/api/v1/' }
]
}
],
'/guide/': [
{
text: '开发者指南',
items: [
{ text: '快速接入', link: '/guide/quickstart' },
{ text: 'Webhook 配置', link: '/guide/webhook' },
{ text: '回调通知', link: '/guide/callback' }
]
}
],
'/help/': [
{
text: '帮助中心',
items: [
{ text: '常见问题', link: '/help/faq' },
{ text: '联系支持', link: '/help/contact' }
]
}
]
}
}
})自定义组件
API 端点组件
vue
<!-- docs/.vitepress/components/ApiEndpoint.vue -->
<script setup lang="ts">
interface Props {
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'
path: string
description?: string
deprecated?: boolean
}
const props = withDefaults(defineProps<Props>(), {
description: '',
deprecated: false
})
const methodColors: Record<string, string> = {
GET: 'get',
POST: 'post',
PUT: 'put',
DELETE: 'delete',
PATCH: 'patch'
}
</script>
<template>
<div class="api-endpoint" :class="{ deprecated }">
<div class="endpoint-header">
<span class="method" :class="methodColors[method]">{{ method }}</span>
<code class="path">{{ path }}</code>
<span v-if="deprecated" class="badge deprecated-badge">已弃用</span>
</div>
<p v-if="description" class="endpoint-desc">{{ description }}</p>
<slot />
</div>
</template>
<style scoped>
.api-endpoint {
border: 1px solid var(--vp-c-divider);
border-radius: 8px;
padding: 16px;
margin: 16px 0;
}
.api-endpoint.deprecated {
opacity: 0.7;
border-style: dashed;
}
.endpoint-header {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 8px;
}
.method {
font-size: 12px;
font-weight: 700;
padding: 2px 8px;
border-radius: 4px;
text-transform: uppercase;
color: white;
}
.method.get { background: var(--vp-c-green-1); }
.method.post { background: var(--vp-c-brand-1); }
.method.put { background: var(--vp-c-warning-1); }
.method.delete { background: var(--vp-c-danger-1); }
.method.patch { background: #8b5cf6; }
.path {
font-family: var(--vp-font-family-mono);
font-size: 14px;
}
.badge.deprecated-badge {
font-size: 11px;
padding: 1px 6px;
border-radius: 4px;
background: var(--vp-c-warning-soft);
color: var(--vp-c-warning-1);
}
</style>SDK 代码示例组件
vue
<!-- docs/.vitepress/components/SdkExample.vue -->
<script setup lang="ts">
interface Props {
language: string
}
defineProps<Props>()
</script>
<template>
<div class="sdk-example">
<slot />
</div>
</template>首页配置
markdown
---
layout: home
hero:
name: "电商文档"
text: "开发者平台"
tagline: 快速接入支付、物流等电商核心能力
actions:
- theme: brand
text: 快速接入
link: /guide/quickstart
- theme: alt
text: API 文档
link: /api/v2/
features:
- title: 支付 API
details: 覆盖微信支付、支付宝、银联等主流支付方式
link: /api/v2/payment
icon: 💳
- title: 物流 API
details: 对接主流快递公司,实现自动下单和轨迹追踪
link: /products/logistics
icon: 📦
- title: Webhook
details: 实时接收订单状态变更通知,确保业务同步
link: /guide/webhook
icon: 🔔
- title: 沙箱环境
details: 提供完整的模拟环境,零成本调试接口
link: /guide/quickstart
icon: 🧪
---API 文档示例
统一下单接口
markdown
---
title: 统一下单 API
---
# 统一下单
创建一笔支付订单,获取支付凭证。
<ApiEndpoint
method="POST"
path="/api/v2/payments/create"
description="创建支付订单"
/>
### 请求参数
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| out_trade_no | string | 是 | 商户订单号(最长 32 位) |
| total_fee | integer | 是 | 订单金额,单位:分 |
| subject | string | 是 | 商品标题 |
| body | string | 否 | 商品描述 |
| notify_url | string | 是 | 回调通知地址 |
| pay_type | string | 是 | 支付方式:`wechat` / `alipay` / `unionpay` |
| expire_time | string | 否 | 过期时间,默认 30 分钟 |
### 请求示例
\`\`\`bash
curl -X POST https://api.example.com/api/v2/payments/create \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"out_trade_no": "ORDER20260331001",
"total_fee": 100,
"subject": "测试商品",
"notify_url": "https://your-domain.com/callback",
"pay_type": "wechat"
}'
\`\`\`
### 响应参数
| 参数 | 类型 | 说明 |
|------|------|------|
| code | integer | 状态码,0 表示成功 |
| data.pay_url | string | 支付链接(H5/PC) |
| data.pay_params | object | JSAPI 支付参数(小程序) |
| data.trade_no | string | 平台订单号 |
### 响应示例
\`\`\`json
{
"code": 0,
"data": {
"trade_no": "TP2026033112345",
"pay_url": "https://pay.example.com/checkout?token=xxx",
"pay_params": {
"appId": "wx1234567890",
"timeStamp": "1711852800",
"nonceStr": "abc123",
"package": "prepay_id=wx20170101",
"signType": "RSA",
"paySign": "xxx"
}
}
}
\`\`\`
::: warning 注意事项
- `out_trade_no` 必须全局唯一,重复提交将返回错误
- `total_fee` 最小值为 1(即 0.01 元)
- 生产环境请使用 HTTPS 协议
:::帮助中心示例
FAQ 页面
markdown
---
title: 常见问题
---
# 常见问题
## 支付相关
### Q: 支持哪些支付方式?
A: 目前支持以下支付方式:
| 支付方式 | 场景 | 说明 |
|---------|------|------|
| 微信支付 | 小程序、H5、PC 扫码 | 最常用的支付方式 |
| 支付宝 | H5、PC | 覆盖支付宝用户 |
| 银联支付 | PC、H5 | 适合大额支付场景 |
### Q: 退款多久到账?
A: 不同支付方式的退款到账时间:
| 支付方式 | 到账时间 |
|---------|---------|
| 微信支付 | 1-3 个工作日 |
| 支付宝 | 即时到 24 小时 |
| 银联支付 | 3-5 个工作日 |
### Q: 如何处理支付失败?
1. 检查 API Key 是否正确
2. 确认订单金额是否符合限制
3. 查看 [错误码文档](/api/v2/#error-codes) 定位问题
4. 如仍无法解决,请[联系技术支持](/help/contact)
## 接入相关
### Q: 沙箱环境如何使用?
1. 登录控制台创建沙箱应用
2. 获取沙箱环境的 API Key
3. 使用沙箱地址 `https://sandbox-api.example.com`
4. 测试通过后切换为生产环境
::: tip 提示
沙箱环境支持模拟各种支付场景(成功、失败、超时等)。
:::进阶挑战
| 挑战 | 难度 | 说明 |
|---|---|---|
| 实现 API Playground | ⭐⭐⭐⭐ | 嵌入在线 API 测试工具 |
| 添加 Webhook 调试面板 | ⭐⭐⭐ | 可视化查看 Webhook 推送记录 |
| 多语言 API 文档 | ⭐⭐⭐⭐ | 中英文 API 文档切换 |
| 生成 SDK 文档 | ⭐⭐⭐⭐⭐ | 从 OpenAPI 规范自动生成 SDK 文档 |