first commit

This commit is contained in:
2026-02-18 16:03:43 +07:00
commit c52ecd6514
54 changed files with 8270 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
const midtransCore = require('../../../core/midtrans.service');
const paymentLogger = require('../../../helpers/payment_logger.helper');
const db = require('../../../../models/migration');
class CStoreService {
async createTransaction(payload, store) {
let { order_id, external_id, amount, customer_details } = payload;
if (!amount) {
let order = null;
if (order_id) order = await db.Order.findByPk(order_id);
if (!order && external_id) order = await db.Order.findOne({ where: { orderID: external_id } });
if (!order) throw new Error("Amount wajib diisi atau order_id/external_id tidak valid");
amount = order.total;
payload.amount = amount;
}
const parameter = {
payment_type: store,
transaction_details: {
order_id: external_id,
gross_amount: amount
},
customer_details: customer_details,
custom_expiry: {
expiry_duration: parseInt(process.env.MIDTRANS_EXPIRY_DURATION || 24),
unit: process.env.MIDTRANS_EXPIRY_UNIT || 'hour'
}
};
if (store === 'indomaret') {
parameter.indomaret = {
message: "Pembayaran untuk Invoice " + (external_id || order_id)
};
}
if (store === 'alfamart') {
parameter.alfamart = {
alfamart_free_text_1: "Terima kasih telah berbelanja",
alfamart_free_text_2: "Simpan struk Anda"
};
}
try {
const response = await midtransCore.getCoreApi().charge(parameter);
await paymentLogger.log(response, payload);
return response;
} catch (error) {
throw new Error(`Midtrans Error (${store}): ${error.message}`);
}
}
}
module.exports = new CStoreService();