router.route('/webhook/handler-bank-transfer')
.post(async (req, res, next) => {
// B1: Ở đây mình sẽ thực hiện check secure-token. Bình thường phần này sẽ nằm trong middlewares
// Mình sẽ code trực tiếp tại đây cho dễ hình dung luồng. Nếu không có secure-token hoặc sai đều trả về lỗi
if (!req.header('secure-token') || req.header('secure-token') != secure_token) {
return res.status(401).json({
message: 'Missing secure-token or wrong secure-token'
// B2: Thực hiện lấy thông tin giao dịch
for (let item of req.body.data) {
// Lấy thông orderId từ nội dung giao dịch
let orderId = webhookUtil.parseOrderId(case_insensitive, transaction_prefix, item.description);
// Nếu không có orderId phù hợp từ nội dung ra next giao dịch tiếp theo
// Kiểm tra giao dịch còn hạn hay không? Nếu không qua giao dịch tiếp theo
if ((((new Date()).getTime() - (new Date(item.when)).getTime()) / 86400000) >= expiration_date) continue;
// Sau khi có orderId Thì thực hiện thay đổi các trang thái giao dịch
// Ví dụ như kiểm tra orderId có tồn tại trong danh sách các đơn hàng của bạn?
// Sau đó cập nhật trạng thái theo orderId và amount nhận được: đủ hay thiếu tiền...
// Và một số chức năng khác có thể tùy biến
return res.status(200).json({