From 501aa4067721d20746f3b37c8d88d54871294b01 Mon Sep 17 00:00:00 2001 From: youpaishidifu Date: Tue, 14 Jul 2026 20:55:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20Web=E5=9C=A8=E7=BA=BF=E5=85=85=E5=80=BC?= =?UTF-8?q?(recharge)=E5=88=86=E6=94=AF=20=E2=80=94=20=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=B9=B3=E5=8F=B00.01=E5=85=83=E6=B5=8B=E8=AF=95=E5=88=B0?= =?UTF-8?q?=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - processWebTransaction 新增 type=recharge/pay_recharge 专用分支 - 支付成功后 addBonds 发放债券 + 游戏内即时通知 - 复用现有 ~5s 轮询 + ackTransaction 防重 + confirmed_transactions 双保险 --- src/main/java/Sdf1_login/WebManager.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/Sdf1_login/WebManager.java b/src/main/java/Sdf1_login/WebManager.java index 0824b7a..e28b2ab 100644 --- a/src/main/java/Sdf1_login/WebManager.java +++ b/src/main/java/Sdf1_login/WebManager.java @@ -6502,7 +6502,21 @@ public class WebManager { } } confirmTransaction(txId); - } else if (type.equals("admin_recharge") || type.equals("bond_recharge") || type.equals("recharge") || type.equals("admin_give")) { + } else if (type.equals("recharge") || type.equals("pay_recharge")) { + // 在线支付充值(债券在线充值平台):增加债券 + int balBefore = plugin.getBondManager().getBonds(playerName); + plugin.getBondManager().addBonds(playerName, amount, "pay_recharge", "", "支付平台", "在线充值"); + int balAfter = plugin.getBondManager().getBonds(playerName); + plugin.getLogger().info("[Web交易] 玩家 " + playerName + " 在线充值,金额: " + amount + " 债券"); + // 通知在线玩家 + Player rechargePlayer = plugin.getServer().getPlayer(playerName); + if (rechargePlayer != null && rechargePlayer.isOnline()) { + rechargePlayer.sendMessage("§6[充值] §f在线充值成功!§a+" + amount + " §f债券"); + rechargePlayer.sendMessage("§6[债券] §f余额: §e" + balBefore + " §7→ §a" + balAfter); + } + txSuccess = true; + confirmTransaction(txId); + } else if (type.equals("admin_recharge") || type.equals("bond_recharge") || type.equals("admin_give")) { // 管理员充值:增加债券(充值不受冻结限制) int balBefore = plugin.getBondManager().getBonds(playerName); plugin.getBondManager().addBonds(playerName, amount, "web_recharge", "", "Web后台", "管理员充值");