- 版权类型
- 原创
- 插件中文名称
- CyPay
- 插件英文名称
- CyPay
- 支持的核心(服务端)
- Paper
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 1.21
扫码支付 · 玩家自己扫码,服务器自己到账
收款码地图 / 订单超时 / 自动到账 / 累充奖励 / 订单补发
你是不是也遇到过
- 玩家充值要加 QQ,你手动发点券,半夜也要爬起来
- 发多发少、忘了发,最后自己对不上账
- 想搞累充活动,只能手工记表格
- 别家充值插件按笔抽成,还要再买“高级版”
服主 说:
CyPay 做的就是把这条链路自动化。
它到底是怎么工作的
- 你在
config.yml填微信 / 支付宝的收款链接 - 玩家执行
/cp point 10 wechat下单 - 插件创建订单,并把收款码渲染成一张**地图**
- 这张地图会被放进玩家**主手**(手上有物品就先挪到背包空位)
- 玩家举着地图,用手机扫屏幕上的二维码付款
- 手机上的监听 App 发现到账,把「金额 / 渠道 / 时间」通过 TCP 发到服务器
- 服务器按「金额 + 渠道 + 时间窗」匹配订单
- 匹配成功:标记订单成功、累充入账、执行发点券指令、回收地图
不是把二维码摆在墙上,而是给玩家一张「举在手上」的地图。
⏱ 订单生命周期
- 下单:同一玩家同时只能有一笔进行中订单
- 独占:同金额 + 同渠道只能有一单;不同渠道同金额可以并存
- 超时:默认 60 秒未支付,订单取消并回收地图
- 宽限:超时后 30 秒内到账仍然认;再晚就进待认领
- 取消:玩家按 Q 丢弃地图即取消
- 掉线 / 死亡:订单中断,地图回收
- 未匹配:App 没带渠道且有多笔候选时,记为待认领,由管理员
/cp fix分发
功能清单
- 两种渠道:微信、支付宝
- 收款码地图:自动生成 / 更新,地图 ID 不变
- 金额范围:单笔 1~1000 元可配
- 兑换比例:1 元 = N 点券,可配
- 发奖指令:到账后执行控制台指令,支持
%player%%points%%amount%%total% - 累充奖励:按累计金额档位自动发放
- 充值排行榜:
/cp top - 订单补发:待认领列表 +
/cp fix - 安全防护:IP 白名单、密钥错误拉黑、频繁开单限制、回调限流
- PAPI 变量:
%cypay_total%累计充值
运行环境
- 服务端:Paper 1.21.11
- Java:21 及以上
- 硬依赖:无(SQLite 驱动由 Paper 自动加载)
- 软依赖:PlaceholderAPI(变量)、CraftEngine(界面物品材质)
- 额外需要:一台安卓手机 + CyPayApp 监听端
没有安卓端收不到到账通知,这是前提。
前置组件
安装步骤
1. 服务端配置
- 把
CyPay-1.7.2.jar放进plugins/,重启 - 填
qrcodes.wechat(wxp://开头)或qrcodes.alipay(https://qr.alipay.com/开头) - 设置
callback.port(默认 19999)和callback.key - 在防火墙 / 安全组放行该端口
- 执行
/cypay reload,控制台会提示「已生成收款码地图(ID xx)」
2. 手机端配置
- 服务器执行
/cp ip,查看可用的局域网 IP 和端口 - 打开 CyPayApp,填入 IP、端口、密钥(与 config 一致)
- 授予通知读取权限,保持后台运行
- App 连接成功时,控制台会打印「App 连接成功 来自 x.x.x.x」
3. 测试
- 用
/cp testpay 1 wechat模拟一笔到账,先确认发奖链路通 - 再
/cp point 1 wechat真扫一笔 - 看是否自动到账、点券到账、地图回收
命令
/cp point <金额> [wechat|alipay]—— 下单,地图发到主手/cp open <wechat|alipay>—— 调试:只给收款码地图,不建订单/cp log <状态|玩家> [玩家] [页码]—— 查询充值记录/cp logs [状态] [页码]—— 全服充值记录/cp top [页码]—— 充值排行榜/cp reward—— 累充奖励界面/cp reward log [玩家] [页码]—— 领取记录/cp reward logs [页码]—— 全服领取记录/cp consume <add|take|set> <玩家> <金额>—— 调整累充额度/cp payments [页码]—— 待认领到账/cp payments del <编号>—— 删除待认领/cp payments clear—— 清空待认领(需二次确认)/cp fix <玩家> <编号>—— 把待认领分发给玩家/cp blacklist—— 查看黑名单/cp blacklist add|remove <ip>—— 拉黑 / 解禁/cp ip—— 查看回调 IP 和端口/cp testpay <金额>—— 模拟到账/cp reload—— 重载配置/cp reload reward—— 只重载累充奖励
权限
cypay.point—— 下单充值(默认 OP,记得给玩家组)cypay.open—— 调试收款码地图cypay.log—— 查自己的记录cypay.log.others—— 查他人 / 全服记录cypay.top—— 排行榜cypay.reward—— 累充界面cypay.reward.logs—— 全服领取记录cypay.consume—— 调整累充额度cypay.reload—— 重载cypay.admin—— 以上全部
配置示例
YAML:
qrcodes:
wechat: "" # wxp:// 开头
alipay: "" # https://qr.alipay.com/ 开头
point:
enabled: true
timeout: 60 # 订单有效期(秒)
grace: 30 # 超时后宽限(秒)
min: 1
max: 1000
rate: 10 # 1 元 = 10 点券
commands:
- "points give %player% %points%"
callback:
port: 19999
key: "change-me" # 必须与 App 一致
security:
whitelist:
enabled: false
ips: ["127.0.0.1"]
blacklist:
enabled: true
window: 600
max-failures: 5
order-abuse:
enabled: true
window: 300
max-unpaid: 3
ban-duration: 1800
rate-limit:
per-minute: 60
累充奖励
reward.yml 按累计充值金额配置档位,达到后自动发放;玩家用 /cp reward 查看,/cp reward log 查记录,/cp consume 可调额度。
PAPI 变量
%cypay_total%—— 玩家累计充值金额
常见问题
Q:下单后手上多了张地图?
那是收款码地图,举在手上用手机扫。手上有物品时,插件会先把它挪到背包空位。
Q:地图放不进主手?
背包全满时会提示
inventory-full,清出空位再下单。Q:付款了但没到账?
依次检查:App 是否在线、
callback.port 是否放行、密钥是否一致、/cp ip 的地址是否正确。Q:控制台说「未匹配的到账」?
App 没带渠道、且同时有多笔同金额订单时无法判定归属。
用
/cp payments 看编号,再 /cp fix <玩家> <编号> 分发。Q:订单超时了但钱到了?
超时后还有 30 秒宽限期,宽限内到账仍会认;超过就进待认领。
Q:二维码内容不对?
微信必须是
wxp:// 链接,支付宝必须是 https://qr.alipay.com/ 链接;改完 /cypay reload。Q:会抽成吗?
不会。插件不收手续费,钱直接进你的收款账户;通道自身费率以官方为准。
文档
license.mc33.top/docs/cypay
获取完整版
爱发电 · CyPay
一次购买,长期使用