# SDK 使用说明 ZPay 支付网关、PocketBase 数据库、MinIO 对象存储,配置成 SDK 随时调用。复制自 digital 项目。 ## 环境变量 在 `.env.local` 中配置: ```bash # PocketBase NEXT_PUBLIC_POCKETBASE_URL=https://pocketbase.hackrobot.cn POCKETBASE_JOIN_COLLECTION=solan POCKETBASE_EMAIL=admin@example.com # Admin 登录(可选,用于 createRecord 403 时重试) POCKETBASE_PASSWORD=xxx # ZPay 支付 PAYMENT_API_URL=http://127.0.0.1:8700 # 开发;生产用 https://api.hackrobot.cn PAYMENT_PROVIDER=zpay PAYMENT_DEFAULT_AMOUNT=80 PAYMENT_DEFAULT_TYPE=meetup ZPAY_SUBMIT_URL=https://zpayz.cn/submit.php # MinIO MINIO_ENDPOINT=minioweb.hackrobot.cn MINIO_PORT=9035 MINIO_USE_SSL=false MINIO_BUCKET=hackrobot MINIO_ACCESS_KEY=xxx MINIO_SECRET_KEY=xxx MINIO_UPLOAD_PREFIX=joins ``` ## 使用示例 ### PocketBase ```ts import { pbLogin, pbRegister, pbSaveAuth, pbLogout, getStoredUserEmail, createRecord, } from "@/lib/sdk"; // 客户端:登录 const { token, record } = await pbLogin("user@example.com", "password"); pbSaveAuth(token, record); // 客户端:注册 const result = await pbRegister("user@example.com", "pass", "pass"); pbSaveAuth(result.token, result.record); // 客户端:登出 pbLogout(); // 客户端:获取当前用户 const email = getStoredUserEmail(); // 服务端:创建记录 await createRecord("solan", { nickname: "张三", reason: "想加入" }); ``` ### ZPay ```ts import { createPayOrder, getOrderStatus, buildPayHtml } from "@/lib/sdk"; // 创建订单 const { params, payUrl } = await createPayOrder({ user_id: "user123", return_url: "https://yoursite.com/paid", total_fee: 80, // 分 type: "meetup", channel: "alipay", }); // 查询支付状态 const { paid } = await getOrderStatus("out_trade_no_xxx"); // 构建跳转 HTML const html = buildPayHtml(payUrl, params); ``` ### MinIO ```ts import { uploadBuffer, generateObjectKey } from "@/lib/sdk"; // 生成对象键 const objectKey = generateObjectKey("jpg"); // 上传 const { url } = await uploadBuffer( Buffer.from(fileArrayBuffer), objectKey, "image/jpeg" ); // url 即公开访问地址 ```