koishi-plugin-pay-tool
Version:
适用于Koishi框架的易支付工具插件,支持订单创建、查询、退款、分配等功能
79 lines (78 loc) • 3.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.inject = exports.name = exports.schema = void 0;
exports.apply = apply;
const koishi_1 = require("koishi");
// 导入配置和模块
var config_1 = require("./config");
Object.defineProperty(exports, "schema", { enumerable: true, get: function () { return config_1.schema; } });
exports.name = 'pay-tool';
exports.inject = ['database', 'server'];
const database_1 = require("./database");
const api_client_1 = require("./api-client");
const commands_1 = require("./commands");
const callback_1 = require("./callback");
function apply(ctx, config) {
// 创建日志器
const logger = new koishi_1.Logger('pay-tool');
// 验证必要配置
if (!config.apiUrl || !config.merchantPid || !config.merchantKey) {
logger.error('配置不完整: 请检查接口地址、商户PID和商户密钥');
return;
}
if (!config.adminQQ) {
logger.error('配置不完整: 请设置管理员QQ号');
return;
}
// 初始化数据库
(0, database_1.setupDatabase)(ctx);
if (config.devMode) {
logger.info('数据库表已初始化');
}
// 创建核心实例
const orderDb = new database_1.OrderDatabase(ctx);
const epayClient = new api_client_1.EpayClient(config, logger);
// 设置命令
const payCmd = (0, commands_1.setupCommands)(ctx, config, epayClient, orderDb, logger);
if (config.devMode) {
logger.info('支付命令已注册');
}
// 设置回调处理
(0, callback_1.setupCallback)(ctx, config, orderDb, logger);
// 插件就绪
ctx.on('ready', () => {
logger.info('🚀 PayTool 支付插件已启动');
if (config.devMode) {
logger.info(`📋 支持的功能:`);
logger.info(`• 创建订单: pay.create <金额> [支付方式]`);
logger.info(`• 查询订单: pay.query <订单号|@用户>`);
logger.info(`• 申请退款: pay.refund <订单号>`);
logger.info(`• 分配订单: pay.provisioning <订单号> @用户`);
logger.info(`📡 回调通知地址: ${config.notifyUrl}`);
logger.info(`📍 回调路由: ${config.callbackRoute}`);
logger.info(`🔗 跳转地址: ${config.returnUrl || '未配置'}`);
logger.info(`👤 管理员QQ: ${config.adminQQ}`);
logger.info(`🏪 商户PID: ${config.merchantPid}`);
logger.info(`💳 默认支付方式: ${config.defaultPayment}`);
logger.info(`🔄 主动查询模式: ${config.activeQueryEnabled ? '已启用' : '已禁用'}`);
if (config.activeQueryEnabled) {
logger.info(`⏱️ 等待时长: ${config.initialWaitTime || 30000}ms`);
logger.info(`🔁 轮询间隔: ${config.pollingInterval || 30000}ms`);
}
logger.info(`🛠️ 调试模式: 已启用`);
}
});
// 插件卸载清理
ctx.on('dispose', () => {
// 清理所有活跃的轮询
(0, commands_1.cleanupAllPollings)();
logger.info('🧹 PayTool 插件已卸载');
});
// 全局错误处理
process.on('unhandledRejection', (reason, promise) => {
logger.error(`未处理的Promise拒绝: ${reason}`);
});
process.on('uncaughtException', (error) => {
logger.error(`未捕获的异常: ${error.message}`);
});
}