设定文件
plugins/CloudPay/config.yml 的默认内容如下,每一项都有注解。改完输入 /cpay reload(数据库设定要重启)。消息文字在 messages.yml。
设定写错时,后台会用一行说明「哪个键、写了什么、怎么改」,例如:
config.yml:recharge.bonus 的「满100: 5」看不懂(写法:金额: 百分比,例 100: 5)
config.yml
# ==================================================================
# 云支付 CloudPay —— 支付宝 / 微信官方接口 · 游戏内扫码自动充值
#
# · 钱直接进入「你自己的」支付宝 / 微信商户账户,插件不经手、不抽成
# · 只收官方手续费(以支付宝 / 微信签约费率为准,一般约 0.6%)
# · 不需要公网地址:插件会主动向支付宝 / 微信查询付款结果
# · 改完后输入 /cpay reload 生效;/cpay admin check 检测支付配置是否正确
# ==================================================================
# 服务器名称:显示在玩家的支付宝 / 微信账单里
server-name: '我的服务器'
# 多个服务器共用同一个 MySQL 时用来区分订单是哪个服务器建立的(留空 = 自动:文件夹名:端口)
server-id: ''
# ------------------------------------------------------------------
# 支付宝(当面付 · 扫码支付)
# 申请:支付宝开放平台 open.alipay.com → 创建网页/移动应用 → 添加「当面付」能力并签约 → 上线
# 密钥:开放平台 → 开发设置 → 接口加签方式 选 RSA2,用「支付宝开放平台密钥工具」生成应用私钥
# 把文件放进 plugins/CloudPay/keys/,或直接 把一整行密钥内容贴在下面
# ------------------------------------------------------------------
alipay:
enabled: false
# 应用的 APPID(16 位数字)
app-id: ''
# 应用私钥(自己生成的那份私钥,不要外流)
private-key: 'keys/alipay_private_key.txt'
# 密钥模式:key = 公钥模式(推荐,最简单);cert = 公钥证书模式
mode: key
# 公钥模式:「支付宝公钥」(开放平台上传应用公钥后,页面显示的支付宝公钥;不是应用公钥)
alipay-public-key: 'keys/alipay_public_key.txt'
# 证书模式:开放平台下载的三个证书
app-cert: 'keys/appCertPublicKey.crt'
alipay-cert: 'keys/alipayCertPublicKey_RSA2.crt'
root-cert: 'keys/alipayRootCert.crt'
# 沙箱测试:用开放平台「沙箱应用」的 APPID / 密钥 + 沙箱买家账号付款,不扣真钱
sandbox: false
# ------------------------------------------------------------------
# 微信支付(Native 支付 · 扫码)
# 申请:微信支付商户平台 pay.weixin.qq.com → 产品中心 → 开通「Native 支付」→ AppID 账号管理 绑定一个 AppID
# 证书:账户中心 → API 安全 → 申请 API 证书(得到 apiclient_key.pem / apiclient_cert.pem),设置 APIv3 密钥
# ------------------------------------------------------------------
wechat:
enabled: false
# 与商户号绑定的 AppID(公众号 / 小程序 / 移动应用,wx 开头)
app-id: ''
# 商户号
mch-id: ''
# APIv3 密钥(自己设置的 32 位字符)
api-v3-key: ''
# 商户 API 私钥
private-key: 'keys/apiclient_key.pem'
# 商户 API 证书(用来自动读取证书序列号);或直接在 serial-no 填序列号
cert: 'keys/apiclient_cert.pem'
serial-no: ''
# 微信支付公钥(2024 年后开通的商户请用这个;商户平台 → API 安全 → 微信支付公钥 下载 pub_key.pem)
# 留空 / 没有这个文件 = 自动下载「平台证书」(旧商户)
public-key: 'keys/pub_key.pem'
public-key-id: ''
# ------------------------------------------------------------------
# 订单
# ------------------------------------------------------------------
order:
# 二维码有效时间(秒)。超时没付会自动关闭订单
timeout: 300
# 玩家取消后,订单再保留几秒才向平台关单(玩家可能已经扫码,这段时间内付款照样到账;0 = 保留到过期)
cancel-grace: 90
# 账单上显示的商品名称({server} 服务器名称,{item} 充值内容,{player} 玩家)
subject: '{server} - {item}'
# 两个支付方式都开启时:ask = 让玩家选;alipay / wechat = 直接用这个(菜单里仍可切换)
default-channel: ask
# ------------------------------------------------------------------
# 奖励货币
# points = 点券(默认用 PlayerPoints;用其他点券插件时填 points-command)
# money = 金币(Vault 经济,例如 CMI / Essentials / XConomy)
# ------------------------------------------------------------------
currency:
points-name: '点券'
money-name: '金币'
# 留空 = 直接调用 PlayerPoints。其他插件例:'nyeconomy give 点券 {player} {points}'
points-command: ''
# ------------------------------------------------------------------
# 自定义金额充值(菜单里的金额档位 + 玩家自己输入金额)
# 奖励写法(所有奖励区块通用):
# points: 点券数量,可以写算式,{amount} = 充值金额(元),例 '{amount} * 10'
# money: 金币数量,同上
# exp: 经验等级
# commands: 指令(默认控制台执行;开头写 [player] = 玩家自己执行)
# message / broadcast / title / subtitle / sound:给玩家的消息 / 全服公告 / 标题 / 音效
# 指令与消息可用:{player} {uuid} {amount} {points} {money} {order} {channel} {item} {total},也支持 PlaceholderAPI 变量
# ------------------------------------------------------------------
recharge:
enabled: true
# 允许玩家输入任意金额(关闭 = 只能选下面的档位)
custom: true
min: 1
max: 2000
# 菜单里的金额档位(元)
presets: [6, 30, 68, 128, 328, 648]
rewards:
points: '{amount} * 10'
message: '&a充值成功!获得 &e{points} &a点券'
# 单笔满额加赠:充值满 X 元,points / money 多送 Y%(取符合的最高一档)
bonus:
100: 5
328: 10
648: 15
# 档位首充双倍:每个档位(presets 里的金额)第一次充值,points / money 翻倍(像手游的首充双倍)
first-double: true
# ------------------------------------------------------------------
# 礼包(固定价格,买了直接发奖励)
# limit: 限购 次数(0 = 不限);period: 限购周期 forever 永久 / day 每天 / week 每周 / month 每月
# permission: 需要的权限(留空 = 所有人可买)
# start / end: 限时上架(格式 2026-10-01 00:00,留空 = 一直上架)
# counts: 是否计入累计充值;bonus: 是否吃满额加赠与活动倍率
# ------------------------------------------------------------------
packages:
starter:
name: '&a新手礼包'
icon: CHEST
price: 6
description:
- '&7钻石 ×16、铁锭 ×64'
- '&7300 点券'
limit: 1
period: forever
counts: true
bonus: false
rewards:
points: 300
commands:
- 'give {player} diamond 16'
- 'give {player} iron_ingot 64'
message: '&a新手礼包已发放,祝你玩得愉快!'
monthly:
name: '&b月卡'
icon: CLOCK
price: 30
description:
- '&730 天 VIP 权限'
- '&7立即获得 300 点券'
limit: 1
period: month
counts: true
bonus: false
rewards:
points: 300
commands:
# 需要 LuckPerms:给 30 天的 vip 权限组
- 'lp user {player} parent addtemp vip 30d'
title: '&b月卡已开通'
subtitle: '&730 天内享有 VIP 特权'
broadcast: '&b[月卡] &f{player} 开通了月卡!'
# ------------------------------------------------------------------
# 首充奖励:玩家第一次真实付款(任意金额)额外发放
# ------------------------------------------------------------------
first-recharge:
enabled: true
# 至少充值多少元才算首充
min: 1
rewards:
commands:
- 'give {player} totem_of_undying 1'
message: '&6首充奖励:不死图腾 ×1 已发放!'
broadcast: '&6[首充] &e{player} &f完成了首次充值!'
# ------------------------------------------------------------------
# 每日首充:每天第一笔充值额外发放(每天 0 点重置,时区见最下面 timezone)
# ------------------------------------------------------------------
daily-first:
enabled: false
min: 6
rewards:
points: 50
message: '&e每日首充奖励:50 点券'
# ------------------------------------------------------------------
# 累计充值奖励(累充解锁):累计金额达标后,到菜单「累充奖励」点击领取
# auto: true = 达标时自动发放(不用领取)
# 修改 total 不会影响已经领取过的人;新增一档时,已达标的老玩家也能领
# ------------------------------------------------------------------
milestones:
total-50:
total: 50
name: '&a累充 50 元'
icon: IRON_INGOT
description:
- '&7500 点券'
rewards:
points: 500
total-200:
total: 200
name: '&b累充 200 元'
icon: GOLD_INGOT
description:
- '&7永久称号「赞助者」'
- '&72000 点券'
rewards:
points: 2000
commands:
- 'lp user {player} permission set cloudpay.supporter true'
total-1000:
total: 1000
name: '&6累充 1000 元'
icon: DIAMOND
description:
- '&7永久 SVIP'
- '&7全服公告'
auto: true
rewards:
commands:
- 'lp user {player} parent add svip'
broadcast: '&6[累充] &e{player} &f累计充值达到 1000 元,成为 SVIP!'
# ------------------------------------------------------------------
# 充值等级(按累计充值显示,变量 %cloudpay_level%)。
# 只是显示名称;要给权限 / 称号请写在上面的累计充值奖励里
# ------------------------------------------------------------------
levels:
- total: 0
name: '&7无'
- total: 30
name: '&aVIP1'
- total: 100
name: '&bVIP2'
- total: 500
name: '&dVIP3'
- total: 1000
name: '&6SVIP'
# ------------------------------------------------------------------
# 限时活动倍率:活动期间 points / money 乘上倍率(例:国庆双倍)
# apply-to: recharge 只有自定义金额 / packages 只有礼包(礼包要 bonus: true)/ all 全部
# ------------------------------------------------------------------
events:
example:
enabled: false
name: '&c双倍点券'
start: '2026-10-01 00:00'
end: '2026-10-07 23:59'
multiplier: 2
apply-to: recharge
# ------------------------------------------------------------------
# 限制与防护
# ------------------------------------------------------------------
limits:
# 两次下单之间至少隔几秒
cooldown: 5
# 每位玩家每天 / 每月最多充值多少元(0 = 不限;未成年人保护可设置)
daily-max: 0
monthly-max: 0
# 同时等待付款的订单上限(全服)
max-pending: 200
# 每位玩家同时等待付款的订单上限(包含刚取消、还在宽限期内的订单)
max-pending-per-player: 3
# ------------------------------------------------------------------
# 到账提示
# ------------------------------------------------------------------
notice:
title: '&a充值成功'
subtitle: '&f{item}'
sound: ENTITY_PLAYER_LEVELUP
firework: true
# 全服公告(任何到账都会公告;礼包可以在 rewards.broadcast 写自己的公告)
broadcast:
enabled: true
# 至少多少元才公告
min: 30
# 公告里不显示金额
hide-amount: false
message: '&6[充值] &e{player} &f充值了 &a{amount} 元&f,感谢支持!'
message-hidden: '&6[充值] &e{player} &f充值成功,感谢支持!'
# ------------------------------------------------------------------
# 充值排行榜(/cpay top,变量 %cloudpay_top_name_1% / %cloudpay_top_amount_1%)
# ------------------------------------------------------------------
leaderboard:
enabled: true
size: 10
# 排行榜不显示金额(只显示名次)
hide-amount: false
# 刷新间隔(秒)
refresh: 300
# ------------------------------------------------------------------
# 付款通知(选填,可以不开)
# 不开:插件每 3 秒主动查询一次付款结果,已经足够快
# 开启:支付宝 / 微信付款后立刻通知插件。需要一个公网 HTTPS 地址(反向代理到下面的端口)
# 地址:<public-url>/cloudpay/alipay 与 <public-url>/cloudpay/wechat
# ------------------------------------------------------------------
notify:
enabled: false
port: 8990
bind: '0.0.0.0'
# 例:https://pay.example.com
public-url: ''
# ------------------------------------------------------------------
# 数据库:sqlite(单服)或 mysql(多个服务器共用订单、累计充值)
# ------------------------------------------------------------------
database:
type: sqlite
file: data.db
host: 127.0.0.1
port: 3306
database: cloudpay
username: root
password: ''
parameters: 'useSSL=false&characterEncoding=utf8'
table-prefix: 'cp_'
pool-size: 3
# 画面:auto = 装了云界面 CloudUI 就用云界面;chest = 一律用箱子菜单 + 手持二维码地图
# 二维码直接显示在云界面付款画面上需要 CloudUI 1.1.0 以上(更旧的版本付款时改用手持二维码地图)
# 不能显示云界面的玩家(没接受资源包、基岩版)会自动改用箱子菜单与地图
ui: auto
# 多个服务器共用 MySQL 时:玩家在任何一个服务器上线都能领到奖励(false = 只在下单的服务器发放)
cross-server-delivery: true
# 每天 0 点重置、活动时间的时区(留空 = 系统时区;国内服务器一般是 Asia/Shanghai)
timezone: ''
# 每笔到账写进 plugins/CloudPay/logs/年-月.log(对账用)
log-file: true