YuPay Bukkit 事件
事件包名为 org.yutay.yupay.event。除 PrePaymentEvent 可取消外,其余事件主要用于监听和联动。事件可能由异步流程触发;监听后如果要操作 Bukkit 实体、背包、世界或 GUI,请切回主线程。
事件列表
| 事件 | 是否可取消 | 触发时机 | 常用字段 |
|---|---|---|---|
PrePaymentEvent | 是 | 支付订单创建前。可修改金额、支付方式、订单号、输出模式或阻止支付。 | getPlayer()、getAmount()、setAmount()、getPayMethod()、setPayMethod()、setCancelReason() |
PaymentOrderCreatedEvent | 否 | 支付平台订单创建成功并拿到二维码链接后。 | getPlayerUUID()、getAmount()、getPayMethod()、getOrderId()、getQrCodeUrl() |
PaymentCompletedEvent | 否 | 支付成功且 YuPay 内部奖励逻辑执行完毕后。 | getPlayerUUID()、getAmountRmb()、getPointsEarned()、getOrderId()、isNoReward() |
PaymentFailedEvent | 否 | 支付失败或订单取消。 | getOrderId()、getReason()、getPayMethod() |
RefundCompletedEvent | 否 | 平台退款成功且内部状态更新后。 | getOrderId()、getRefundAmount()、getOriginalAmount()、isRedeemRefund() |
RedeemCodeRedeemedEvent | 否 | 卡密核销成功,包括支付核销和直接核销。 | getCode()、getPlayerUUID()、getEconomyType()、getEconomyAmount()、hasCommands() |
RedeemCodeLifetimeEvent | 否 | 卡密永久状态变更,如 DEPLETED、EXPIRED、DISABLED。 | getCode()、getOldStatus()、getNewStatus() |
PlayerPointsChangedEvent | 否 | YuPay 内部经济系统发放或扣除游戏币后。 | getPlayerUUID()、getEconomyType()、getDelta()、getNewBalance() |
监听示例
java
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.yutay.yupay.event.PaymentCompletedEvent;
import org.yutay.yupay.event.PrePaymentEvent;
public final class MyPlugin extends JavaPlugin implements Listener {
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPrePay(PrePaymentEvent event) {
if (event.getAmount() > 500) {
event.setCancelled(true);
event.setCancelReason("单笔赞助超过本服人工审核额度");
}
}
@EventHandler
public void onPayDone(PaymentCompletedEvent event) {
getLogger().info(event.getPlayerName() + " 完成赞助 " + event.getAmountRmb()
+ " 元,订单号 " + event.getOrderId());
}
}常见联动场景
- 商城插件监听
PaymentCompletedEvent,确认noReward订单后自行发货。 - 风控插件监听
PrePaymentEvent,对高金额、黑名单世界或异常玩家阻止创建订单。 - 卡密活动插件监听
RedeemCodeRedeemedEvent,给首批核销玩家追加活动奖励。 - 财务审计插件监听
RefundCompletedEvent,把真实退款流水同步到外部日志系统。