UNPKG

koishi-plugin-pay-tool

Version:

适用于Koishi框架的易支付工具插件,支持订单创建、查询、退款、分配等功能

79 lines (78 loc) 3.45 kB
"use strict"; 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}`); }); }