跳到正文

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卡密永久状态变更,如 DEPLETEDEXPIREDDISABLEDgetCode()getOldStatus()getNewStatus()
PlayerPointsChangedEventYuPay 内部经济系统发放或扣除游戏币后。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,把真实退款流水同步到外部日志系统。