到账保障与限 额
付款怎么确认
| 情况 | 云支付的做法 |
|---|---|
| 付款结果 | 主动查询与平台通知都要通过支付宝公钥 / 微信支付公钥的签名验证才采信 |
| 伪造的通知 | 验签失败直接拒绝并记在后台 |
| 金额不符 | 平台确认的金额与订单不同 → 订单作废、不发放、后台警告,玩家看到「请截图订单号联系管理员」 |
| 二维码过期 | 过期后再等 60 秒,先向平台关单,再查一次确认没付款才关闭 |
| 取消后才付款 | 取消先收回二维码,订单再保留 order.cancel-grace 秒(默认 90);这段时间内付款照样到账,过后向平台关单 |
| 平台暂时连不上 | 自动重试;超过 48 小时还确认不了才放弃,可用 /cpay admin query 补查 |
| 服务器重启 | 先写数据库再向平台下单;开服后继续查询本服还在等付款的订单 |
| 玩家离线时付款 | 订单停在「已付款·待发放」,玩家上线自动补发 |
不会重复发
订单状态只用数据库「条件更新」往前走:等待付款 → 已付款 → 发放中 → 已到账。多个子服共用 MySQL 时,同一笔订单只有一个服务器能把它改成「发放中」,其他服务器会跳过。
发放途中服务器当机,订单会停在「发放中」 (宁可少发不会重复发)。用 /cpay admin stuck 查看,先在后台日志找到「开始发放订单」那一行,确认玩家没拿到后 /cpay admin redeliver <订单号> confirm。
限额与防护
limits:
cooldown: 5 # 两次下单之间至少隔几秒
max-pending-per-player: 3 # 每位玩家同时等待付款的订单上限(含取消后还在宽限期内的)
daily-max: 0 # 每位玩家每天最多充值多少元(0 = 不限)
monthly-max: 0 # 每月上限
max-pending: 200 # 全服同时等待付款的订单上限
每日 / 每月上限包含等待付款中的订单,同时开很多张二维码也绕不过。未成年人保护、防冲动消费可以设这两项。
对账日志
log-file: true 时每笔付款、发放、补发、作废都写进 plugins/CloudPay/logs/年-月.log:
2026-10-22 02:45:17 | 付款 | CP2610220245… | Steve | uuid | 支付宝 | 6 元 | 新手礼包 | 交易号 2026…
2026-10-22 02:45:18 | 发放 | CP2610220245… | Steve | uuid | 支付宝 | 6 元 | 新手礼包 | 完成
交易号就是支付宝 / 微信账单里的交易号,可以直接在商户后台对照。
退款
退款请在支付宝 / 微信商户后台操作。已发出的奖励不会自动收回;退款后可用 /cpay admin void <订单号> 作废,让它不计入累计充值与营收统计。