API ngân hàng MONA Pay cho hệ thống tự động

Mình làm web ở quận Thủ Đức. Sáng nay mình vừa gõ xong đoạn mã sửa lại luồng thanh toán cho khách. Chuyện là mấy anh chị chủ trang web bán hàng cứ than phiền nhân viên kế toán phải canh app điện thoại suốt 24 giờ mỗi ngày để xem tiền vào chưa. Thao tác thủ công này tốn thời gian. Mình quyết định nhúng thẳng api ngân hàng vào lõi mã nguồn của nền tảng. Mục tiêu là để máy chủ tự động dò xét mã giao dịch, đối chiếu số liệu và gạch nợ trực tiếp cho người mua ngay lập tức mà không cần bất kỳ sự can thiệp thủ công nào từ phía kế toán. Thật khoẻ re.

Lập trình viên tích hợp api ngân hàng cho hệ thống bán hàng
Lập trình viên tích hợp api ngân hàng cho hệ thống bán hàng

Tự động xác nhận đơn hàng khi khách chuyển khoản

Mọi chuyện bắt đầu từ trang web bán thiết bị điện tử. Khách hàng ném đồ vào giỏ rồi chọn hình thức chuyển tiền bằng cách quét mã VietQR. Mỗi ngày họ có tầm 45 đơn hàng.

Kế toán canh app. Rất mệt. Đôi khi khách mua củ sạc 200.000đ chuyển tiền qua ứng dụng vào lúc mười hai giờ đêm thì đến tận tám giờ sáng hôm sau nhân viên kế toán mới thấy thông báo để bấm nút xác nhận giao hàng. Người mua thì sốt ruột vì trừ tiền rồi mà trạng thái trên web vẫn giữ nguyên chữ chờ thanh toán. Quy trình này cồng kềnh.

Để giải quyết, mình quyết định nhúng kết nối dữ liệu vào hệ thống. Đây là giải pháp hữu hiệu để phần mềm tự mở khoá tài khoản khi tiền vào. Máy chủ sẽ biết chính xác ai vừa chuyển khoản cùng với lượng tài chính cụ thể. Thời điểm nhận tiền cũng được ghi lại. Việc đối soát chạy tự động cả đêm, giải phóng kế toán khỏi việc kiểm tra app liên tục. Từ hôm đó kế toán công ty mình ngủ ngon hơn hẳn.

Bản chất của api ngân hàng so với ví trung gian

Ban đầu mình tính xài Stripe hoặc PayPal. Nhưng rào cản lớn nhất lại nằm ở khâu lưu thông tiền tệ và các vấn đề về thuế. Nền tảng ngoại tính phí 2,9% cộng thêm 0,3 USD phí cố định cho mỗi lần giao dịch. Hoá đơn không có mã số thuế Việt Nam nên khó hạch toán. Rất phiền. Hơn nữa, dòng tiền sẽ kẹt ở tổ chức thứ ba suốt 3 ngày chờ đến kỳ đối soát thì mới được giải ngân về tài khoản chính thức của công ty.

Trái ngược hoàn toàn với cách cũ. Bộ đọc biến động số dư MONA Pay chạy theo mô hình tiếp nhận thông tin trực tiếp, đảm bảo hệ thống có thể nhận luồng dữ liệu ngay lập tức mà không phải thông qua bất kỳ một khâu trung gian giữ tiền cồng kềnh nào. Tiền của khách hàng thanh toán qua mã QR sẽ chạy thẳng vào tài khoản ngân hàng đứng tên bạn. Họ cam kết không thu tiền phí phần trăm trên giá trị đơn hàng khách chuyển.

Công ty mình đang dùng tài khoản doanh nghiệp tại ACB chạy chính thức để nhận thông báo tức thì qua Telegram. Danh sách hiện hành cho phép tạo mã cho 29 ngân hàng Việt Nam. Các thông số kỹ thuật cũng được hiển thị minh bạch.

Quy trình móc nối tín hiệu cảnh báo

Quá trình cài đặt diễn ra khá nhanh. Đầu tiên mình dùng số điện thoại công ty nhận mã OTP ngân hàng gửi về để thiết lập quyền đọc biến động. Tiếp theo là khâu khai báo địa chỉ cấu hình webhook. Đây là một đoạn địa chỉ web sử dụng giao thức bảo mật HTTPS để tiếp nhận trực tiếp gói dữ liệu định dạng JSON trả về máy chủ ngay khi có khách hàng thực hiện lệnh chuyển tiền thành công. Cuối cùng, mình gửi 3 giao dịch giả qua môi trường kiểm thử sandbox. Mọi thứ ổn thoả. Giai đoạn thử nghiệm ban đầu này không bị tính vào hạn mức sử dụng của tháng. Bạn có thể lướt qua tài liệu kết nối của hệ thống mona pay để xem cách mã nguồn tiếp nhận dữ liệu thực tế.

Mình từng dính một rắc rối ngớ ngẩn. Tuần trước mình quên tinh chỉnh thông số cấp quyền mở cổng kết nối trên tường lửa văn phòng. Suốt cả buổi sáng hôm đó nền tảng báo lỗi vượt quá thời gian phản hồi 5 phút. Mình cặm cụi ngồi đọc file log của máy chủ mới phát hiện ra hệ thống Cloudflare đã âm thầm chặn đứng các gói dữ liệu JSON lạ gửi tới từ sáng sớm. Sau khi mở cổng 443 và thêm danh sách IP trắng thì mọi luồng dữ liệu mới lưu thông ổn định. Lỗi đã xong.

