// src/app.ts import { App } from "@kevisual/router"; import { useContextKey } from "@kevisual/use-config/context"; var app = useContextKey("app", () => new App()); // src/routes/pay/alipay/init.ts import { AlipaySdk } from "alipay-sdk"; // src/modules/pay-alipay-config.ts import dotenv from "dotenv"; import path from "path"; var configPath = process.env.NODE_ENV === "development" ? ".env.alipay" : ".env.alipay"; var env = dotenv.config({ path: path.resolve(process.cwd(), configPath) }).parsed; var appId = env.ALIPAY_APP_ID; var privateKey = env.ALIPAY_PRIVATE_KEY; var appPublicCert = env.ALIPAY_APP_PUBLIC_CERT; var alipayRootCert = env.ALIPAY_ROOT_CERT; var alipayPublicCert = env.ALIPAY_PUBLIC_CERT; var payAlipayConfig = { appId, privateKey, appPublicCert, alipayRootCert, alipayPublicCert }; // src/routes/pay/alipay/init.ts var initSdk = () => { const privateKey2 = payAlipayConfig.privateKey; const appPublicCert2 = payAlipayConfig.appPublicCert; const appId2 = payAlipayConfig.appId; const pay_dev = false; console.log("payConfig", pay_dev); const devConfig = { gateway: "https://openapi-sandbox.dl.alipaydev.com/gateway.do" }; console.log("payConfig", appId2); const alipaySdk = new AlipaySdk({ // // 设置应用 ID appId: appId2, // // 设置应用私钥 privateKey: privateKey2, // // 应用公钥证书 appCertContent: appPublicCert2, // appCertPath: certPath.appPublicCertPath, // // 支付宝根证书 alipayRootCertContent: payAlipayConfig.alipayRootCert, // // 支付宝公钥证书 alipayPublicCertContent: payAlipayConfig.alipayPublicCert, // // 密钥类型,请与生成的密钥格式保持一致,参考平台配置一节 // // keyType: 'PKCS1', keyType: "PKCS1", // // 设置网关地址,默认是 https://openapi.alipay.com // // endpoint: 'https://openapi.alipay.com', // // endpoint: pay_dev ? devConfig.endpoint : 'https://openapi.alipay.com', // gateway: "https://openapi-sandbox.dl.alipaydev.com/gateway.do", ...pay_dev ? devConfig : {} }); return alipaySdk; }; // src/routes/pay/alipay/pay.ts var pay = async (opts) => { const alipaySdk = initSdk(); const money = opts?.money ? (opts.money / 100).toFixed(2) : 0.01; const result = alipaySdk.pageExec("alipay.trade.page.pay", "GET", { bizContent: { out_trade_no: opts.out_trade_no, total_amount: money, subject: opts.subject, product_code: "FAST_INSTANT_TRADE_PAY" }, notify_url: "https://kevisual.cn/api/s1/pay/notify/alipay", return_url: "https://kevisual.cn/" }); return { form: result, content: { out_trade_no: opts.out_trade_no, total_amount: money, subject: opts.subject } }; }; var genOutTradeNo = () => { return (/* @__PURE__ */ new Date()).getTime().toString(); }; // src/routes/pay/pay.ts app.route({ path: "alipay", key: "pay" // middleware: ['auth'] }).define(async (ctx) => { const { money, subject, out_trade_no } = ctx.query.data || {}; if (!money || !subject) { ctx.throw(400, "money or subject is required"); } if (isNaN(Number(money))) { ctx.throw(400, "money must be a number"); } const result = await pay({ out_trade_no: out_trade_no || genOutTradeNo(), money, subject }); ctx.body = result; }).addTo(app); console.log("pay alipay\u52A0\u8F7D\u6210\u529F");