SDK 使用说明
ZPay 支付网关、PocketBase 数据库、MinIO 对象存储,配置成 SDK 随时调用。复制自 digital 项目。
环境变量
在 .env.local 中配置:
# 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
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
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
import { uploadBuffer, generateObjectKey } from "@/lib/sdk";
// 生成对象键
const objectKey = generateObjectKey("jpg");
// 上传
const { url } = await uploadBuffer(
Buffer.from(fileArrayBuffer),
objectKey,
"image/jpeg"
);
// url 即公开访问地址