Mô hình kết nối api ngân hàng tự động đối soát đơn hàng
Mô hình kết nối api ngân hàng tự động đối soát đơn hàng

Bảo vệ thông tin tài chính bằng chữ ký số

Bảo mật nền tảng là vấn đề sống còn của dân làm web. Symbiotic Security quét 1.072 ứng dụng thấy 98% rò rỉ dữ liệu. Các công cụ sinh mã nguồn tự động thường hay bỏ sót lớp phòng vệ cơ bản này. Mạng lưới vibe-eval cũng từng ghi nhận sự cố lộ thông tin khoá lập trình bị tin tặc khai thác cạn kiệt tài nguyên chỉ trong vòng 11 phút. Thật đáng sợ. Mình luôn tự kiểm tra kỹ lưỡng các phương thức xác thực đầu vào. Mình nhờ một bạn lập trình quen biết làm việc ở các đơn vị làm trang web bán hàng tại quận 3 kiểm tra chéo chắp vá lỗ hổng trước khi đẩy mã lên máy chủ thực tế nhằm đảm bảo an toàn tuyệt đối cho luồng tiền.

Giải pháp đọc số dư này làm rất chặt quy trình mã hoá. Mỗi khối tin nhắn gửi về máy chủ của mình đều được ký bằng bộ mã bảo mật HMAC-SHA256. Gói dữ liệu luôn đi kèm một dấu thời gian cụ thể tính bằng mili giây. Bất kỳ yêu cầu truy xuất nào xuất hiện độ trễ thời gian quá lớn so với đồng hồ máy chủ sẽ bị từ chối ngay lập tức. Đội ngũ kỹ thuật cũng trang bị mã định danh riêng biệt cho từng lệnh chuyển khoản để chống tình trạng ghi nhận trùng lặp tín hiệu thanh toán.

Phí duy trì và những điểm trừ thực tế

Cách thu cước dựa trên số lượng lệnh xử lý thay vì thu phần trăm giá trị đơn hàng. Khách đăng ký tài khoản được cấp ngay 500 lần xác nhận đơn mỗi tháng, cung cấp đầy đủ các cơ chế làm việc cơ bản như tạo tài khoản ảo hay bắn thông tin thẳng qua ứng dụng Telegram. Nếu trang web có lưu lượng giao dịch dồi dào hơn thì giá khởi điểm từ 99.000đ mỗi tháng. Nếu chọn trả cước một năm thì kế toán chỉ phải xuất tiền cho 10 tháng sử dụng. Mức phí này khá vừa vặn cho các dự án nhỏ. Mình thấy cách tính này tiết kiệm hơn. Nhớ đọc qua bài giải thích khái niệm cơ bản về supabase để nắm rõ cách lưu trữ dữ liệu phía sau.

Về điểm dở thứ nhất. Hạn mức không tính phí ban đầu nghe qua có vẻ dư dả nhưng thực tế lại cạn khá nhanh đối với một số mô hình kinh doanh. Cửa hàng bán phụ kiện lặt vặt 30.000đ thì giữa tháng là hết giới hạn cho phép. Lúc đó luồng tin nhắn báo có tự động sẽ ngừng chạy. Bạn buộc phải rút ví thanh toán để lên gói cao hơn mới duy trì được cơ chế đối soát liên tục.

Điểm dở thứ hai liên quan đến khâu tài khoản. Khâu quản lý hồ sơ đăng nhập của bộ công cụ này chưa gộp chung làm một. Hệ thống xác nhận thanh toán và công cụ xuất hoá đơn điện tử hiện tại vẫn yêu cầu người dùng phải đăng nhập riêng biệt. Rất bất tiện.

Hôm nọ mình định truy cập thử nền tảng hoá đơn đang xây để xem định dạng dữ liệu. Mình phát hiện ra bản thân phải đăng ký thêm một tài khoản người dùng mới tinh. Việc mở hai trình duyệt để xem dòng tiền và hoá đơn gây tốn thao tác cho dân kỹ thuật vận hành.

Hoàn thiện tích hợp api ngân hàng cho web độc lập

Lợi ích lớn nhất của việc tự động hoá này nằm ở khả năng cắt giảm sức lao động. Lập trình viên không cần làm công cụ cạo dữ liệu HTML thô từ web ngân hàng nữa. Khách hàng quét mã VietQR trả đúng 450.000đ là hệ thống đẩy báo cáo thẳng vào nhóm chat Zalo chung của công ty để bộ phận kho vận có thể tiến hành đóng gói sản phẩm giao ngay cho đối tác vận chuyển mà không cần chờ đợi thêm bất cứ một bước xác nhận nào khác. Kế toán viên đỡ phải nhọc công dò từng biên lai lúc sáu giờ chiều mỗi ngày. Toàn bộ số liệu giao dịch chạy rất nhanh gọn. Mọi thứ được số hoá hoàn chỉnh bằng mã ngân hàng khớp chính xác với từng mã đơn đặt hàng lưu trên cơ sở dữ liệu. Mã nguồn nhẹ.

Công cụ này giải quyết tốt bài toán thanh toán. Hệ thống cung cấp sẵn tài liệu JSON chuẩn để Claude Code hỗ trợ người viết mã triển khai dự án với tốc độ nhanh chóng. Cuối tuần này mình dự định ngồi mở giao diện cấu hình để bổ sung tính năng bắn thư điện tử tự động cho người mua ngay khi nền tảng ghi nhận họ đã đặt cọc thành công số tiền ứng trước.

You may also like...

Popular Posts