Files
gitlab-instance-0a899031_no…/lib/sdk
2026-03-10 01:35:37 -05:00
..
2026-03-10 01:35:37 -05:00
2026-03-10 01:35:37 -05:00
2026-03-10 01:35:37 -05:00
2026-03-10 01:35:37 -05:00
2026-03-10 01:35:37 -05:00
2026-03-10 01:35:37 -05:00

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 即公开访问地址