36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { VNPay } from "vnpay";
|
|
import { secureSecret, tmnCode, vnpayHost } from "~~/server/utils/vnpaySettings";
|
|
export default defineEventHandler(async (event) => {
|
|
const body = await readBody(event);
|
|
|
|
const vnpay = new VNPay({
|
|
// ⚡ Cấu hình bắt buộc
|
|
tmnCode,
|
|
secureSecret,
|
|
vnpayHost,
|
|
|
|
// 🔧 Cấu hình tùy chọn
|
|
testMode: true, // Chế độ test
|
|
// hashAlgorithm: 'SHA512', // Thuật toán mã hóa
|
|
enableLog: true, // Bật/tắt log
|
|
// loggerFn: ignoreLogger, // Custom logger
|
|
|
|
// 🔧 Custom endpoints
|
|
endpoints: {
|
|
paymentEndpoint: "paymentv2/vpcpay.html",
|
|
queryDrRefundEndpoint: "merchant_webapi/api/transaction",
|
|
getBankListEndpoint: "qrpayauth/api/merchant/get_bank_list",
|
|
},
|
|
});
|
|
|
|
const paymentUrl = vnpay.buildPaymentUrl({
|
|
vnp_Amount: body.amount,
|
|
vnp_IpAddr: "192.168.1.1",
|
|
vnp_ReturnUrl: "http://localhost:3000/vnpay-return",
|
|
vnp_TxnRef: `Test-${body.invoiceCode}-${new Date().toISOString()}`,
|
|
vnp_OrderInfo: `Thanh toan don hang ${body.invoiceCode}`,
|
|
});
|
|
|
|
return { paymentUrl };
|
|
});
|