跳到正文

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,把真实退款流水同步到外部日志系统。