102 lines
2.1 KiB
Markdown
102 lines
2.1 KiB
Markdown
# 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 即公开访问地址
|
|
```
|