收银页(/pay/{token})
- 三种付款方式按设备自动切换:桌面端扫码(由 RECEIVE_LINK 服务端生成收款二维码,
不再需要上传图片)、手机端一键唤起币安 App(通用链接)、手动按 UID 转账兜底
- 三种到账确认方式(唯一金额 / 备注码 / 回填订单编号)在网关内始终同时生效
体验页(/demo,DEMO_ENABLED 开启,默认关闭)
- 选择金额档位与币种一键下单;可选择要体验的到账确认方式,收银页引导随之变化,
结果页显示实际命中方式;按 IP 限流,金额仅限 DEMO_AMOUNTS 档位;根路径跳转 /demo
反向代理
- 新增 TRUST_PROXY:开启后限流按 CF-Connecting-IP / X-Real-IP / X-Forwarded-For 取真实访客 IP
部署
- docs/deploy.md:VPS 选型(须能直连币安 API)、systemd、Caddy、Cloudflare Tunnel
- deploy/ 下提供 bpaygate.service、Caddyfile、cloudflared.yml 模板
其他
- 新增依赖 github.com/skip2/go-qrcode(纯 Go)
- 新增体验页与三模式的测试用例
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
59 lines
2.4 KiB
Bash
59 lines
2.4 KiB
Bash
# ========= BinancePayTool 配置示例 =========
|
||
# 复制为 config.env 后填写。config.env 已被 .gitignore 排除,勿提交。
|
||
# 同名环境变量优先于本文件。
|
||
|
||
# 监听地址与对外基础 URL(收银页链接用它拼接)
|
||
LISTEN=0.0.0.0:8080
|
||
BASE_URL=http://127.0.0.1:8080
|
||
|
||
# 商户接入密钥:商户调用 API 与校验回调签名共用。
|
||
# 生成方法: ./bpaygate -gen-key
|
||
API_AUTH_KEY=
|
||
|
||
# ---- 币安(收款账号)----
|
||
# 现货 API Key,只勾选「允许读取」,强烈建议绑定服务器 IP 白名单
|
||
BINANCE_API_KEY=
|
||
BINANCE_API_SECRET=
|
||
# 你的币安 UID(App 头像页可见),用于收银页展示与方向判断
|
||
BINANCE_UID=
|
||
# 测试时可指向 mock 服务,生产留默认
|
||
BINANCE_API_BASE=https://api.binance.com
|
||
|
||
# ---- 收银页展示 ----
|
||
# 推荐:收款二维码解码出的链接(币安 App「收款」二维码内容,https://app.binance.com/... 形式)。
|
||
# 配置后:桌面端显示服务端生成的二维码;手机端显示「打开币安 App」一键唤起按钮。
|
||
RECEIVE_LINK=
|
||
# 可选:改用静态二维码图片文件(与 RECEIVE_LINK 二选一,优先此项;只提供扫码不提供唤起)
|
||
QR_IMAGE=
|
||
# 可选:额外展示的收款邮箱(不填则只展示 UID)
|
||
RECEIVE_EMAIL=
|
||
|
||
# ---- 体验页(对外演示用,默认关闭)----
|
||
# 开启后 /demo 提供体验下单页,根路径自动跳转过去;金额只允许下列档位,按 IP 限流 5 次/分钟
|
||
DEMO_ENABLED=false
|
||
DEMO_AMOUNTS=0.5,1
|
||
|
||
# ---- 订单与匹配 ----
|
||
# 允许的收款币种(逗号分隔)
|
||
CURRENCIES=USDT,USDC
|
||
# 订单有效期(秒),可被下单请求覆盖
|
||
ORDER_TTL=900
|
||
# 过期宽限(秒):过期后这段时间内到账的精确金额仍自动确认
|
||
EXPIRED_GRACE=1800
|
||
# 唯一金额小数位(实测币安 Pay 支持至少 4 位)
|
||
AMOUNT_DECIMALS=4
|
||
# 尾数方向:add=在基础金额上加尾数(默认,商户实收略多);sub=减尾数
|
||
SUFFIX_MODE=add
|
||
# 尾数冷却(秒):订单结束后该金额多久内不复用
|
||
SUFFIX_COOLDOWN=86400
|
||
# 币安流水轮询间隔(秒)。接口权重 3000/次、UID 限额 180000/分钟,最低可到 1
|
||
POLL_INTERVAL=4
|
||
|
||
# ---- 反向代理 ----
|
||
# 放在 Caddy/Nginx/Cloudflare 之后时开启,限流按真实访客 IP(CF-Connecting-IP / X-Real-IP / X-Forwarded-For)
|
||
TRUST_PROXY=false
|
||
|
||
# ---- 存储与日志 ----
|
||
DB_PATH=./bpaygate.db
|
||
LOG_LEVEL=info
|